哈喽,大家好。明天更新一篇驱动口试面试总结。因为篇幅无限,本文只给出了问题,并没有给出答案。我把 PDF 版本,放在了 百度网盘群组 中,呈现问题,能够和我及时反馈。
大家能够在我的主页找到我的联系方式,加我好友通过后,发送【材料群 】给我,会主动拉进群里。本文内容已同步更新在 github,点击 浏览原文 能够中转 github。
操作系统
过程和线程
什么是过程?什么是线程?
过程和线程有什么区别?
何时应用多过程,何时应用多线程?
过程有几种状态?画一下过程状态转换图?
创立过程有哪几种形式?
过程间通信形式?有什么优缺点?
线程间同步办法有哪些?
什么是内核线程和用户线程?
内核线程和用户线程的区别?
内核线程和用户线程有什么优缺点?
什么是僵尸过程,孤儿过程,守护过程?
僵尸过程有什么危害?
如何清理僵尸过程?
如何唤醒被阻塞的 socket 线程?
如何确定以后线程是忙碌还是阻塞?
闲暇的过程和阻塞的过程状态会不会在唤醒的时候误判?
请问就绪状态的过程在期待什么?
如何实现线程池?
请你答复一下 fork 和 vfork 的区别
server 端监听端口,但还没有客户端连贯进来,此时过程处于什么状态?
堆和栈
什么是代码段,数据段,bss 段,堆,栈?
为什么堆的空间是不间断的?
什么是用户栈和内核栈?
用户栈和内核栈,为什么不能共用一个栈?
线程是否具备雷同的堆栈?
并发和互斥
驱动外面为什么要有并发、互斥的管制?如何实现?讲个例子?
自旋锁是什么?信号量是什么?二者有何异同?
自旋锁和信号量能够睡眠吗?为什么?
自旋锁和信号量能够用于中断中吗?
读写锁是什么?
产生死锁的起因是什么?
死锁的 4 个必要条件是什么?
死锁的解决形式有哪些?
如何防止死锁?
请问单核机器上写多线程程序,是否须要思考加锁,为什么?
内存
在 1G 内存的计算机中是否 malloc(1.2G)?为什么?
malloc 能申请多大的空间?
内存治理有哪几种形式?
什么是虚拟内存?
解释下内存碎片,内碎片,外碎片?
解释下虚拟地址、逻辑地址、线性地址、物理地址?
请问虚拟内存和物理内存怎么对应?
虚拟内存置换形式是怎么样的?
给你一个类,外面有 static,virtual 之类的,来说一说这个类的内存散布?
假如临界区资源开释,如何保障只让一个线程取得临界区资源而不是都取得?
操作系统中的缺页中断是什么?
OS 缺页置换算法如何实现的?
零碎调用是什么,你用过哪些零碎调用,和库函数有什么区别?
为什么要有 page cache,操作系统怎么设计的 page cache?
上下文
上下文有哪些?怎么了解?
为什么会有上下文这种概念?
什么状况下进行用户态到内核态的切换?
中断上下文代码中有哪些注意事项?
请问线程须要保留哪些上下文,SP、PC、EAX 这些寄存器是干嘛用的?
结语
如果感觉本篇文章对你有帮忙,在【珍藏 】的时候,能够【 点赞】反对下作者,这个对我真的很重要!
你的每一个赞我都当成了喜爱,谢谢各位兄弟姐妹啦~
文章起源
嵌入式软件工程师口试面试指南 - 操作系统
对于作者
本硕双非,加入了 2020 年秋招和 2021 年的春招,投递岗位是嵌入式软件(驱动)相干。总共播种 Oppo,小米,海康威视,兆易翻新,全志科技等十余家公司的 offer。
我把本人的秋招,春招历程具体记录了下来,同时,把本人秋招过程总结的口试面试材料分享了进去,即嵌入式软件工程师口试面试指南。PDF 版本获取形式在公众号。