嵌入式软件开发就业面试题。2022最新,最全总结。

本文精选了一系列嵌入式领域的面试题目,涵盖了select与epoll的区别、异步IO与同步IO的区别、死锁的概念及其避免方法等内容。还涉及了Linux内核、驱动程序的基础知识,以及操作系统层面的问题。

在网上搜集了很多的面试题,发现总体的试题都是倾向于c语言,不能说是完全不相关,只能说毫不相关,本合集关于嵌入式软件开发从底层驱动到应用层,也是从网上搜集的,也有本人学习嵌入式开发的经验和侧重点突出;值得一看,记得收藏!

1. select和epoll的区别

解题思路 (这个我在找面试题之前没了解过 ,还是学的太少了,多学!!!)

select的时间复杂度O(n)。它仅仅知道了,有I/O事件发生了,却并不知道是哪那几个流(可能有一个,多个,甚至全部),我们只能无差别轮询所有流,找出能读出数据,或者写入数据的流,对他们进行操作。所以select具有O(n)的无差别轮询复杂度,同时处理的流越多,无差别轮询时间就越长。 epoll的时间复杂度O(1)。epoll可以理解为event poll,不同于忙轮询和无差别轮询,epoll会把哪个流发生了怎样的I/O事件通知我们。所以我们说epoll实际上是事件驱动(每个事件关联上fd)的,此时我们对这些流的操作都是有意义的。(复杂度降低到了O(1))

2.异步IO和同步IO区别?

解题思路 (同步和异步的概念还是在通信的时候学到,这里意思有点差异,注意!)

所谓同步,就是在发出一个功能调用时,在没有得到结果之前,该调用就不返回。而异步就是过程调用发出后,调用者不能立刻得到结果。实际处理这个调用的部件在完成后,通过状态、通知和回调来通知调用者。所以异步IO和同步IO区别就是数据拷贝的时候进程是否阻塞

3.什么叫死锁?产生死锁的原因是什么?

解题思路(学过多线程,就知道死锁的概念 ,和锁有同样功能的有信号,信号灯集。。)

所谓死锁,是指多个进程在运行过程中因争夺资源而造成的一种僵局,当进程处于这种僵持状态时,若无外力作用,它们都将无法再向前推进。
死锁产生的原因可归结为两点:
1.竞争资源;
2.进程间推进顺序非法

4.死锁的必要条件是什么?

解题思路(学过多线程应该都知道锁的概念,还有信号条件变量等对资源的控制手段)

产生死锁的必要条件: 互斥条件:进程要求对所分配的资源进行排它性控制,即在一段时间内某资源仅为一进程所占用。 请求和保持条件:当进程因请求资源而阻塞时,对已获得的资源保持不放。 不剥夺条件:进程已获得的资源在未使用完之前,不能剥夺,只能在使用完时由自己释放。 环路等待条件:在发生死锁时,必然存在一个进程–资源的环形链

5.linux的进程状态有哪些?

解题思路
学过进程都知道

Linux系统下进程通常存在6种不同的状态,分为:就绪态、运行态、僵尸态、可中断睡眠状态(浅度睡眠)、不可中断睡眠状态(深度睡

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值