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

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 广东

相关推荐

Yushuu:你的确很厉害,但是有一个小问题:谁问你了?我的意思是,谁在意?我告诉你,根本没人问你,在我们之中0人问了你,我把所有问你的人都请来 party 了,到场人数是0个人,誰问你了?WHO ASKED?谁问汝矣?誰があなたに聞きましたか?누가 물어봤어?我爬上了珠穆朗玛峰也没找到谁问你了,我刚刚潜入了世界上最大的射电望远镜也没开到那个问你的人的盒,在找到谁问你之前我连癌症的解药都发明了出来,我开了最大距离渲染也没找到谁问你了我活在这个被辐射蹂躏了多年的破碎世界的坟墓里目睹全球核战争把人类文明毁灭也没见到谁问你了😆
点赞 评论 收藏
分享
评论
7
83
分享
牛客网
牛客企业服务