1 面试官谈基础知识:
1 “C++基础知识,如面向对象的特性、构造函数、析构函数、动态绑定等,能够反应出应聘者是否善于把握问题本质,有没有耐心深入一个问题,另外还有常用的设计模式,UML图等,这些都能体现应聘者是否有软件工程方面的经验。–王海波(Autodesk,软件工程师)”
2 对基础知识的考察我特别重视C++中对内存的使用管理,我觉得内存管理是C++程序员特别要注意的,因为内存的使用和管理会影响程序的效率和稳定性。–蓝诚(AutoDesk,软件工程师)
3 基础知识反映了一个人的基本能力和基本素质,是以后工作中最核心的能力要求。我一般考察:(1)数据结构和算法;(2)编程能力;(3)部分数学知识,如概率;(4)问题的分析和推理能力。–张晓禹(百度,技术经理)
4 我比较重视四块基础知识:(1)编程基本功(特别喜欢字符串处理这一类的问题);(2)并发控制;(3)算法、复杂度;(4)语言的基本概念。–张珺(百度,高级软件工程师)
5 我会考察编程基础,计算机系统基础知识,算法以及设计能力。这些是一个软件工程师的最基本的东西,这些方面表现出色的人,我们一般认为是有发展潜力的。–韩伟东(盛大,高级研究员)
6 (1)对OS的理解程度,这些知识对于工作中常遇到的内存管理、文件操作、程序性能、多线程、程序安全等有重要帮助。对于OS理解比较深入的人对于偏底层的工作上手一般比较快。(2)对于一门编程语言的掌握程度。一个热爱编程的人应该会对某种语言有比较深入的了解。通常这样的人对于新的编程语言上手也比较快,而且理解比较深入。(3)常用的算法和数据结构。不了解这些的程序员基本只能谢谢“Hello World”。–陈黎明(微软,SDE II)
2 面试官谈代码质量
1 “一般会考察代码的容错能力,对一些特别的输入会询问应聘人员是否考虑、如何处理。不能容忍代码只是针对一种假想的‘正常值’进行处理,不考虑异常状况,也不考虑资源的回收等问题。”–殷焰(支付宝,高级安全测试工程师)
2 “如果是因为粗心犯错,可以原谅,因为毕竟面试的时候会紧张;不能容忍的是,该掌握的知识点却没有掌握,而且提醒了还不知道,比如下面的:
double d1, d2;
...
if(d1 == d2)
...
马凌洲(Autodesk,Software Development Manager)”
3 “最不能容忍功能错误,忽略边界情况。”–伊彦(Intel, Software Engineer)
4 “如果一个程序连变量,函数命名都毫无章法,解决一个具体问题都找不到一个合适的数据结构,这会让面试官印象大打折扣,因为这个只能说明他程序写得太少,不够熟悉。”–吴斌(NVidia, Graphics Architect)
5 “我会从程序的正确性和鲁棒性两方面检验代码的质量。会关注对输入参数的检查、处理错误和异常的方式、命名方式等。对于没有工作经验的学生,程序正确性之外的错误基本都能容忍,但经过提示后希望能够很快解决。对于有工作经验的人,不能容忍考虑不周到、有明显的鲁棒性错误。”–田超(微软,SDE II)
3 面试官谈面试思路
1 “编码前讲自己的思路是一个考察指标。一个合格的应聘者应该在他做事之前明白自己要做的事情究竟是什么,以及该怎么做。一开始就编码的人员,除非后面表现非常优秀,否则很容易通不过。”–殷焰(支付宝,高级安全测试工程师)
2 “让应聘者给我将具体的问题分析过程,经常会要求他证明。”–张晓禹(百度,技术经理)
3 “个人比较倾向于让应聘者在写代码之前解释他的思路。应聘者如果没有想清楚就动手本身就是不太好。应聘者可以采用举例子、画图等多种方式,解释清楚问题本身和问题解决方案的关键。–何幸杰”
4 “对于比较复杂的算法和设计,一般来讲最好是在在开始写代码前讲清楚思路和设计。”–尧敏(淘宝,资深经理)
5 “喜欢应聘者先讲清楚思路。如果觉察到方案的错误和漏洞,我会让他证明是否正确,主要是希望他能在分析的过程中发现这些错误和漏洞并加以改正。”–陈黎明(微软,SDE II)
6 “喜欢应聘者在写代码前先讲思路,举例子和画图都是很好的方法。”–田超(微软,SDE II)