现在的位置:首页  /  常见问答   /   面试攻略

程序员面试中最常见的27个问题,拿走不谢!

来源: 薪享宏福
发布时间: 2018年11月19日
分享到:
程序员的面试不同于一般岗位的面试。
 
当你在羡慕程序员十几万美金年薪的同时,你却不知道他们在应付面试时,要经历的重重磨难和压力。
今天,我们就来总结一下程序员面试时最常见的27道问题。
 
常见问题如下:
 
1. 你为什么对本公司的这个职位感兴趣?
 
这一问HR主要想考察你有没有做好“功课”,事先研究了解过公司。
 
2. 你有没有用过本公司常用的编程语言?
 
如果你对这种特定语言没有太多的经验,那就说实话,否则就算过了电话关,也过不了之后的coding关。
 
但你也要告诉HR你自己会的语言,并表示有能力学习新的语言。
 
3. 你有没有做过什么项目?
 
简明扼要。直接简洁地描述你参与过的项目和在里面扮演的角色。
 
4. 你有没有领导别人的经验?
 
这一题的答案不仅仅局限于技术上的领导力。如果你在学校里有过志愿者活动的领导经验,都可以说。
 
尽可能地将你以前的领导经验和你要申请的职位联系起来。
 
5. 为什么你要离开现在的公司?
 
你可以坦率地说出你的想法,但答案不要仅仅围绕在钱和利益上。
 
你可以从职场文化、创意实践,解决现实问题的满意度等几个角度来回答这题。
 
注意,跟HR的面试,并不需要你深入地探讨一些技术上的问题和经验。
 
要做到简明扼要,不要让HR睡着了。
 
Onsite Interview
 
当你顺利通过了HR的phone screen、或是之后的technical phone interview后,你有可能面临一个4-5轮的Onsite Interiew。
 
面试官会从项目经历、行为、文化、技术、coding等几个角度来全方位了解候选人。
 
01 Experiential Questions
 
6. 在给其他团队成员reveiw code时,你觉得最重要的是什么?
 
这题的答案没有明确的对与错,目的是为了检验你的知识,以及你是否可以表达好code review的过程。
 
回答角度可以围绕:
 
Functionality
 
Readability
 
Maintainability
 
Security
 
Simplicity
 
Regulatory requirements
 
Resource optimization
 
7. 描述一下你写代码的全部过程。
 
面试官想知道你在写代码时,是否有一个清晰的流程,并确保你的工作方式是有组织的,而不是杂乱无章的。
 
8. 你做complex algorithms的首选语言是什么?
 
你可以说实话,但至少要给出两个答案,以表明自己“多才多艺”和“不钻牛角尖”。
 
你可以说 “XYZ是我的第一选择,但ABC也是一个很好的选择。” 然后告诉他们为什么。
 
9. 如何设计一个可以扩大规模的APP?
 
这题测试的是你的知识和思维过程。
 
10. 你做过的最满意、最值得骄傲的项目是什么?
 
这是你表现自己的时刻,告诉面试官你的coding实力,并描述一个你最引以为傲的项目。
 
一定说出理由,为什么你觉得这个项目让你骄傲 (比如它满足了某种需求等等)。
 
11. 描述一个你做过的失败的项目。
 
你可以清楚地说明为什么这个项目最终失败了。
 
你还可以说你之后花时间剖析了这个项目,并且总结了问题,从失败中学到了经验。并在下一次项目中,没有再犯。
 
02 Cultural / Behavioral Questions
 
12. 你目前所在的公司,有什么吸引你的地方吗?
 
不要说,“没有,我讨厌现在的公司”。可以选择说一说目前公司和所申请公司共同的优点。
 
如果这是你的第一份工作,你可以谈谈在学习或实习期间喜欢什么。
 
13. 描述你理想的公司文化。
 
做好你的research,提前了解这个公司。确保说出来的理想文化,和这个公司的文化相似。
 
14. 你的同事是怎么描述你的?
 
你可以通过这个问题来向面试官展示你的社交意识,你可以说通过与同事的交流协作,你了解到了自己在别人眼中的样子。
 
同时,你可以用这个问题来表明你是有自我认知的。你知道自己的长处和短处,以及你能给团队带来什么。
 
诚实回答,不要过度自嘲。
 
03 Technical Questions
 
这一类的面试题,会根据不同候选人的不同知识背景进行考核。
 
常见问题举例:
 
15. mutex 和 semaphore 有什么区别?
 
16. 什么是多线程编程?
 
17. Local Variable和Global Variable有什么区别?
 
18. 哈希表如何工作?
 
19. 给出一个真实生活中哈希表的例子,并描述一个哈希表为何是一个糟糕的数据结构选择。
 
20. 假设你有一个单线程的C标准应用程序,它不断崩溃,但从来不在同一个地方崩溃。你觉得可能导致它崩溃的原因是什么?
 
21. queue和stack之间有什么区别?
 
22. 什么是regression test?
 
04 Coding Questions
 
这个阶段是所有面试中最难的一关。
 
你不仅需要在高压的环节中展示你的知识成果,而且你还要在不熟悉的环境(白板上的手写代码)和时间限制下工作。
 
每个候选人会遇到的具体问题有所不同,但以下是一些常考的经典题目:
 
23.Linked lists(删除重复,反转链表,确定它是否有环)
 
24. 时间和空间复杂度分析
 
25.Tree:基本构造,遍历和操作算法。知道如何实现平衡二叉树。
 
26. Stack(用两个栈实现一个队列)
 
27. 数组和字符串(反转字符串,permutations)
 
面试时,确保你不断向面试官解释你的思考过程(即使你被困住了)。
 
尝试着与面试官协作,并可以在遇到困难时勇敢地提问。
 
因为这可以表明你愿意在团队中寻求帮助、以便把工作良好地进行下去。

相关推荐:

薪享宏福两日游活动
薪享宏福学习活动
薪享宏福毕业典礼活动