从简历上推到终面结束,总共有半个多月的时间。 忐忑,焦虑,兴奋这三个词应该最能代表这半个月来的心路历程。从抱着试试看的态度,到怀着必拿 offer 的决心,心态起伏就像玩过山车,别嫌我矫情,过来人都知道 ^_^ 。结果还不错,通过了 5 轮面试 。半月前根本不敢想能在这写这篇面经。
从今年年初到现在,总共也就经历了四家公司(研究所)面试,三次面试是实习面试。在面试技巧上的确没有什么经验可循。就不分享所谓的经验了,只记录下过程,希望对后来参加面试的同学有所参考。
面试轮次: 5 轮
面试类型: 4 轮面技术面 +1 轮 hr 面
面试时间长度: 五轮分别是 20 分钟 / 25 分钟 / 60 分钟 / 30 分钟 / 13 分钟
岗位: Linux 内核开发(可能从事内核开发的同学比较少,所以这篇面经参考价值也很有限)。
一面:由于我个人疏忽,当时内推的岗位和现在的岗位并不一样,中间经历了调剂过程。所以出现了 5 轮加面。真的很感谢一轮面试面试官,用 nice 形容他都显得不够劲,他没有因为岗位不合适挂掉我,而是把我推到了适合我的岗位。
说实话刚开始准备面试有点漫无目的,这一面可以说是无准备的一面。简历推上去一周以后接到了电话(正在上自习)。当时由于过度紧张,说话乱颤。。。面试官就跟我聊在 SH 的实习收获,话题很轻松,他应该在想办法让我平静下来 ^_^ 。很遗憾没起到什么作用。 后来开始问我的项目。由于开始投的是java 研发,可能面试官也是 java 方向的,而我的简历中大部分项目技术方向是 linux 内核 /c++/android hal 。因此一面没问项目里太细节的东西。就让我拿一个项目举例说明驱动开发流程。 还问了一些我的学习经历以及技术掌握的全面程度。紧接着抛出一个需求让我实现一个调度算法,这个题当时脑袋短路了,实际上面试官想让我说思路,我却在脑子里搜索该使用内核里的哪些函数接口实现(完全跑偏)。后来想想用定时器中断抢占的优先级调度算法完全可以实现他的需求。 后来又问了一些简历上出现的技能,可能想大体了解一下我的技术广度。
ps :后面面试细节就不展开写了,只写问题,内容有点多,记忆也有点混乱,陈述不清楚。 ^_^
二面:相当于调剂岗位后一面,面试官超好。详细问了项目技术实现细节。 另外抛出了以下问题感觉都是业务相关问题:
1/ 常用的日志解析手段。
2/ 说一下互联网公司主流流媒体播放器编解码技术的实现。
3/ 列举一个熟悉的驱动,说明他的不同版本软硬件演化,预计这个模块会向一个什么方向发展。
4/ 列举驱动中无法解决的性能瓶颈。
5/ 一些基础问题。
。。。只记得这么多了。
三面:感觉面试官是一个温文尔雅的人。而且气场十足。总之很 nice 。这一面也是历时最长的一面。
1/ 先是自我介绍。并且介绍一个感觉最拿手的项目。
2/ 谈谈你在项目中的配合和管理。
3/ 深挖项目细节,技术实现。我在介绍时他一再强调我的实现是可 reference ,请列举创新之处(说实话感觉回答得不好,有些创新非 reference 的点没答出来,准备的不充分)。
4/ 问我是否熟悉 arm soc 架构,并且介绍一下我所了解的 arm 64 core 的新特性。
5/ 解释 hal 的作用,在 android 中处于一个什么位置,以及预计 hal 会向一个什么方向发展。
6/ 介绍从无到有构建一个驱动的过程。
7/ 抛需求,做一个网卡驱动,需要旁路 TCP/IP 协议栈,驱动中如何实现。
8/tcp 三次握手
9/ 问了有效代码量和参加的比赛情况
还有好几个问题想不起来了,就记得这么多。
四面:这一面相对轻松,关键面试官沉稳 &nice&nice 。
1/ 问了项目,简要问了一些细节
2/ 项目中或生活中沟通上的挫折
3/ 如何协调学习比赛和项目
4/ 实习经历和技术上最大的收获
5/ 谈人生
五面:非常和蔼的 hr 哥哥面
1/ 问了我的技术目标
2/ 简述一个项目经历
3/ 关于互联网公司文化的综合问题
总结,感觉内核开发方向面试很 open ,不太好准备,准备了很多内核开发,数据结构基础问题基本没用上。面试官的问题基本上可以榨干所有水分,面前突击成功概率较小,主要靠平时积累和真干货,回答面试官问题时要在短时间思考后切中要点,切中要点,切中要点重要的事情说三遍 ^_^ 。 由于自己文笔和记忆力的限制 , 有些问题描述欠到位,题目也不够完整。 希望在流程上能帮到大家。
感谢牛客网提供的笔试面试学习交流平台。牛客们加油! |