昨天参加了下CVTE公司的技术面试,虽然在终面没过,但还是收获不少,毕竟是我第一回参加公司的面试,与自己所想像的面试情景有点不一致,因此在这我想利用一点点时间来总结我个人在这几轮面试当中的收获.


CVTE虽说不是一个大型公司,由于看到往年学长进去之后的感受,CVTE开出的待遇比其它很多公司都诱人,但每年CVTE只在全国招收200个应届生,因此平均下来每个省所招收的名额比较有限,面试也有一定的广度和深度,所选出来的同学的能力水平也就不用再说了.最开始的是笔试,笔试当中因为只有27道题目,所含盖的东西不多,这里我就不提了.


好了开始面试的总结吧,我面试的是嵌入式软件工程师,我把我此时能记起来的都尽力写下来,给大家提供一个参考.一面:面试期间面试官首先是让你进行自我介绍,问问你以后的职业规划,希望到哪些城市工作,之后就是问你在大学期间的项目经验,以及在这些项目中选一个你最满意的一个,从中遇到了一些什么问题,是如何解决的.随后就出一个算法题目,让你在5分钟之内把代码写出来,给我出的第一道算法题目还算是比较简单,是一个二分法查找的,我用递归实现的;接下来问你C++面向对象的编程语言与C面向过程的语言有哪些区别,然后在C++的类的继承,函数重载以及多态等这些问题上来考查你,比如说C++的多态是如何来实现的.问完这些后就是网络协议了,当我们访问百度网站时应用层以下用到了哪些协议,包括传输层,网络层,链路层当中的协议;接下来是linux kernel的一些考查,比如内核实现printf的一系列过程,当多个进程同时使用串口时会出现乱码,此时应该如何解决;自旋锁跟其它的一些锁机制有什么不同,在性能上有哪些优势,对于不能共享的硬件资源该如何实现安全的访问.下面是对bootloader的考查,由于我对uboot源码写过注释,面试官问的时候也就没有一直问uboot的相关细节,而是问我在使用uboot当中遇到过哪些问题,是如何解决的;自己曾经使用过MCU的哪些系统外设,以及它们的通信方式.对于目前的flash,比如landflash emmc当中区别,有哪些特性,以及如何实现对landflash的坏块检测.出于我的意料之外的是他并没有问我一些编译器的相关问题.此时的一面结束了.


下面来说说终面吧,终面也是先来一次自我介绍,问一些项目经验,随机选出一个项目来考查,由于每个人的经历不一样,我被问到的是一个pid问题;接下来还是当场限时写代码环节,对方出了两道题,一道是倒三角,还一道题是检测cpu的大小端.完了之后问了一些QT的问题,当一个信号signal()连接到多个槽slot()时,哪一个slot()最先收到信号,我在这被卡死了,以前虽然用QT框架写过一些软件,但从没想过这一问题;后面是对PCB高速信号线的一些问题。


综上所述,公司很重视对算法的考查,重视对一些主流器件(FLASH,EMMC,一些MCU)的熟悉程度,重视对kernel当中的相关实现机理,对c++的要求也不算低;这次反而没有问竞赛的事情.由于这次第一回参加公司里的面试,不知道如何准备,就没有做相关准备,只是看了看C++的书籍,不过从这之后对其他公司的面试有了一个比较清晰的查漏补缺,正所谓打铁还需本身硬!

近期该做的事情: