首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
AI 模拟面试
简历
求职
学习
课程
专栏·文章
竞赛
搜索
我要招人
发布职位
发布职位、邀约牛人
更多企业解决方案
在线笔面试、雇主品牌宣传
登录
/
注册
牛客135108636号
北京工业大学 电子信息类
发布于广东
关注
已关注
取消关注
@可靠的连接法兰西:
嵌入式软件面试那点事
本篇笔记将总结关于嵌入式软件面试的一些东西,东西太多,不会全部展开,仅做个人总结之用,各位道友也可参考参考。 首先说个大概的,嵌入式软件需要掌握什么东西? 对单片机的熟悉程度(包括中断系统、各种外设模块、时钟系统等) 对通信协议的熟悉程度(常见的有SPI、UART、I2C等) 掌握基本的数据结构(如队列、栈、链表) 掌握基本的算法(多种排序算法,数据结构中需要的一些算法) 其实嵌入式的东西很庞杂,不是一下子就能说清的,只能想到哪写到哪了。 对单片机的熟悉程度,这个就要考你的基本功了,比如单片机运行到main函数之前做了什么(首先是从启动文件的复位中断进入,然后初始化时钟,进入main函数之前还得初始化一些全局变量)?单片机的中断机制是怎样的(这个和向量表有很大关系)?固件升级原理(一份BootLoader程序,一份APP,这个其实不难,鱼鹰有专门的笔记讲述,如果你的简历没有写这个的话可能不会问这个,笔记)?是否使用过DMA,原理是什么(DMA传输方式,怎么设置,笔记)? 通信协议的话,主要不是上层的通信协议,而是物理层面的通信协议,比如串口通信需要掌握一帧格式(起始位、数据域、奇偶校验位、停止位等);SPI通信的四种模式,你又是如何确定使用哪种模式的?I2C通信格式(起始信号、结束信号、应答信号等)?如果说你学过USB,可能会问你USB采用什么编码、有几种端点模式、简单介绍枚举过程(但也别太简单)?更高级的可能问你关于网络这块的知识(具体鱼鹰也不知道,因为还没系统学过,这里推荐《TCP/IP详解》) 数据结构,比如最常接触的栈、队列、链表(单向、多向链表)的原理,而数据结构肯定会涉及到一些算法操作,比如出栈、入栈;出队、入队;插入、删除等操作,而比较纯粹的算法是排序算法,其中有冒泡算法、快速排序算法等(这里推荐《大话数据结构》),注意这些知识常以笔试形式出现,所以一定要能写出来(关于笔试推荐《剑指Offer》)。 鱼鹰最弱的应该是笔试了,或者说算法。在嵌入式软件开发过程中,用到的算法其实并不多,但是要你自己用笔写出来还是有很大的难度的,鱼鹰这方面的能力确实欠缺,因为我一般喜欢深入理解思考后就把细节记录下来,然后选择遗忘的(遗忘不是说全部不记得了,而是说只记得大概,细节记不住而已),所以说面试前不来个系统的刷题,临时抱佛脚一下,基本笔试是没戏的。 但是笔试成绩我觉得只是一个方面,一般来说笔试之后会有面试(社招一般笔试、面试紧邻的,校招的话如果你的笔试成绩不合格,那么连面试资格都没有),所以如果笔试成绩不理想的话,一定要好好准备面试(这里插一句,面试前,一定一定要上网查找公司的背景信息,起码要知道公司是做什么产品的,鱼鹰就在这里吃了一个亏,之前对这个不重视,有的公司查过,有的公司没查过,刚好没查过的公司突然就问到这个问题,很尴尬,因为这体现了你对这次面试的尊重,而不是在浪费面试官的时间)。 面试的话,就随你发挥了,只要你对自己的技术有信心,那么面试应该不会太难,一般来说,面试官问的都是简历上的东西,所以简历的内容不要造假,否则回答不出来就麻烦了。 现在就来具体聊聊几个一般人不知道的知识: 你是怎么接收、发送串口数据的? 这个问题其实比较宽泛,一般经验少的会说使用查询方式,但是查询方式效率是非常低下的,所以如果你只能回答这个,100分的题你只能得个30分。如果你说用中断方式,那么请问你具体是如何处理的?如果你回答说一个字节接收完之后再接收下一个字节,那么可以得个50分。 紧接着又问你,你是怎么接收一帧数据的(这个其实不应该由面试官问,而是由你自己补充全面),如果你说采用帧头、帧尾判断的方式接收的,那么这道题还是给你50分,但是你说用空闲中断,那么70分以上,如果你说用DMA+空闲中断的方式接收的,那么90分以上(这是我认为最好的方式了,可能会有其他更好的方式也说不定)。 那么现在说说空闲中断,为什么你说了空闲中断之后,一下子从不及格到及格了? 空闲中断,顾名思义,就是串口空闲后产生的中断。我们都知道,数据一般是按照数据帧来发送的,即一个数据帧一个数据帧的发送,如果两帧发送之间能间隔一段时间,那么在接收端就可以产生空闲中断(关于这个空闲中断,以后可能会专门写一篇笔记介绍),有了空闲中断有什么好处? 可以接收不定长数据(这是最明显的好处) 不需要复杂的帧格式(比如帧头、帧尾可以不要) 一个数据帧接收错误,不会影响到下一帧数据的接收 有了空闲中断,可谓好处多多(有的单片机没有空闲中断,那就没办法,当然也可以舍弃一个定时器资源来获得空闲中断的效果),所以当初了解到这个之后,就一直使用这种方式接收了。 但是空闲中断虽好,如果你每接收一个字节都要CPU干预,还是效率太低,那么这时候就得配合DMA了。 怎么配合?比如说你一个数据帧的最大长度是10个字节,设置串口接收缓存区为20个字节,那么你可以设置DMA传输长度为20,这样DMA每从串口传输一个字节,传输长度就会自减,当产生空闲中断时,只要你知道开始设置的传输长度和剩余的传输长度,那么就可以得到你已经接收的数据长度,之后你再重新设置新的接收长度即可进行下一次数据帧的接收。 如此一来,接收一个数据帧只要CPU干预一次就够了,就是在接收完数据帧的时候由空闲中断通知CPU进行后续处理即可(注意不是DMA中断),极大的减少了CPU工作时间。 有的时候,数据量很大,CPU来不及处理,那么你可以通过以下方式解决: 增加消息队列(非常好的解决方式) 增加两帧之间的发送时间(对于实时性要求很高的可能不合适) 前面两种方式叠加 LCD显示屏上的按键有多种触发方式,比如触摸、实体按键,以后还可能增加其他方式,你会怎么设计结构,让其兼容适应不同的环境? 如果是你,你会怎么考虑? 鱼鹰当初的答案是:软件层次上设计三层。 第一层:和硬件底层驱动相关的 第二层:中间层,负责对接底层驱动和上层应用 第三层:上层调用接口 这个答案我不知道到底好不好,但就以我现有的知识介绍吧。 一般开发人员的软件设计只有第一层和第三层(即应用层直接访问底层函数),很少有第二层,事实上设计第二层很有必要,为什么这么说呢,就像题目所说的,一旦你将触摸换成了按键,那么所有用到这个按键程序的地方,你都得进行修改,虽然不是很难,但是也麻烦,并且增加了出错的可能性,但是有了中间层就不一样了,你只要修改这个中间层的代码就可以了,你的应用层根本不需要修改。 所以中间层的设计很关键,要尽可能的把关键信息抽象化,这样才不会导致明明已经设计了中间层,还是免不了大面积修改,那么就得不偿失了(这里的中间层可以使用函数指针或者使用一个函数封装一个底层函数,而你的函数(指针)原型就得好好考虑清楚了)。 FIFO队列中,有一个后面接收的数据,但是想让它更快处理,应该怎么办? FIFO队列的特点就是先进先出,为什么这个问题反着来?既然你都是顺序处理了,为啥你还要插队?但是实际上确实可能出现插队的情况,那该怎么办?这个问题如果是以前的自己可能回答不出来,但是当鱼鹰把uCOS II 源码看了个遍之后,就知道该怎么做了。 uCOS II的消息队列的源码中,有个函数的选项,就可以选择你插入队列的数据放在队头还是队尾。按照队列的特点,肯定是要插入到队尾的,但是题目要求更快处理,那么插入到队头是最好的方式,所以这个问题的答案是,将数据插入到队头,这样既可保持队列的特性,又能处理一些紧急的消息,一举两得。 从这里也可以知道,阅读源码虽然看似费时费力,但是对你的思想、思维是有很大拓展意义的,与其停留在表明不明所以,遇到操作系统问题到处问人,不如静下心来好好看看源码,对你的技术水平是会有很大的提高的。 最后留一个问题,如果单片机没有在线调试功能,你会用什么方式调试? 本内容来源于网络,侵删!
点赞 24
评论 5
全部评论
推荐
最新
楼层
网易互娱
校招火热招聘中
官网直投
相关推荐
克莉斯缇娜
05-16 09:12
研发工程师
华为od
感觉审批凉凉的了。。。
点赞
评论
收藏
转发
御坂妹妹12534号
05-17 10:57
已编辑
哈尔滨工业大学 计算机类
25届暑期实习小记(The End)
bg:C9本,一段小厂实习、Java后端过程很煎熬。好在结果还算过得去,暑假去杭州找小女友啦,打算在杭州多实习一段时间,趁这个机会多陪陪女朋友!已Offer(已意向):阿里控股(已接)、灵犀互娱(拒)、美团(拒)HR面挂:阿里云瓴羊二面挂:招商银行卡中心(话说既然只招硕士还面我两次干嘛)一面挂:钉钉、淘天、快手、腾讯一堆简历挂、筛选挂、笔试挂 不写了明显能感觉到,面试越多,经验增长的越多。从刚开始面钉钉、快手时的手足无措,到后面面阿里控股、灵犀的游刃有余,还是要多面试积累经验啊!(早知道就不应该上来就拿大厂练手)后面的流程都推掉啦,接下来就是继续学一点项目和期末复习了,祝...
投递阿里巴巴控股集团等公司10个岗位 >
晒一晒我的offer
点赞
评论
收藏
转发
盐焗鸡_
04-20 15:14
已编辑
门头沟学院 计算机类
两天速通阿里
感觉这一周太梦幻了,就像一个梦,很不真实~~~感觉这个暑期,我的运气占了99成,实力只有百分之一4.15上午 腾讯csig 腾讯云部门,面完秒进入复试状态4.16下午 美团优选供应链部门,4.18上午发二面4.17晚上 阿里国际一面,纯拷打,面完我都玉玉了4.18下午 阿里国际二面,是我们leader面的我,很轻松~~4.18晚上 约了hr面4.19上午 hr面,下午两点口头oc4.19晚上 意向书说起来我的暑期好像一次都没挂过~~~~~难道我是天生面试圣体?----------------------------------------------------------------------六个月前,我还是0项目0刷题,当时想的是先把论文发出来再去找实习。结果一次组会,老师打破了我的幻想(不让投B会,只让投刊或者A)我拿头投啊!!!然后就开始物色着找实习,顺便做完了mit的6.s081,但是基本上还是没刷过题目-----------------------------------------------------------------------11月 一次偶然的机会,面进了某个耳机厂的手环部门,大概是做嵌入式的,用的是CPP。12月 莫名其妙拿到了国创的面试机会,0基础四天速成java基础!居然也给我面过了hhhhh,可能是面试没写题吧入职国创后的几个月,一直没活,天天搁那看剧,都快忘了还有暑期实习这回事了~~~~命运的齿轮在2.26开始转动,因为这一天美团开了,我开始慌了,因为那时的我什么都不会。lc,八股,sql全部是0进度。然后就开始了女娲补天,上班刷题,下班继续做之前的开源,顺便学一学八股。3月到现在,lc也刷到快200了,一天最多提交了47次~~~~~~~~~~八股根据别人的面经总结和博客,写了快十万字的笔记~~~~~~~~~~简历上的实习经历和开源,也努力去深挖了,写了几万字的记录~~~~~~所以面试的时候,基本上都能cover了,面试官问到的基础基本都会,不基础的我就把他往我会的地方引。结果好像还不错,基本上每个面试官评价都挺好的emmmmmmmm
投递阿里巴巴等公司10个岗位
点赞
评论
收藏
转发
26加瓦鼠鼠
04-17 15:15
莆田学院 计算机类
够了,我说够了
点赞
评论
收藏
转发
颖酱一定会有offer
05-15 19:19
已编辑
武汉大学 新闻传播学类
写在春天结束以前:我的24届校招之路
从去年春天到今年春天,历时整整一年,我的校招季终于画上了句号。从结果上看,无论是公司平台、岗位方向、薪资待遇,都远超我在校招开启之前的期待。个中体验,有诸多辛苦,但曾经以为的弯路,如今来看每一步都是坦途的序幕。所以在校招正式入职之前的闲隙,值此春光散尽,初夏到来之际,回顾我这一年的校招之路,希望能给正在校招的你给予经验和鼓励。本文适合什么样的人看本人的求职经验all in互联网非技术岗,对互联网产品/运营求职有兴趣的同学,无论你是25届正在挣扎暑期实习的小伙伴,或是没到校招节点但对互联网非技术岗感兴趣的朋友,都可以继续往下看~相信你能在其中找到共鸣。我的背景先说关键词:双9,文科,中小厂实习经...
非技术岗是怎么找实习的
点赞
评论
收藏
转发
点赞
收藏
评论
分享
回复帖子
全站热榜
1
...
盲审已过,答辩已过,工作已签
3.1W
2
...
聪明人看的Java后端入门路线(应该比大多数高手给的靠谱)
9181
3
...
【有奖活动】浅聊一下我的实习⭐
8965
4
...
实习难求——做个总结
8749
5
...
pcg qq 一面
8118
6
...
腾讯一面凉经 5.16
6271
7
...
25届暑期实习中后期更容易拿offer
5274
8
...
26届菜鸡投了一个月大厂日常,0面试绷不住了呀。听说9月后机会可能会多起来,感觉要被迫继续沉淀了之前和导师聊,说找到大厂实习的话可以去,对就业帮助大,小厂的话就emmm投了快一个月,老板上打招呼绝大数
4682
9
...
菜鸟一面 无项目 无手撕 1hour
2909
10
...
求各位大佬给个建议吧
2558
正在热议
#
牛客帮帮团来啦!有问必答
#
773582次浏览
12164人参与
#
机械制造薪资爆料
#
313118次浏览
3616人参与
#
海康威视求职进展汇总
#
97164次浏览
1173人参与
#
毕业租房也有小确幸
#
26611次浏览
1477人参与
#
夸夸我的求职搭子
#
65861次浏览
808人参与
#
荣耀求职进展汇总
#
67725次浏览
680人参与
#
宁德时代求职进展汇总
#
36247次浏览
400人参与
#
你的工作大概什么时候入职?
#
4117次浏览
52人参与
#
简历无回复,你会继续海投还是优化再投?
#
22384次浏览
316人参与
#
非技术岗是怎么找实习的
#
76858次浏览
1429人参与
#
打工人的辛酸
#
8937次浏览
146人参与
#
实习生应该准时下班吗
#
79416次浏览
587人参与
#
本周投递记录
#
201719次浏览
5125人参与
#
投递实习岗位前的准备
#
618123次浏览
11019人参与
#
找工作中的意难平
#
193833次浏览
3437人参与
#
产品实习,你更倾向大公司or小公司
#
38408次浏览
590人参与
#
谈薪时HR压价该怎么应对
#
38000次浏览
258人参与
#
Offer比较,你最看重什么?
#
52394次浏览
501人参与
#
如何写一份好简历
#
269351次浏览
4035人参与
#
学历对求职的影响
#
138287次浏览
1574人参与
牛客网
牛客企业服务