嵌入式软件 面经 笔试题 数据结构与算法篇

5.  数据  结构与  算法  (17道) 

5.1   数组与  链表   的区别?
(1)数组的元素个数在定义时就必须确定,且元素的类型必须一致;而  链表   的元素个数自由,且元素内可以有不同类型的  数据  。 
(2)数组的元素在内存中是按顺序存储的,而  链表   的元素是随机存储的。 
(3)要访问数组的元素可以按下标索引来访问,速度比较快;如果对它进行插入/删除操作的话,就得移动很多元素,所以对数组进行插入/删除操作效率很低。由于  链表   是随机存储的,如果要访问  链表   中的某个元素的话,那就得从  链表   的头逐个遍历,直到找到所需要的元素为止,所以  链表   的随机访问的效率就比数组要低;  链表   在插入/删除操作上有很高的效率(相对数组)。一句话总结就是:数组的访问效率高,而  链表   的插入/删除效率高。 

5.2 a = b * 2;  a = b / 4;  a = b % 8;  a = b / 8 * 8 + b % 4 ;  a = b * 15; 

效率最高的  算法   

答案:

a = b * 2

a = b << 1;

a = b / 4

a = b >> 2;

a = b % 8

a = b & 7;  // 7 =   0b111 

a = b / 8 * 8 + b % 4

a = ((b >> 3) << 3) + (b & 3);  // 3 = 0b11

a = b * 15

a = (b << 4) - b

解读:*、/、%分别可以用<<、>>、&来实现,效率更高。 


5.3 C   语言程序代码优化方法
(1)选择合适的  数据   结构与  算法   ; 
(2)使用尽量小的  数据   类型; 
(3)使用自加、自减指令; 
(4)用移位实现乘除法运算; 
(5)求余运算用&(如a=a%8改为a=a&7); 
(6)平方运算用*(如a=pow(a,2.0)改为a=a*a); 
(7)延时函数的自加改为自减; 
(8)switch语句中根据发生频率来进行case排序   ; 
(9)减少运算的强度。 

5.4   时间换空间、空间换时间的例子?
(1)时间换空间:冒泡  排序   。 
(2)空间换时间:快速  排序   。 

5.5   什么是满  二叉树   、完全  二叉树   、 平衡二叉树   ?
(1)当一个树每一层的结点个数都达到最大时,这个树是满  二叉树   。 
(2)当一个树除了最后一层外其他每一层的结点数都达到最大,且最后一层的叶子结点都靠左排列时,这个树是完全  二叉树   。满  二叉树   是一种特殊的完全  二叉树   。 
(3)当且仅当一个树两个子树的高度差不超过1时,这个树是  平衡二叉树   。 

5.6  堆和栈的的区别?

数据   结构的堆和栈

栈是一种先进后出的  数据 结构。堆是一种经过  排序 的树形  数据   结构(通常是二叉堆),每个结点都有一个值,根结点的值最小或最大,常用来实现优先队列,堆的存储是随意的。

C  语言内存分配的堆和栈

栈是向下生长的,栈中分配函数参数和局部变量,其分配方式类似于  数据   结构中的栈。堆是向上生长的,堆中分配程序员申请的内存空间(一旦忘记释放会造成内存泄漏),其分配方式类似于  数据   结构中的  链表  。


以上内容摘自牛客官方专刊《嵌入式岗位笔试面试真题讲解》,该专刊不仅有真题讲解,还有经验分享,不清楚嵌入式该学什么的同学,想找嵌入式实习/正式工作的同学,都可以来看看:           


引流:  华为   、  小米   、    OPPO、VIVO、荣耀、一加、     CVTE、    大疆 、insta360影石、    美的 、    TCL    、 海信、创维、烽火、 比亚迪   、吉利、长安、大众、   经纬恒润 、小鹏、    图森未来、    百度 、     滴滴、蔚来、理想、 联发科、    紫光展锐 、全志、     寒武纪 、    晶晨半导体 、汇顶、     华为、   中兴、     浪潮 、    TP-LINK、讯飞、商汤、     海康威视 、浙江   大华     、360、小马智行、    元戎启行       、    深信服       、移动、联通、电信、  旷视   、  四维图新   、  中芯国际  、复旦微电子。 
#面经##秋招##嵌入式##嵌入式招聘嵌入式面经CVTE##软件开发#
全部评论
1
送花
回复
分享
发布于 2022-09-19 21:44 广东

相关推荐

唉,鼠鼠没怎么好好准备,加上基础比较差,大概率gg了😭之前hr还问我能实习多久,唉这下笔试都gg了😭主要考的内容其实很基础,总共四道大题,简答填空多选单选单选主要是SQL语言,java基础,js基础啥的,有的问你关键字有哪些,还有个问typeof是object的js是什么,还有python的一两道有几个闻所未闻的,servlet的请求方式,与MVC没有关系的(我记得我好像选的JSP,其他几个是servlet&nbsp;service)最不常用的状态码(101,200,401,500)然后多选有排序稳定的(快排,归并,冒泡,堆),正则表达式,http方法,前端框架(这个真是笑死了,答案好像是vue,react,anglar),Flex布局有哪些,微服务中低优先级部署(这个我是真一点也不了解)填空题好多数学题,还有一个好像是概率论的,有几个微积分的,比如sinx/x在0处的极限(不太明白为啥考这么多数学,我一开始还以为是考离散那种呢),有几个常识题,比如问你地球和太阳距离是10的几次方,地球半径是几次最后简答题,第一问编程语言的区别,然后性能差别的原因,第二问是什么QPS限制(这个我都没听过),让你写一段代码一分钟请求次数不能超过60次,第三个是设计扫描一个网段中开放的所有ip和端口的软件(没学过计网,gg了),第四个是一个sql语句(差不多对标力扣简单or中等)唉最后大概率笔试要挂了,这个笔试题有点出乎我意料,没有编程题算法题啥的,都是基本零碎的基础以后不应该急着搞项目搞应用,之前我遇到不会的直接chat了,底层的啥的根本没太注意,以后得注意了-------还是许愿能过吧😭#我的实习求职记录#
投递卓识基金等公司10个岗位 我的实习求职记录
点赞 评论 收藏
转发
7 83 评论
分享
牛客网
牛客企业服务