第一章 面试的流程

面试的三种形式

电话面试->共享桌面远程面试->现场面试
(只有少数公司有共享桌面远程面试)

电话面试

有些面试官会事先和应聘者预约好电话时间,还有些面试官喜欢搞突然袭击,所以要在简历投出一两个星期内,保证手机有足够的电量

tips:应聘者在电话面试时应尽可能用形象的语言把细节说清楚。如果是英语面试,或者没有听懂面试官问题,要大胆地向面试官多提问,直到弄清楚面试官的意图为止。

共享桌面远程面试

面试官最关心应聘者的编程习惯以及调试能力。
应聘者要:

1思考清楚再开始编码(如算法的时空复杂度,有哪些情况需要处理等)
2良好的代码命名和缩进对齐习惯
3能够进行单元测试(如果能先写单元测试用例,再写解决问题的函数,就能够做到测试在前,开发在后,这很稀缺)

如果应聘者能够熟练地设置断点,单步跟踪,查看内存,分析调用栈,面试官会觉得他的开发经验很丰富。

现场面试

在去公司参加面试之前,应聘者要做好以下准备:
1规划好路线并估算出行时间
2准备好得体衣物
3注意面试邀请函里的面试流程(如果面试有好几轮,时间很长,可以带一些提神的饮料或者食品,来提神醒脑)

现场面试是整个面试流程中的重头戏,面试官可以通过应聘者的语言和行动来考察他的沟通能力,学习能力,编程能力等综合实力。

面试的3个环节

行为面试->技术面试->应聘者提问

行为面试环节

面试开始的5-10mins
一般会注意应聘者的性格特点,深入地了解简历中列举的项目经历,一般不会问技术难题。
一般面试官会让应聘者做一个1mins左右的自我介绍。

应聘者的项目经验

建议按照STAR模型描述自己经历过的每一个项目

STAR模型
S:项目规模,开发的软件的功能,目标用户等
T:用词上区分“参与”和“负责”。如果是“负责”,就要被问到总体框架设计,核心算法,团队合作等问题。
A:可以详细介绍,基于什么工具在哪个平台下应用了哪些技术。
R:最好能用数字加以说明,如果是开发,可以说按时完成了多少功能。如果是优化,可以说性能提高的百分比是多少。如果是维护,可以说修改了多少个Bug。

例子:P7

应聘者掌握的技能

注意“了解”,“熟悉”和“精通”的区别。

了解:没有做过实际项目,通常不建议在简历中列出只是肤浅地了解一点的技能。
熟悉:在实际项目中使用某项技术较长时间,通过查阅文档可以独立解决大部分问题。如毕业设计用到过的技能,项目开发过程用到的技能。在简历中描述技能的掌握程度大部分应该是“熟悉”
精通:在项目开发过程中,当同学或者同事向我们请教这个领域的问题时,我们有能力解决。通常不要在在简历中写精通,这会带来面试官较高的期望。

回答 “为什么跳槽”

面试官一般只是想通过这个问题了解下应聘者的性格,不会期待一个标准答案。

回答的时候不要抱怨,有负面情绪。应尽量避免以下四个原因:
1老板太苛刻
2同事太难相处
3加班太频繁
4工资太低(通过面试之后就掌握主动权了,想怎么谈怎么谈(待验证))

作者的回答:P9

技术环节面试

通常会关注五种特质:
1扎实的基础知识
2能写高质量的代码
3分析问题时思路清晰
4能优化时间效率和空间效率
5学习沟通等各方面的能力

对于简单的问题:注重细节,写出完善、鲁棒的代码

对于复杂的问题:可以通过画图、举具体例子分析和分解复杂问题等方法先理清思路再动手编程。并且应聘者还应不断优化时间效率和空间效率。

主动提问,弄清题目要求,表达自己的沟通能力。

当面试官前后问的两个问题有相关性的时候,尽量把解决前面问题的思路迁移到后面的问题中去,展示自己良好的学习能力。

扎实的基础知识

体现在:编程语言,数据结构,算法。

数据结构:链表,树,栈,队列和哈希表等

算法:查找,排序。

高质量的代码

考虑好边界条件、特殊输入和错误处理

写完代码不要先提交,要先检查。

清晰的思路

画图来形象化问题
举例
分解复杂问题

优化效率的能力

优秀的综合能力

沟通能力,学习能力。
学习能力。
知识迁移能力。
抽象建模能力,发散思维能力。

应聘者提问环节

应聘者不妨在面试之前做些功课,为每一轮面试准备2~3个问题。
不要问和自己的职位没有关系的问题。
不要问薪水。
不要立即打听面试结果。
推荐问的问题是与应聘的职位或者项目相关的问题。(P18)

猜你喜欢

转载自blog.csdn.net/qq_40473204/article/details/107620325