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

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语言内存分配的堆和栈

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

5.7快慢指针有哪些应用?

判断链表是否有环

两个指针同时从链表的第一个节点出发,一个指针一次走一步,另一个指针一次走两步,如果走得快的指针追上走得慢的指针,则链表存在环;如果走得快的指针走到链表的末尾(NULL)都没有追上走得慢的指针,则链表不存在环。

找出链表的中间节点

两个指针同时从链表的第一个节点出发,一个指针一次走一步,另一个指针一次走两步,当走得快的指针走到最后一个节点时,走得慢的指针就刚好走到链表的中间节点。

删除链表倒数第n的节点

两个指针同时从链表的第一个节点出发,慢指针不动,快指针先走到第n个节点,然后两个指针开始一起走动,每次走一步,当快指针走到最后一个节点时,慢指针就处于链表的倒数第n个节点。

删除排序链表中的重复项

慢指针从第一个节点出发,快指针从第二个节点出发,两个指针一起走动,每次走一步,如果两个指针指向的节点数据相同,则释放快指针指向的节点,然后快指针指向下一个节点……如此循环直到快指针指向末尾(NULL)。

5.8对线性表(7,34,55,25,64,46,20,10)进行散列存储时,若选用H(K)=K %9作为散列函数,则散列地址为1的元素有几个?

4个,分别是:55,64,46,10。

解读:将线性表元素代入散列函数,即可得到散列地址。

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

https://blog.nowcoder.net/zhuanlan/v0ELPM

嵌入式公司推荐:华为、小米、OPPO、VIVO、荣耀、一加、CVTE、大疆、insta360影石、美的 、TCL、海信、创维、烽火、比亚迪、吉利、长安、大众、经纬恒润 、小鹏、图森未来、百度、滴滴、蔚来、理想、 联发科、 紫光展锐 、全志、寒武纪 、晶晨半导体 、汇顶、华为、中兴、浪潮 、TP-LINK、讯飞、商汤、海康威视 、浙江大华、360、小马智行、元戎启行、深信服、移动、联通、电信、旷视、四维图新、中芯国际、复旦微电子、极氪。

#牛客在线求职答疑中心##嵌入式##数据结构与算法教程##算法刷题笔记##软件#
全部评论
感谢,受益匪浅
2 回复 分享
发布于 2023-09-03 19:30 北京
大佬太强了!
1 回复 分享
发布于 2023-09-17 19:37 上海
嗨!看到你对数据结构与算法、嵌入式笔试题和面经有很多了解,真厉害!有什么具体的问题或者需要帮助的地方吗?我会尽力帮助你哦~ 另外,如果你对嵌入式岗位的求职有兴趣,我可以为你提供一些相关的信息和建议。不过,我还是建议你点击我的头像,我们可以在私信中更详细地聊聊,这样我可以更好地帮助你。期待和你的交流!😊
点赞 回复 分享
发布于 2023-08-27 16:04 AI生成
写的很好,感谢
点赞 回复 分享
发布于 2023-09-06 11:41 上海
感谢大佬
点赞 回复 分享
发布于 2023-09-07 16:19 湖北
谢谢大佬的分享!
点赞 回复 分享
发布于 2023-09-08 17:37 广东
总结的太好了,谢谢大佬
点赞 回复 分享
发布于 2023-09-08 23:35 陕西
大佬牛逼!!!
点赞 回复 分享
发布于 2023-09-11 11:13 广东
😘😘
点赞 回复 分享
发布于 2023-09-15 11:49 安徽
总结得特别好,谢谢大佬
点赞 回复 分享
发布于 2023-09-16 14:37 广东
感谢大佬分享!
点赞 回复 分享
发布于 2023-09-19 14:08 广东
感谢大佬
点赞 回复 分享
发布于 2023-09-20 16:41 河北
感谢大佬
点赞 回复 分享
发布于 2023-09-22 12:30 重庆
感谢大佬!
点赞 回复 分享
发布于 2023-09-24 08:37 黑龙江
感谢大佬
点赞 回复 分享
发布于 2023-09-25 11:15 广东
感谢大佬
点赞 回复 分享
发布于 2023-09-26 22:52 天津
感谢大佬😆
点赞 回复 分享
发布于 2023-10-01 11:00 山东
感谢大佬!
点赞 回复 分享
发布于 2023-10-09 11:50 浙江
cool
点赞 回复 分享
发布于 2023-10-09 17:55 吉林

相关推荐

评论
15
86
分享
牛客网
牛客企业服务