联想嵌入式软件一面面经

自我介绍之后
1.讲了webserver,问怎么实现IO多路复用的
2.对于大量的访问还使用互斥锁和信号量还可以吗,应该使用什么
对于epoll等待事件到来的时候,是新建了一个线程在等待这个过程吗
3.volatile和override关键字
4.进程间通信有哪些方式,用过共享内存吗
5.内存中有哪些段
6.对于data段是什么时候加载到内存里的
7.拷贝构造是什么时候被调用的
8.static在c语言中和c++中怎么使用的
9.智能指针讲解一下
10.简历上写了了解RTOS,问了rtos的问题,用过哪些函数
11.如果一个低优先级的任务持有一个信号量,高优先级的任务想要用这个信号量,造成的死锁怎么解决
12.问了毕业论文的内容,有什么创新点

一共问满了三十分钟。
反问:组里是做什么的
实习生能做什么工作(根据个人能力,有的实习生与正职提交代码量相当),能参与到一些开发工作
全部评论
在那投的啊
1 回复 分享
发布于 2024-07-01 20:31 黑龙江
感谢
点赞 回复 分享
发布于 2024-05-27 01:59 陕西

相关推荐

拖更太久了,主要是从4月份开始工作到陆陆续续开始上手工作,全身心投入工作中了,最近闲下来又可以写一写文章,并且以我工作和学习的经历希望让大家增强对Linux驱动的理解。特别是我后台经常会有同学私聊我,问我一些Linux线路呀或者学完xv6应该学什么呀,我要走Linux驱动方向需不需要看Linux网络编程呀等等问题,我们今天一一解答。1. 学完xv6之后,我想走嵌入式Linux方向还需要怎么提升呢?针对这个问题,我想说嵌入式Linux需要哪些技术点。首先针对驱动,驱动其实分为很多方向,简单的有iic驱动,spi驱动,复杂的有camera驱动,显示屏驱动,音频驱动,nvme驱动还有最近流行的npu驱动,GPU驱动等等。这些驱动的共性都是要掌握设备树,sysfs文件系统,虚拟内存管理,设备总线驱动框架等等。不同的驱动还要细化,比如你想走camera,可能你要对v4l2,mipi协议这些要进一步了解,如果你想走ai芯片驱动,那最好对smmu,dma-buf,异步队列排序,多线程优化,drm框架,ping-pong存储,高性能计算有一定了解。如果是非驱动岗位,偏向CPU启动安全等方向,可能还需要掌握ARM的架构,包括最新的v8,v9架构等等。所以针对你掌握的不同驱动,你需要加强不同方向的知识。2. Linux驱动学完后期应该学什么,我看完韦东山驱动大全还需要看Linux系统编程,Linux网络编程吗。首先,驱动跟应用是不分家的,在真实操作驱动的过程中,会时刻跟应用打交道,但此刻的应用还是停留在Linux内核层面的应用。实际工作中的应用方向则会偏向安卓,比如一些中间件的实现,安卓api的调用等等,常见于手机厂系统开发岗位。而Linux系统编程更多强调于我们上层怎么用malloc,mmap分配内存,如何多进程多线程跑多个服务,怎么多线程和访问同一个变量,如何写出免锁队列。因为只要复杂的一些驱动,你可能就不单是负责最基础的driver那一层了,跟寄存器打交道的是bsp方向,驱动方向考虑更多的还是底层代码的高效性,稳定性等等。比如nvme驱动,如何对具有优先级的bio进行快速响应,并分配给SSD,可能就需要哈希存储或者平衡二叉树来做优化。包括我们说的npu驱动,如何提升cpu与npu的通信,CPU的算子如何快速部署到npu上,并最短时间把结果反馈给CPU,大量算子不同优先级如何分配线程运行,还要兼顾低功耗来进行休眠等等,其实都离不开我们Linux系统编程的很多知识。而针对Linux网络编程,这个要不要掌握真就因人而异了,这个最初是走c++的一帮人,因为要搞个webserver项目走互联网,所以在那之前会先学Linux网络编程,对于嵌入式Linux方向,大部分方向是不用去深入掌握的,除非你去路由器公司做网络驱动,那就另当别论了。3. 方向这么多,我应该选择什么方向作为我的主攻方向呢。不管你做了xv6,还是看了驱动大全,你可能都会疑惑自己会什么,只能脑子有点驱动概念有点操作系统概念,但是没有深入理解某个方向,有点浅尝辄止。所以我的建议是至少得熟悉某个子方向,你可以是熟悉camera驱动,调一调摄像头,改一改底层代码提升帧率。也可以走ai嵌入式方向,部署一下YOLOv5,然后拉通CPU到npu的函数跳转。不管走什么方向,不能只停留在上层调api,要深入到底层代码逻辑,这才能在秋招中脱颖而出。而且真正工作上,驱动与驱动,驱动与应用是不分家的。最简单的一个例子,我们想要获得高帧率的图像显示,中间经历的驱动包括了camera获取图像,npu或GPU对每帧图像实现图像锐化等ai算法,显示屏驱动稳定显示。但凡某个驱动出了叉子,在显示屏驱动那一块就会出现显示卡顿的情况或者丢帧。所以常常就是你不能只对你的方向有所理解,其他方向也要有所建树。最后同样的,如果想继续看后续请点击关注,最后你的鲜花和点赞将是我更新的极大动力。
通信/硬件秋招总结
点赞 评论 收藏
分享
原以为去年十一月已经尘埃落定,在今年7月初,在小米入职的前四天,七个月前的理想offer突然击中了我😂,挺突然的,不过最后还是去了理想,问就是给的还行,最主要的还是风口方向。也不知道是幸运还是命运的指引吧,选择小米还是理想,初步来看,对我来说完全是两种人生道路,选小米等于可以充分发挥我的创造力和自由度,未来的选项可以不止是打工,更符合我的兴趣以及职业追求。选理想等于放弃部分我的兴趣,更现实一点。由于切入面相对较窄,所以未来大概率只能做高级打工人,但是很难用工作的这些内容去做一些我更感兴趣,更有创造力的事,或者说选择打工以外的我感兴趣的赛道。客观的说,小米给的对于应届生来说其实够了,中规中矩;另外目前来看小米氛围挺好的,尤其部门领导二面面试的时候还给了我极高的认可,这对于尤其热爱技术的人,是远超offer的荣幸和快乐,我会铭记的,后来一直到解约前后的将近一个月,每次收到小米那边的电话,都会心头一颤,经常emo一下午,因为真的很舍不得,不仅是辜负了一个认可你期待你的人,另一个也是为放弃部分自我的惋惜。另外小米的这些slogan,“永远相信美好的事情即将发生”,到最后解约时的“短暂的离别是为了更好的相遇...”,真的每一条都直戳我的内心让我很有感触,未来有缘还是很期待能够“再次相遇”吧...最后简单总结一下秋招的历程:bg双非本211硕,机械转嵌入式,涉及硬件设计、MCU、Linux应用/驱动等,花了一年左右,此前几乎无代码和电路基础,基本只投到了11月,面了十二三家公司吧,面试通过率大概90%左右,基本上面过的面试都通过了,最后接受的offer按时间顺序:经纬恒润,正浩创新,小米,理想汽车。时间线:本来是打算24年8月中才开始海量投递的,但是突然有天中午,招聘网站经纬恒润看中了我简历,然后主动打电话沟通投递简历,稀里糊涂帮我投了,投的具体叫什么岗位、岗位描述都不知道,心里直打鼓,因为当时没有完全准备好,不过最后有惊无险,光速流程,九月初收获第一个offer,算是给了秋招很大的激励,不过经纬恒润一直催签三方催到了十一月多,一直上压力😂,关键是当时其他offer也没发,只有一个保底,挺慌的。再就是9月中面的正浩创新11月发offer,10月中面的小米11月中发offer,理想比小米面的还早一些,面试全部通过,11月底没等到消息先签小米了,25年7月初准备入职小米,结果入职前四天,联系到理想这边,两天内发了offer,然后光速解约小米签了理想,其实还有小转折,面的MCU嵌入式,结果进去之后领导让我干linux服务器,基本上纯软了😅,嵌入式还是软硬结合比较有趣。总体来说我算是顺利的也比较幸运的,总而言之,遵从命运的指引,但是不忘初心。嵌入式对我最大吸引,就是它让我看到了无限的可能,看不到尽头的技术上限,即使未来干的是纯软,甚至有点脱离嵌入式,我也不会放弃将它作为我一生的兴趣(或者不只是兴趣),期待未来成为一个全栈的工程师,期待除了工作以外自己的事业,也期待能遇到志同道合有共同精神追求的伙伴(这点对我来说非常珍贵)!
点赞 评论 收藏
分享
评论
18
71
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务