一共两轮面试,都在线下。自己约时间去他们公司,是在一栋办公楼里租了一层。办公楼1楼跟前台说明面试后被告知去几楼几号。坐电梯到了CVTE所在层之后,会有专门前台接待,把准备好的简历两份给他,然后就是坐在等候厅等面试官空闲。第一轮技术面约40~60mins,第二轮面试是综面约30mins,当天就结束了两轮。HR人很好,面完已经很晚了还打车送我回去。
面试官问的面试题: 第一轮技术面,面试官着重问了项目相关经历,项目难点,如何克服难点;八股问了两道,都是从项目中引申来的,一个是I2C和SPI,一个是ADC,比较好回答。然后开始手撕,我手撕了两道题,一道是编写一个封装函数按字节处理字符串,一个是密码对称映射。手撕完后还问了兴趣爱好相关的,以及个人评价。最后是反问。
第二轮综面,面试官问了技术面体验如何,经历过的最有挑战是什么,最有意义是什么,公司的价值观是什么(在面试等候区会播放他们公司的宣传短片,我刚好速记了一些片段),十年后你希望自己过一段怎样的人生(建议往狼性上靠)。
面试于约定的时间进行,整体过程分为两个主要部分。首先是技术面试,面试官通过视频会议与我进行交流。面试一开始,面试官对我的简历进行了简要的回顾,询问了我在不同项目中的具体角色和职责。由于我在简历中提到了屏幕驱动的相关经验,因此面试官对此进行了深入探讨,询问我在该项目中遇到的挑战以及我的具体解决方案。
接下来,面试官开始提问,涉及的内容不仅包括我在简历中提到的技能,还包括一些计算机基础知识和算法问题。面试官特别关注我的思维过程和解决问题的方法。在回答问题的过程中,我尽量详细描述我的思路和经验,以展示我对技术的理解和实际应用能力。
面试的最后阶段,面试官给了我机会提问。我询问了团队的工作氛围和项目管理方法,面试官详细介绍了他们的开发流程和团队文化,整个过程让我感到轻松而愉快。
在面试过程中,面试官提出了多个问题,具体包括:
屏幕驱动的工作原理:面试官让我解释屏幕驱动的基本工作原理和常用的接口,比如如何与硬件进行交互,以及如何处理图像渲染。
项目中的技术难题:询问我在过往项目中是否遇到过技术难题,并让我详细描述其中一个难题的背景、我采取的措施以及最终的结果。
内存管理的理解:面试官让我描述内存管理的基本概念,问我在实际项目中如何优化内存使用,避免内存泄漏。
多线程的应用:询问我对多线程编程的理解,如何在多线程环境中保证数据的一致性和安全性。
团队合作中的冲突处理:面试官让我分享在团队合作中遇到的冲突,以及我是如何进行沟通和解决问题的。
技术栈的选择:问我在项目中选择特定技术栈的原因,以及如何评估新技术的优劣。