# 嵌入式 数据结构该怎么学?

在一些中大型公司的嵌入式岗位招聘中,机考是必不可少的一个环节,这其中的编程题考察的正是数据结构。
我整理了一些大家可能都有的问题如下,本文将逐一解答。

  1. 数据结构真的有那么重要吗?
  2. 嵌入式一般要学哪些知识点?
  3. 刷题要刷到什么程度?
  4. 有哪些数据结构学习资源?

1.数据结构的重要性

在秋招中,中大厂在软件开发岗位基本都是有机考这一流程的,嵌入式也一样,会有对代码 基础编程能力的考察。
机考分数如果太差一般在这一环节就会被刷掉,机考面试都结束后,面试官也很有可能结合机考分数排序,最终决定是否发offer。实际面试时,有些公司也要求共享屏幕在线做题,这个就更考察代码数据结构综合能力。

在面试问答时,即使不用敲代码,有些面试官也会以问答的形式考察数据结构基础,比如链表、数组、队列等结构的特点、描述快速排序等排序算法的时间复杂度、基本思路等等。

综上,嵌入式岗位作为软件工程师的一种,基础的数据结构知识点是必要的,如果想冲大厂,基础算法题也一定要会做。

2.嵌入式岗位要学到什么程度

以我自己秋招的经验,嵌入式应该不会像java、C++、算法岗对数据结构要求那么高。一个典型的特征是有一部分公司嵌入式岗位算法题是限制只能用C语言的,C语言在做题时缺乏C++容器、也不像java、python那么灵活,代码题不会出那么难。

实际上嵌入式机考也取决于大家整体的水平,如果投嵌入式的同学机考分数都低,那么门槛分数也会低,大家可以去看********这重平台讨论区,学嵌入式的同学出现的概率还是相对较低的。

具体来说,两道编程题、那么第一道肯定难度低大家要能做出来,比如4道的话能做出2道一般也能有面试资格了。大家要做的是在秋招面试前,基础概念一定要清楚,大概如下:

  • 数组、链表的特点、区别
  • 队列、栈的特点、区别
  • 常用排序算法:冒泡排序、快速排序、希尔排序、选择排序时间复杂度、特点
  • 常用查找算法:哈希算法、二分法基本原理
  • (拓展)动态规划,深度/广度优先搜索,回溯法 ::: 以上基础知识熟悉了,就可以应付面试问答。而机考编程题的话,就要依靠平时刷题锻炼!

3.要刷多少题 怎么刷

数据结构刷题练习,最主流的就是********,直接百度可以找到。这个网站上包含了众多题库,如果你现在身边有电脑且之前没做过,可以试试第一题两数之和。这个平台的题量绝对是刷不完的,嵌入式同学也不用学完。新手建议点击题库,先做一做1-100题以内简单、中等难度题逐渐熟悉。

另外一个刷题平台就是咱们的牛客,牛客上有各大公司往年机考题,软件上招聘信息也是比较多的,投简历需要内推码可以直接搜公司名称。这里给大家介绍一下一般编程题有两种模式:ACM模式与核心代码模式。ACM模式只提供题目描述,所有代码都要自己写,包括输入输出,这个大家一定要找题目练一下,有可能你有解题思路,但是输入输出都不会处理的话那就凉了。 alt

核心代码模式相对更简单,大家只需要实现一个子函数的具体功能,,函数声明和返回值都规定好了,你只需要把自己解题处理程序填入就行。

4.数据结构学习资源

关于学习资源这一块,牛客网往年真题其实挺多的,包括选择题编程题等,这些资源还是不错的。 alt

另外一个,就是很多同学秋招都接触过的--》 代码随想录,同名公众号,b站也可以搜素到up主,这个去他公众号有刷题PDF资料,包括动态规划等各种,还是不错的对学算法有帮助。

此外还有一个我关注的公众号,labuladong,这位大神直接提供了一个刷题的vscode插件,可以在vscode内看到题,这个对于在公司实习的小伙伴是很有帮助的! 让主管以为你在工作其实在偷学。

基本上以上三个渠道刷题完全够了,那么要刷多少题?这个问题肯定是越多越好,但是我们投的是嵌入式不是算法岗,刷题也很费时间。我自己秋招********大概刷了100题左右,大家就是各类题目 以及ACM/核心模式的基础题都要练一下,特别难的题不用做,中等题选做,不要去比拼刷了多少题,刷题多不等于能通过面试拿offer多!

关于编程语言,嵌入式默认应该是C语言,大厂笔试是支持自己选择编程语言的,这个时候墙裂建议大家用C++,一套vector 、list、map操作真的比C语言方便太多。

最后还有一个高频的,就是常见的这些排序算法,如冒泡排序、快速排序、选择排序以及二分查找这些是一定要会自己敲出来的!

以上内容还有不完善的地方,欢迎大家在评论区交流:

#嵌入式##嵌入式linux##嵌入式软件开发##嵌入式工程师##笔试#
嵌入式校招-求职面试秘笈 文章被收录于专栏

本人2023年应届毕业硕,在2022年严峻秋招环境中拿到多个30w+嵌入式offer。 本硕机械专业,硕士课题与嵌入式完全不相关,自学转行嵌入式。 从C语言、stm32、到FreeRtos、linux驱动。专注嵌入式校招求职面试和学习指导,助力大家秋招上岸嵌入式大厂!

全部评论

相关推荐

首先 自我介绍、项目介绍略过1. 如何评估IMU的测量精度?有哪些标准和方法可以参考?2. 串口通信的基本连接方式是怎样的?中断配置时需要注意哪些事项?3. I2C总线的基本结构是怎样的?请详细描述如何通过I2C读取设备寄存器的步骤。4. 操作系统中任务的状态有哪些?就绪与阻塞的任务在调度中是如何处理的?5. 任务进入阻塞状态的原因有哪些?请列举几种常见情况。6. 请解释死锁的概念及其形成条件。如何识别死锁的发生?7. 有哪些策略可以防止或解决死锁问题?例如,如何处理资源的分配?8. 除了直接释放资源外,还有哪些方法可以避免死锁?这样做可能带来哪些风险?9. 临界区的保护机制有哪些?请举例说明常用的同步手段。10. 在FreeRTOS中,任务切换的具体流程是怎样的?涉及哪些关键操作?11. ARM架构中有哪些重要寄存器?在任务切换时,哪些寄存器会被自动保存和恢复?12. C语言编译的主要阶段有哪些?每个阶段的主要任务是什么?13. 可执行文件的结构是怎样的?各个段的功能和作用是什么?14. const类型的变量通常存放在哪里?全局变量又是如何分布的?15. 你是否有LWIP的移植经验?请简要描述TCP/IP模型的各个层次。16. TCP协议在网络模型中处于哪个层级?17. 网络层的主要协议有哪些?请简要说明其功能。18. TCP与UDP协议的主要区别是什么?在什么情况下选择使用每种协议?19. IP首部和TCP首部各自包含哪些重要字段?20. 如何通过ARP协议将IP地址解析为MAC地址?21. 在跨越局域网发送数据包时,使用的MAC地址是哪个?22. M7内核在单片机上有多少个堆栈指针?它们的使用场景是什么?23. 用户模式和特权模式之间是如何切换的?除了SVC中断,还有哪些方法?24. 如何判断一台处理器是大端还是小端架构?问题答案已经整理到专栏中了,关注我分享更多知识。  c++/嵌入式面经专栏-牛客网 https://www.nowcoder.com/creation/manager/columnDetail/MJNwoM
点赞 评论 收藏
分享
4 35 评论
分享
牛客网
牛客企业服务