# 嵌入式 数据结构该怎么学?
在一些中大型公司的嵌入式岗位招聘中,机考是必不可少的一个环节,这其中的编程题考察的正是数据结构。
我整理了一些大家可能都有的问题如下,本文将逐一解答。
- 数据结构真的有那么重要吗?
- 嵌入式一般要学哪些知识点?
- 刷题要刷到什么程度?
- 有哪些数据结构学习资源?
1.数据结构的重要性
在秋招中,中大厂在软件开发岗位基本都是有机考这一流程的,嵌入式也一样,会有对代码 基础编程能力的考察。
机考分数如果太差一般在这一环节就会被刷掉,机考面试都结束后,面试官也很有可能结合机考分数排序,最终决定是否发offer。实际面试时,有些公司也要求共享屏幕在线做题,这个就更考察代码数据结构综合能力。
在面试问答时,即使不用敲代码,有些面试官也会以问答的形式考察数据结构基础,比如链表、数组、队列等结构的特点、描述快速排序等排序算法的时间复杂度、基本思路等等。
综上,嵌入式岗位作为软件工程师的一种,基础的数据结构知识点是必要的,如果想冲大厂,基础算法题也一定要会做。
2.嵌入式岗位要学到什么程度
以我自己秋招的经验,嵌入式应该不会像java、C++、算法岗对数据结构要求那么高。一个典型的特征是有一部分公司嵌入式岗位算法题是限制只能用C语言的,C语言在做题时缺乏C++容器、也不像java、python那么灵活,代码题不会出那么难。
实际上嵌入式机考也取决于大家整体的水平,如果投嵌入式的同学机考分数都低,那么门槛分数也会低,大家可以去看********这重平台讨论区,学嵌入式的同学出现的概率还是相对较低的。
具体来说,两道编程题、那么第一道肯定难度低大家要能做出来,比如4道的话能做出2道一般也能有面试资格了。大家要做的是在秋招面试前,基础概念一定要清楚,大概如下:
- 数组、链表的特点、区别
- 队列、栈的特点、区别
- 常用排序算法:冒泡排序、快速排序、希尔排序、选择排序时间复杂度、特点
- 常用查找算法:哈希算法、二分法基本原理
- (拓展)动态规划,深度/广度优先搜索,回溯法 ::: 以上基础知识熟悉了,就可以应付面试问答。而机考编程题的话,就要依靠平时刷题锻炼!
3.要刷多少题 怎么刷
数据结构刷题练习,最主流的就是********,直接百度可以找到。这个网站上包含了众多题库,如果你现在身边有电脑且之前没做过,可以试试第一题两数之和。这个平台的题量绝对是刷不完的,嵌入式同学也不用学完。新手建议点击题库,先做一做1-100题以内简单、中等难度题逐渐熟悉。
另外一个刷题平台就是咱们的牛客,牛客上有各大公司往年机考题,软件上招聘信息也是比较多的,投简历需要内推码可以直接搜公司名称。这里给大家介绍一下一般编程题有两种模式:ACM模式与核心代码模式。ACM模式只提供题目描述,所有代码都要自己写,包括输入输出,这个大家一定要找题目练一下,有可能你有解题思路,但是输入输出都不会处理的话那就凉了。
核心代码模式相对更简单,大家只需要实现一个子函数的具体功能,,函数声明和返回值都规定好了,你只需要把自己解题处理程序填入就行。
4.数据结构学习资源
关于学习资源这一块,牛客网往年真题其实挺多的,包括选择题编程题等,这些资源还是不错的。
另外一个,就是很多同学秋招都接触过的--》 代码随想录,同名公众号,b站也可以搜素到up主,这个去他公众号有刷题PDF资料,包括动态规划等各种,还是不错的对学算法有帮助。
此外还有一个我关注的公众号,labuladong,这位大神直接提供了一个刷题的vscode插件,可以在vscode内看到题,这个对于在公司实习的小伙伴是很有帮助的! 让主管以为你在工作其实在偷学。
基本上以上三个渠道刷题完全够了,那么要刷多少题?这个问题肯定是越多越好,但是我们投的是嵌入式不是算法岗,刷题也很费时间。我自己秋招********大概刷了100题左右,大家就是各类题目 以及ACM/核心模式的基础题都要练一下,特别难的题不用做,中等题选做,不要去比拼刷了多少题,刷题多不等于能通过面试拿offer多!
关于编程语言,嵌入式默认应该是C语言,大厂笔试是支持自己选择编程语言的,这个时候墙裂建议大家用C++,一套vector 、list、map操作真的比C语言方便太多。
最后还有一个高频的,就是常见的这些排序算法,如冒泡排序、快速排序、选择排序以及二分查找这些是一定要会自己敲出来的!
以上内容还有不完善的地方,欢迎大家在评论区交流:
#嵌入式##嵌入式linux##嵌入式软件开发##嵌入式工程师##笔试#本人2023年应届毕业硕,在2022年严峻秋招环境中拿到多个30w+嵌入式offer。 本硕机械专业,硕士课题与嵌入式完全不相关,自学转行嵌入式。 从C语言、stm32、到FreeRtos、linux驱动。专注嵌入式校招求职面试和学习指导,助力大家秋招上岸嵌入式大厂!