一面
项目
项目问了蛮多,以下问题都是项目展开的问题;
基础
- 中断 都用了哪些;
- 多线程同步手段;互斥手段;(锁、)(信号量、条件变量)
- 信号量、自旋锁简介;
- 中断中应该用什么锁;(自旋锁;因为中断中不能睡眠、调度)
- 用户态怎么进入内核态;怎么用内核的功能;(中断、系统调用、软件中断)
- static;
- volatile;
- 预处理阶段都干嘛;(宏替换、头文件替换)
- 可执行文件的段;bss段、讲解;(跟面试官battle 了不同编译器实现的不同)
总结
面试官比较好,会告诉我哪里不对
二面
项目
下面问题也是根据项目来展开的;
- 逻辑、算法实现怎么验证的;
- 都写过什么驱动;
- 都怎么和硬件交互;
- 中断怎么和硬件交互;
- 讲一下中断回调;
- 中断处理程序是注册给谁的;(软件中断注册给软件内核、硬件中断注册给CPU?)
- 中断处理程序注册,需要什么参数;(中断号、函数地址、还有吗)
- 怎么指定中断呢?;硬件中断怎么和中断处理程序搭配上的;(感觉问的是os 或者我们自己怎么将中断处理和中断绑定起来、中断号怎么和硬件中断绑定;(没答上来)
- (应该是指定中断号与硬件中断的绑定,这个是硬件设计的时候就设计好的?)
- (就像arm 的io 中断,中断号是绑定好的,启动代码中写死的)
- FPGA端怎么中断到arm端的;(中断到arm下面的通信的控制器处)
- IIC 做的什么;
基础
- 信号量、互斥锁简介;(同步互斥)
- 没获取锁,线程将干嘛;(被调度?阻塞)
- 线程休眠,什么时候被唤醒;(同步机制、调度)
- 自旋锁;自旋锁应用要注意什么;(注意不要一致持有占用cpu)
手撕
字符串逆序;没有约束条件;(那就随便写了)
总结
猛追中断处理的问题;没有回头看过有些忘了,被摁在地上打了 ;