2013-11-11 22:28| 发布者: peter_zhang| 查看: 686| 评论: 0
你不需要拿NOI的奖,无需是开源社区名人,也用不着发过牛逼的SCI论文。(没错,笔者就是这样的技术屌丝) 请记住,校园招聘,应聘的绝大部分人都只是才出象牙塔的毛头小子。企业需要的是你们的潜力与激情。牛人总是凤毛麟角的。程序员笔试面试的经验贴、经验书不计其数。本文不会教你如何具体的解题,但是会告诉你,你距离你的梦想究竟有多远,以及如何去缩短这个距离。 笔者仅仅以自己的亲身经验为依据,将国内IT巨头按Offer到手难度降序排列,大致分为如下3个梯队:
T1主要是BAT三巨头。他们对学生的技术能力与综合素质都要求较高。他们尤其喜欢寻找牛人。因此你必须有扎实的基础的同时还要有自己的技术个性和特点,让他们欣赏你。这些公司无论是实力还是待遇都是一流的。但要注意这类公司太大,项目组太多,竞争也很激烈,因此要注意认真考虑你想去,而且对你而言有优势的项目组。 T2都是其所在领域的领军企业。待遇会比T1稍低。他们需要基础扎实的学生,如果你的项目或者技术方向符合他们所在的领域会很有优势。(如游戏领域偏爱图形学,安全领域偏向安全方向) T3对学生的出生、资质最为看重(双211,四六级),甚至对性格有较为挑剔的考察(华为的性格测试反而刷掉很多技术较牛但是性格较怪癖的学生),专业考察的很基础,但考察面较广。 Tx之所以给了个x,是因为他们和其他的企业无法比较。因为这类企业笔试考行测+专业基础。面试考察综合素质、表达能力,尤其看重你的非技术方面的能力。因此不做本文的重点讨论。 无坚不摧——完整项目“当他说他是OpenCC的作者的那一刻,哪个面试官不被秒杀。” 当然你不需要NB到这个程度。如果你能对面试官说:“我读书期间做的项目有x万行代码。Google关键字xxx可搜到该项目的演示视频”,就足够了。 程序员的所有技术能力都能在一个完整的项目中得到淋漓尽致的体现,因此胜过千言万语的自我推销。所谓的完整项目应该满足以下条件:
因此,当你决心把一个项目写入你的简历中,你就一定要能回答出面试官的如下问题: 1、你负责了哪一块? 这个问题是想知道这个项目里究竟有哪些代码是你写的,尤其是多人合作的项目。你必须强调你所做的工作。 2、你用到了哪些技术? 这是最好发挥的一个问题。你可以介绍项目用到的每个开源库,也可以介绍你用到的源代码管理工具(如SVN、GitHub),调试工具(如WinDbg) 3、你遇到的最大问题是什么?如何解决的? 这个问题是最重要的,也是最具有回答技巧的问题。你必须说出一个听起来确实很难解决,但你确实又解决(或者避开)的问题。 你解决问题的渠道,如MSDN、CSDN、开源社区的论坛、国外技术论坛、文档手册等。 面试官想要听到的,是你发现问题、分析问题、寻找解决方案、最终解决问题的思路与方法。细节并不重要,因为他也未必能完全弄懂每个技术细节。 总之,一个完整的项目能让你充分的表达你的技术能力。在项目这一块上,你需要下足功夫。 如果很不幸你没有,那么请往下看。 深厚内功——坚实基础一般第一轮技术面都是来考察你最基本的技术功底。 招聘季节,随处可见抱着厚厚的《程序员面试宝典》啃的学生。偶尔也能看见《编程之美》《剑指Offer》的神书。这些经验书确实有用。但是要想全面的掌握笔试面试的基础考点,还是需要完整的复习。 其实,笔试面试对计算机基础的考察是万变不离其宗的。其考点无非分为: 语言语法(以C/C++为例)。 进程与线程、互斥与同步、死锁、进程间通信,页表,虚存等。秒杀书籍:《Windows核心编程》,《Unix核心编程》。 计算机网络 ISO七层架构,TCP,UDP,IP地址等。 英语。 如果你还有充分的时间,建议认真看上面推荐的秒杀书籍。如果时间不够,就有针对性的去掌握这些考点。 笔试或者面试如果让你在纸上写程序,会有2种情况: 1、写一个函数或算法。 不要因为题目简单就想在最短的时间写出来。请一定要注意,对所有参数做边界检测和有效检测。这才是考察的重点! 如果一个算法具体实现你记不清了,就写伪代码,在每行代码后加上详细注释。如果是面试,写完以后跟面试官解释说具体的代码你忘了,但是你记得算法思想,因此用了伪代码。 如果具体思想也忘了,就尝试用自己的思路解答问题。总之,尽量别交白卷。 2、设计一个软件或系统。 这种情况不要求你写详细代码。你需要在程序结构、框架、设计模式或者系统架构等方面进行设计。 这种框架性的东西最好先打草稿,想好了再重新画一遍,把每个模块的功能,模块之间的关系、各个模块的功能接口画出来,如果是面试,写完以后给面试官详细解释。 这里强调一点,是否懂得架构设计,是鉴别代码菜鸟和熟手的重要指标。T级越高的公司,越偏向于考察架构层级的知识。比如百度笔试的最后一题经常是要求设计一个分布式服务器系统。 锦上添花——无限潜力通常技术一面是面基础,二面更多的是双方的进一步了解。如技术方向,技术潜力等。 1、表达你的技术潜力与热情。 面试官可能会问你一些和技术看上去没有任何关系的问题,比如问你最近在看什么书,学习之余喜欢做什么,常去哪些网站之类的。 但是,一定要如实回答。面试官会针对你的回答进行紧逼追问。如果正好是他熟知的范畴,而你只是接触过而没有认真学习,就会陷入很尴尬的境地。 所以在回答这些问题的时候不用过于急着回答,不妨先想一想,要有能预测到面试官针对你的回答会问什么样的问题的能力。 就像上面的例子,面试官问你最近看的书,你未必要选择最近看的一本书,而是应该选择一本你吃的比较透的,最好还是面试官也会感兴趣的书,这样接下来的交流就能得心应手。 总之,平时的积累才是王道。 2、表达你的技术爱好。 进入正确公司的错误岗位,相当于考上了正确学校的错误专业。 这个时候你要清楚的表达出你的技术方向,并注意考虑你想去的项目组收你的可能性。如果发现该组招的人少,或者加入难度大,你需要考虑是否表现出来你有同样的热情加入其他项目组。 不服从分配可能导致你一无所获。你之前面试的表现越优秀,在这一步能够选择的余地就越大。 3、态度和情商。 如果你面试次数多了,拿的Offer多了,通常到了最后一面,有多大的希望能拿到Offer,你心里应该有所感觉。 如果感觉不好,最后一面你需要更努力表达你的优势。最后一面打动面试官的可能往往是你的真诚和热情。 当面试官问你有多少Offer,不要惧怕回答。Offer是企业对你能力的证明。有Offer的学生更容易被青睐。通常如果你有了该公司最大竞争对手的Offer,你可以尝试追求更好的岗位和待遇。但切忌用这个来漫天要价,除非你牛到了他们非要你不可的程度。 T3,Tx类的企业可能会问你一些很奇葩的问题。比如A公司问你他的竞争对手B公司怎么样。 很多计算机专业的学生思维过于死板,说了大实话,比如”B公司是最大的xxx企业“,于是死的很彻底。 写在最后 只要你资质不差,有针对性的进行努力,拿下国内IT巨头的Offer并不难。 |