嵌入式软件工程师笔试面试指南-操做系统

哈喽,你们好。今天更新一篇驱动笔试面试总结。因为篇幅有限,本文只给出了问题,并无给出答案。我把PDF版本,放在了百度网盘群组中,出现问题,能够和我及时反馈。git

你们能够在个人主页找到个人联系方式,加我好友经过后,发送【资料群】给我,会自动拉进群里。本文内容已同步更新在github,点击阅读原文能够直达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版本获取方式在公众号。
相关文章
相关标签/搜索