🔥【26届嵌入式】基础薄弱参考学习路线
********************
大家问的很多的问题:非科班,研究生方向也和嵌入式不相干,现在想转嵌入式还来得及不,学习路线应该如何规划
答:首先,你如果认准嵌入式;方向以后,那么现在就是最好的时候,付诸全力准备。还有半年的时间,全力以赴,瞄准方向,也能取得一定的结果。往往就是摇摆不定中错失机会。
其次,关于学习路线,项目和实习zui重要,两者起码得有一个,所以这个是你当下最需要考虑的事情。建议你先花两三天,根据自己的情况,制定一个学习规划或者说时间规划。
**再次,**如果你只是为了应对校招,可以给你个粗略的参考路线,可分几个阶段,下面会介绍
最后,涉及到的嵌入式的知识,比如32、linux这些,你可以先过一遍基础部分(过起来相对快些),之后靠项目加深理解。没必要每个部分都掌握。能熟练掌握项目中涉及的部分即可。
除了学习路线,最后一点是秋招中更重要的,请大家耐心看到最后
一、学习路径总览
分阶段学习,保证知识体系完整
第一阶段:夯实基础 | 掌握 C 语言、数据结构、计算机基础 | 4~6 | C 语言、C++、计算机基础(操作系统、计算机网络)、算法 |
第二阶段:嵌入式开发能力 | STM32 开发 / Linux 开发 | 8~12 | STM32 HAL 库、FreeRTOS、Linux 多线程编程、网络编程、驱动开发 |
第三阶段:项目实践 | 通过项目熟练应用技术 | 4~6 | STM32 项目 / Linux 服务器开发 / 机器人开发 |
第四阶段:面试冲刺 | 整理简历,模拟面试 | 2~4 | 八股文、算法、项目复盘 |
基础薄弱同学/转行,需要具备的基本技术栈和学习思路:
①编程语言:C/C++/Python等,c是基础,必须掌握,建议再学个C++(一周速通黑马基础,之后通过刷题熟练)
②计算机基础知识:
- 操作系统(没有时间可以先不系统学,看面经学习,哪里不懂单独学)
- 计算机网络(湖工大教书匠一周速通基础,之后看面经)
- 数据结构和算法(直接刷题,哪里不会学哪里,目标中小厂,可以优先刷hot100)
- 计算机组成原理(可暂时不学)
③嵌入式能力:
- Stm32(总体学习HAL库开发,熟悉通信总线。整体过一遍,之后通过项目熟悉其中一些知识点即可)
- Linux(基础指令学习,交叉编译链,多线程,socket编程等等,主要是通过项目熟悉)
- 上面两个大类可根据实际需求选择其一,也可都学
- 这部分重要的是项目,你不需要掌握32/Linux全部知识点,熟练掌握项目中涉及的即可
④编外能力:GDB、Git、交叉编译、ROS、原理图/PCB绘制、数电模电等
二、 第一阶段:夯实基础(4~6 周)
1️⃣ C 语言
基本语法 | 变量、函数、作用域、头文件 |
指针 & 内存管理 | 指针运算、野指针、malloc/free、内存对齐 |
结构体 & 共用体 | 结构体指针、位域、大小端问题 |
文件操作 | 文件读写、二进制文件、文件缓冲区 |
回调函数 | 函数指针、动态库、系统 API |
数据结构 | 链表、栈、队列、哈希表、红黑树 |
2️⃣ C++(可选,但建议学习)
C++ 语法 | 作用域、引用、auto 关键字 |
面向对象 | 类与对象、继承、多态、抽象类、虚函数 |
智能指针 | unique_ptr、shared_ptr |
STL 标准库 | vector、map、set、queue、stack |
异常处理 | try-catch、异常规范 |
多线程编程 | std::thread、互斥锁、条件变量 |
问:要刷题吗?刷题刷到什么程度是合适的?
答:要刷题。实验室三届师兄师姐亲身经历。面试时手撕不出来的尴尬历历在目。
首先,嵌入式软开岗位不少公司也会有机考和手撕环节(比如huawei,二者兼有)。不过和互联网要求不同,你只是需要通过刷题掌握常见的数据结构和算法。能对常见的题目熟悉,对中等题目能独立撕出来即可,不需要死磕高难度题目。
其次,不是所有的面试都会有手撕,但是,机考很多中大厂都有。机考不过,难以推进下一个流程,所以刷题部分也要重视。
再次,那是不是我刷hot100就够了?如果你要投递的是小厂,很有可能是没有机考环节的,手撕hot100基本够用,甚至都没有手撕,那hot100足够。如果你的目标是中大厂,hot100的程度,你可能都难以应对机考,要再额外刷代码随想录。
最后,在我们投递秋招的过程中,其实不只是会投嵌入式软开,而是和你技术栈相关的岗位都会去投递,手撕在这种技术岗位很常见。刷题也不白刷,如果你是用C++刷题的,秋招也可以尝试投递C++的岗位,都是可以的。
3️⃣ 计算机基础
计算机网络 | TCP/IP、UDP、HTTP、三次握手、四次挥手 |
操作系统 | 进程 vs 线程、同步机制(信号量、互斥锁)、虚拟内存 |
数据结构 & 算法 | 链表、数组、排序、哈希、二叉树、动态规划、贪心等 |
编程工具 | GDB 调试、Makefile 编写 |
三、第二阶段:嵌入式开发(8~12 周)
📌 STM32 开发
STM32 基础 | GPIO、时钟配置、外部中断 |
通信协议 | UART、SPI、I2C、CAN、Modbus |
定时器 & PWM | PWM 控制、定时器中断 |
RTOS | 任务调度、优先级、消息队列、信号量 |
存储 & 文件系统 | EEPROM、Flash 读写、FatFs |
低功耗 & 能耗优化 | 低功耗模式、休眠唤醒 |
📌 Linux 开发
Linux 基础 | 常见指令、Shell、GDB 调试、Makefile |
进程 & 线程 | pthread 线程、多进程编程、进程间通信(IPC) |
网络编程 | TCP/UDP 编程、select/poll/epoll |
设备驱动 | 字符设备、块设备、I2C/SPI 设备驱动 |
内核编程 | 设备树、内核模块、内存管理 |
ROS 在嵌入式开发的归属
没时间先不学这个
Linux 嵌入式开发 | 机器人、自动驾驶、智能硬件 | ROS 框架、节点通信、话题/服务、MoveIt! | 适合对机器人、AI 感兴趣的开发者 |
高级系统开发 | 智能控制、SLAM、路径规划 | ROS 2、Nav2、Gazebo 仿真 | 可结合 STM32 / Jetson / Raspberry Pi |
四、 第三阶段:项目实战(4~6 周)
1、项目去哪里找:
2、复现开源项目就可以吗?
五、 第四阶段:面试冲刺(2~4 周)
📌 面试准备(飞出金陵的烤鸭),提前准备
简历优化 | 突出项目亮点,量化成果 |
八股文复习 | C ++、Linux、计算机网络、操作系统、32、RTOS等等 |
刷算法题 | Leetcode Hot100 |
模拟面试 | 自己录音、与朋友模拟面试 |
参考资料 | 《烤鸭的嵌入式校招学习笔记》 |
1、简历
2、面经
3、项目/实习梳理
参考学习视频:
嵌入式校招经验 文章被收录于专栏
整个专栏更新一些嵌入式经验