纯干货!程序员面试最常见的27个问题!
秋招末期,已经有很多小伙伴拿到了各大公司的面试机会。那么想要成为程序员的你,对不同面试题型、不同考点了解多少呢?
根据paysa.com总结出的“程序员面试最常见的27道问题”可以看出,准备面试并非是一件容易事,需要应聘者提前把题型理解透彻。那么今天我们就来看看都有哪些常见题目吧!
*干货长文预警,建议收藏本文反复食用!
HR Phone Screen
Phone Screen,一般是提交简历后,面试开始的第一步,由公司HR负责。
面试目的及考点:
了解候选人的背景
为下一步tech interview做准备
*不同公司对Phone Screen要求不同,需针对性准备。
常见问题如下:
- 你为什么对本公司的这个职位感兴趣?
考察目的:HR想考察应聘者有没有做好“功课”,事先研究了解过公司。
回答技巧:面试前做好全方位的调研工作,了解公司近期主要业务,并把所应聘的岗位职责和自己的经历、兴趣相结合。让面试官认为你对职位有着很大的兴趣和积极性。
2.你有没有用过本公司常用的编程语言?
考察目的:初步了解应聘者对于公司常用技术、语言的了解,为技术问题做准备。
回答技巧:如果对该公司所用语言有所了解并正好擅长,就可以大胆展示出自己的优势。但如果对特定语言没有太多经验,也诚实讲实话,否则即使过了电话关也过不了coding关。
与此同时,一定要告诉HR自己会的语言,并表示有能力学习新的语言。
3.你有没有做过什么项目?
考察目的:简单了解候选人的技术背景。
回答技巧:简明扼要。直接简洁地描述你参与过的项目和在里面扮演的角色。注意要将自己的成果直观的表现出来,以体现自己在团队、项目中的价值。
4.你有没有领导别人的经验?
考察目的:了解候选人在团队中的价值与能力,考察候选人的合作能力、领导能力。
回答技巧:这一题的答案不仅仅局限于技术上的领导力。如果你在学校里有过志愿者活动的领导经验,都可以说。
同时,要尽可能地将你以前的领导经验和你要申请的职位联系起来(比如,如果你拿到这个岗位,会怎样和同事一起完成任务),增加面试官对你的期待和信任感。
5.为什么你要离开现在的公司?
考察目的:进一步了解候选人的个人背景,确保候选人值得信赖。
回答技巧:对于之前有过工作经验的小伙伴,你可以坦率地说出你的想法,但答案不要仅仅围绕在钱和利益上。可以从职场文化、创意实践,解决现实问题的满意度等几个角度来回答。
注意,跟HR的面试,
并不需要你深入地探讨技术上的问题和经验。
要做到简明扼要,不要让HR睡着了。
Virtual Onsite Interview
当你顺利通过了HR的phone screen、或是之后的technical phone interview后,你有可能面临一个4–5轮的Virtual Onsite Interview。
面试目的及考点:
进一步了解候选人的个人能力
从项目经历、行为、文化、技术、coding等几个角度来全方位考察候选人。
*不同公司对VO面试要求不同,需针对性准备。
Experienced Questions
6.在给其他团队成员reveiw code时,你觉得最重要的是什么?
考察目的:检验候选人的知识储备,以及是否可以表达好code-review过程。
回答技巧:本题无对错,需要多加练习熟练掌握,回答角度可以围绕以下几点:
Functionality
Readability
Maintainability
Security
Simplicity
Regulatory requirements
Resource optimization
7.描述一下你写代码的全部过程。
考察目的:了解候选人写码过程是否清晰、有组织,而不是杂乱无章。
回答技巧:培养Systematic Way of Thinking(系统的思维方式),将写码步骤从接到任务,到完成写码、测试等详细描述出来,体现出自己系统、成熟的写码流程。
8.你做complex algorithms的首选语言是什么?
考察目的:深入了解候选人的技术能力。
回答技巧:至少给出两个答案,已表明自己“多才多艺”和“不钻牛角尖”。你可以说 “XYZ是我的第一选择,但ABC也是一个很好的选择。” 然后告诉他们为什么。
9.如何设计一个可以扩大规模的APP?
考察目的:测试候选人的知识储备及思维过程。
回答技巧:从实操层面出发,落实细节。尽量把自己思维过程的每一步都解释清晰,从构架、系统、应用语言等多个方面考虑。
10.你做过的最满意、最值得骄傲的项目是什么?
考察目的:给予候选人展示的机会。
回答技巧:这是表现自己的时刻,告诉面试官你的coding实力,并描述一个你最引以为傲的项目。以及一定说出理由:为什么你觉得这个项目让你骄傲 (比如它满足了某种需求等等)。
11.描述一个你做过的失败的项目
考察目的:深入了解候选人技术背景,以及抗挫折能力。
回答技巧:可以清楚地说明为什么这个项目最终失败了。以及要展示自己之后花时间剖析了这个项目,并且总结了问题,从失败中学到了经验。并在下一次项目中,没有再犯。
Cultural / Behavioral Questions
12.你目前所在的公司,有什么吸引你的地方吗?
考察目的:了解候选人个人性格,是否值得信赖等等。
回答技巧:不要说,“没有,我讨厌现在的公司”。可以选择说一说目前公司和所申请公司共同的优点。如果这是你的第一份工作,你可以谈谈在学习或实习期间喜欢什么。
13.描述你理想的公司文化
考察目的:考察候选人与公司文化契合度
回答技巧:做好research,提前了解这个公司。确保说出来的理想文化,和这个公司的文化相似。
14.你的同事是怎么描述你的?
考察目的:以旁观者角度了解候选人
回答技巧:你可以通过这个问题来向面试官展示你的社交意识,你可以说通过与同事的交流协作,你了解到了自己在别人眼中的样子。同时,你可以用这个问题来表明你是有自我认知的。你知道自己的长处和短处,以及你能给团队带来什么。
诚实回答,不要过度自嘲。
Technical Questions
*这一类的面试题,会根据不同候选人的不同知识背景进行考核。
常见问题举例:
15. mutex 和 semaphore 有什么区别?
16. 什么是多线程编程?
17. Local Variable和Global Variable有什么区别?
18. 哈希表如何工作?
19. 给出一个真实生活中哈希表的例子,并描述一个哈希表为何是一个糟糕的数据结构选择。
20. 假设你有一个单线程的C标准应用程序,它不断崩溃,但从来不在同一个地方崩溃。你觉得可能导致它崩溃的原因是什么?
21. queue和stack之间有什么区别?
22. 什么是regression test?
Coding Questions
这个阶段是所有面试中最难的一关。
你不仅需要在高压的环节中展示你的知识成果,疫情期VO面试你还要想办法在视频中展示自己的代码,以及在有限时间内完成。
每个候选人会遇到的具体问题有所不同,但以下是一些常考的经典题目:
23. Linked lists(删除重复,反转链表,确定它是否有环)
24. 时间和空间复杂度分析
25. Tree:基本构造,遍历和操作算法。知道如何实现平衡二叉树。
26. Stack(用两个栈实现一个队列)
27. 数组和字符串(反转字符串,permutations)
最后,还有几点面试小建议:
- 面试时,确保你不断向面试官解释你的思考过程(即使你被困住了)。
- 尝试着与面试官协作,并可以在遇到困难时勇敢地提问。
- 表明你愿意在团队中寻求帮助、以便把工作良好地进行下去。
E / N / D
点此了解来Offer课程详情:
关注来Offer,关注北美一手留学求职咨询!
来Offer(www.laioffer.com)是硅谷最具实力的高科技在线教育和职业培训机构,通过提供高水平的IT培训课程和就业指导,帮助学员进军硅谷一二线科技公司。自2013年以来,来Offer已将4000+名中国工程师送入Facebook, Google等硅谷一线公司。