面试流程
有的外企都会加上英语面试的环节,如果没有听懂的话,要敢于说pardon。
面试手撕代码,面试官最关心的是应聘者的编程习惯和调试能力。好的编程习惯应该是:① 思考清楚再编码,② 良好的代码命令和缩进对齐,③ 能够进行单元测试。
第3点不是很懂,就一个函数,自己写一些输入,这就叫单元测试?
STAR模型
自我介绍一般一分钟多一点就够了,除非你的经历挺精彩的。
面试官看了简历之后,可能会针对简历问一些问题,根据STAR模型,Situation、Task、Action、Result,简短的项目背景,自己完成的任务,为了完成任务做了哪些工作、如何做的,自己的贡献。
技术面
面试的重头戏,这个环节是关键环节。面试官是各不相同,但是他们考察的应该都是这5个素质:扎实的基础知识、能够编写高质量的代码、分析问题时思路清晰、优化时间空间效率、学习沟通能力。
扎实的基础。编程语言、数据结构和算法。
高质量的代码。只有注重代码质量的程序员,才能写出鲁棒、稳定的大型软件。在写代码时就需要格外关注边界条件、特殊输入等细枝末节但是至关重要的地方。考虑问题要全面。
思路要清晰。简单的题目往往要求高鲁棒的代码。而稍微复杂的题目,一般不会一眼看出规律或思路。可以通过举例、画图、拆解问题等方法试着构思解题思路。
优化效率。要想优化时间和空间,必须得对数据结构的优缺点、特性非常熟,能够针对特定的问题选择合适的数据结构。除了数据结构,还得掌握常用的查找和排序算法。
软技能。学习能力、沟通能力、团队合作意识,还有抽象建模能力、发散思维能力。知识迁移能力是一种特殊的学习能力,如果能够将已掌握的知识迁移到其他领域,那么学习新技术和解决新问题就会变得很容易。还有的喜欢从日常生活提炼问题来考察抽象建模能力,这就需要将问题抽象,用合适的数据结构来表示,并且找出其中的规律。