投递时间线:2024/8/18 投递 2024/8/26 一面
一面比较多的场景题,也主要是按照简历上问,很多都是边聊边提出来的,然后面试官就进来的时候打开了摄像头,后来又让我一起关掉了摄像头。面了40分钟左右,但是面试官人很好!
面试官:
- 自我介绍(3min左右)
- 看你最近的工作是和bootloader相关的,汽车后视镜相关的,从7.8到3.6s的改进是比较显著的,那你有没有比较以前的不同的机制主要耗时在哪几个地方
- 我看你一直在写x86平台的操作系统,基本是从基础到操作系统的构建工作,这中间持续开发的过程中有没有不太好理解,或者阻塞的事情呢
- 这个启动加载器,比如从bios启动那部分是怎么完成的,或者说bootloader部分你做了什么呢,平台是什么呢(最开始我是在bochs上完成的)
- 你现在是在x86下完成的,有没有考虑过arm呢,因为armv8也是64位,有没有想过去做二者的比较呢(过程中提到了看过电源管理的源码),你看的电源管理是在arm下还是x86下
- 内核里的中断处理会用到栈空间,操作系统的内核中的栈空间是由谁提供的。
- 设想一种场景,应用层的一个进程在跑,比如一个网络程序,此时一个中断来了,此时中断会打断进程的执行,这个中断也需要一个栈地址空间,当前CPU的栈是应用层这个进程的,怎么从应用层程序的栈到中断的栈,这个栈地址空间是哪里来的,谁给分配的呢
- 上半部和下半部如何完成任务或者说中断事件的衔接的
- 这个schedule是谁来驱动的呢,比如一个ISR进来,退出了,什么时机来驱动tasklet的schedule?这个任务什么时候会被拿出来执行呢?(最开始可能没答到点上)
- 你刚刚说的是进程调度的机制,它同样有个调度时机,那具体是什么时候呢,比如说中断退出还是定时器,你用tasklet,那么这个tasklet是什么时候调度呢?
- 整个系统有没有涉及到多处理器,SMP的同步机制呢
- 上下文分为哪几种呢?进程上下文在你这里什么样的叫进程上下文。比如说一个应用层进程被打断进入内核态,管它叫进程上下文,这个进程上下文也有自己的业务要做,那么它和中断上下文之间是如何进行数据的同步呢?
- 你用的什么样的互斥锁呢?
- CPU的SMP的同步这些有没有去了解
- 平时你还有哪些做的项目可以介绍吗,你比较擅长的项目(我介绍了一个光追算法复现的,因为我关于内核能聊的好项目全被问完了,想着这个光追的项目可能能和相机系统的ISP会比较有关联)
- 有没有了解过实时操作系统的一些特性
- 做示波器项目的时候有没有去了解示波器的原理,关键指标这些(这个项目我主要做的前端,确实没有很深入)
- linux内核的裁剪参与度如何,你主要负责裁剪了哪些?裁剪过程中有没有关注过设备树的工作原理?假如让你设计一个设备树这样的功能,你会想怎么做?dts按你的理解来说,主要是为了解决什么样的问题呢?
- 比如你要写一个驱动,那么设备树和device,driver是什么样的关系呢
- 你有没有自己想做的,更喜欢做哪方面的事情
- 你们做电子后视镜,也会接触摄像头数据的处理,到整个判断的框架,这部分有没有去挖一下呢?比如摄像头的整个pipeline,视屏流,框架。
反问:
- 如果有幸入职,我工作上需要准备一些什么方面的知识呢
- 是基于哪个系统呢,是rtos,linux还是安卓呢
- 针对刚刚我的面试,您觉得对于贵公司有哪些方面还需要继续加强呢
- 后面几轮(没说)
感觉可能要凉凉,问的比较难,也比较具体,且最后问面试官还有几面的时候他说后续和HR聊,他只负责安卓平台的面试