最近在面试软件工程师的职位,OA/机试/Online Assignment不算,和HR聊人生不算,不想面选择撤回申请不算,我一共在28天里参与了12家公司的面试,共计34场,其中包括2场BQ,1场被调度错误面完通过但是不算结果。在这里记录分享一下我的心得。
我面试的职位大都是软件工程师大类。
第一大类问题就是众所周知的算法题,我遇到过最简单的问题是reverse string,不用调试一遍写对,遇到最难的是Hard级别的题目,考察的知识点非常偏。对我来说,一开始的难点是一遍做题一遍嘴巴不停的讲,习惯了几次之后就好了很多。大部分公司会提供一个平台双方共享屏幕,个别直接要求被面试者自己分享屏幕。有的要求写可以运行的代码,考察调试能力,有的只允许白板,仁者见仁。
第二类问题是对基本知识的考察。这部分非常有趣,关于C++的考察点我已经在另一篇文章中写了,除此之外,我还遇到很多有趣的问题。被问到最多的两个问题如下。
- 给一个数据结构,知道什么说什么,常见接口,实现,应用。
- 给一个具体问题,说常见的算法,基本实现原理和复杂度分析,多多益善。
有相当一部分被问到的问题是关于 OOD Object-oriented language/design。
- composition 和 inheritance 的区别
- dependency injection
- 具体问题写设计
大多数时候需要临场发挥,唯一一次压到原题是被问到什么是程序语言的一等公民(这个我专门写过一篇文章)。