25届嵌入式秋招介绍和超全学习路线

alt

一、个人背景

交流:xihongshixuezhang

双非本9硕

投递70家,面试近30场,offer10+,

  • 自动驾驶感知算法——很少
  • 嵌入式软件开发——大头
  • C++软件开发——小头
  • C++后端开发——小小头
  • 测开——一家

二、嵌入式薪资

alt

与什么有关

  • 学历(本科、硕士)
  • 能力(会多少技术栈)
  • 公司

薪资水平(相对)

三、嵌入式岗位介绍

alt

3.0、什么是嵌入式?

  • 嵌入式是干啥的?
    • 嵌入式就是让微控制器(MCU)或处理器在特定硬件平台中运行特定软件,使其实现如数据采集、信号处理、控制执行、数据传输、显示反馈等任务,以满足特定行业或应用场景的功能需求。
    • 嵌入式系统广泛应用于工业控制、智能家电、消费电子、汽车电子、医疗设备、通信设备、机器人、物联网设备等领域。
  • 什么专业可能会相关:
    • 电子信息、自动化、测控、通信、计算机、软件工程、信息工程、电气、集成电路、机械、车辆工程

3.1、C++方向:

C++作为一种高性能的编程语言,在软件开发领域有着广泛的应用。C++岗位一般分为以下几类:

  • 1、C++软件开发:涉及桌面应用、游戏开发、图形渲染等领域,需要扎实的C++基础和面向对象编程思想。

  • 2、后端开发:利用C++的高性能特点,在服务器端进行高并发、高可用系统的开发,如金融交易系统、分布式存储等。

  • 3、系统软件开发:包括操作系统、数据库、编译器等底层软件的开发,对系统原理和底层架构有深入理解。

    虽然C++相关的岗位相对其他语言可能较少,但由于其复杂性和高性能特点,对开发者的要求较高。

3.2、嵌入式方向:

嵌入式系统广泛应用于物联网、智能家居、工业控制、汽车电子等领域。嵌入式方向大致可以分为以下几类:

  • 1、嵌入式硬件开发

    • 主要负责硬件电路设计、PCB绘制、硬件调试等。这一方向需要电子、电气工程方面的知识,不多展开。
  • 2、嵌入式软件开发

    • 应用层开发

      • Linux用户态开发
        • 在Linux操作系统的用户空间进行开发,如使用Qt进行界面设计,或者开发与硬件交互的应用程序。工作内容相对简单,主要关注业务逻辑的实现。
      • 实时操作系统(RTOS)开发:
        • 基于实时操作系统(如FreeRTOS、μC/OS)进行应用开发,常用于对实时性有要求的嵌入式设备。Stm32、rtos、操作系统,通信总线
    • 底层驱动开发

      • 内核裁剪与移植:在资源有限的硬件上对 Linux 内核进行裁剪、配置和移植的方法。

      • 驱动程序开发:在Linux内核态编写驱动程序,与硬件直接交互。

        嵌入式软件开发对C/C++语言、数据结构、操作系统等基础知识有较高要求。底层驱动开发虽然难度较大,但薪资水平高,发展前景广阔。

      • 需要深入理解操作系统原理、硬件架构和驱动模型,入门和学习难度较大。

3.3、自动驾驶相关方向:

自动驾驶是当前的热点领域,涉及多学科的交叉。主要分为以下几个方向:

  • 应用层开发
    • 功能开发:基于中间件或平台提供的接口,开发自动驾驶功能模块,如路径规划、环境感知、人机交互等。
    • 智能座舱开发等:涉及车载娱乐系统、信息显示、语音交互等,提升用户的驾驶体验。
  • 中间件开发
    • 中间件框架:负责封装底层操作系统和硬件接口,为上层应用提供统一的编程接口。需要对系统架构和软件设计模式有深入理解。
    • 通信框架:开发车辆内部网络通信协议,确保各模块之间的数据传输可靠。
  • 底层开发
    • 操作系统层开发:涉及实时操作系统的开发和优化,对系统的实时性、安全性进行保障。
    • 硬件驱动开发:为传感器、执行器等硬件设备编写驱动程序,与硬件直接交互。

3.4、怎么确定自己学什么?

  • 根据岗位要求,看看自己想去什么样的岗位
    • 会的技术栈越多,秋招能投的岗位越多
  • 进一步学对应的知识
  • 举例

3.5、学习资料怎么找

  • 1、列举要学习的内容
  • 2、小破站
    • 播放量、时长、评
  • 3、不是每个内容都要项目实践
    • 综合一点的
    • 足够深入
    • 自己完成代码功能

3.6、总结

  • 概括不够全面,仅供大家参考
  • 提供方法,大家根据自己实际情况去选择

四、编程相关学习

alt

4.1、编程语言

  • C语言
    • 基础语法
    • 结构体/枚举/位操作
    • 函数、指针(重要)、内存管理
  • C++
    • C++基础
    • 面向对象特性(抽象、类、封装、继承、多态)
    • 模板、泛型、STL、新特性
    • 学习资料:黑马程序员+实际项目实践

4.2、计算机基础知识

  • 4.2.1、数据结构与算法
    • 数据结构:
      • 字符串、栈、队列、链表、堆、树、队列、数组、哈希表等
    • 算法:
      • 查找、排序
      • 经典算法思想(动态规划、回溯等)
    • 学习资料:《代码随想录》、《hot 100》、《hello 算法》
  • 4.2.2、操作系统原理
    • 内存管理和调度
    • 多任务:多线程/并发/线程
    • I/O原理
    • 文件管理
    • 学习资料:王道考研
  • 4.2.3、计算机网络原理
    • 网络模型
    • TCP/IP协议栈划分
    • ping原理等
    • 学习资料:湖工大教书匠
  • 4.2.4、单片机原理/微机原理
    • 计算机基本组成
    • 指令和总线
    • 处理器架构和设计
    • 存储系统
    • I/O系统
    • 学习程度:选择性学习

4.3、Linux操作系统

  • Linux基本使用
    • 系统概念和特点
    • Linux环境安装和搭建
    • 目录结构
    • 基本命令和常用工具
    • 基本网络管理
    • 基本编译器链
    • 基本的shell编程
  • Linux下的C/C++开发
    • 编辑器:Vim
    • 编译
      • 编译器套件:GCC、g++
      • 编译工具:make, makefile, cmake/autotools
    • 调试:GDB
    • 运行
  • Linux系统编程
    • 系统调用
    • 内存管理和使用
      • 内存分配
      • 内存管理
    • 多任务编程
      • 进程管理
        • 进程概念:创建、终止、退出
        • 进程间通信:管道、无名管道、消息队列、信号、信号量、共享内存、套接字
      • 线程
        • 线程概念、
        • 线程编程:创建、终止、等待、同步、互斥、信号
    • 文件I/O编程
      • 文件/文件描述符
      • 文件结构/文件描述符
      • 文件指针/文件描述
      • 标准I/O流、标准I/O操作、非阻塞I/O、异步I/O
    • 网络编程
      • TCP/IP协议栈
      • Socket通信(客户端/服务端)
      • TCP、UDP编程
  • 学习资料
    • 有基础
      • 大丙编程
    • 没基础
      • 完整学一遍

4.4、图形化界面编程:QT

  • 学习内容
    • 对话框/窗口、信号与槽、组件、网络通信、多线程等
  • 学习资源
  • 学习程度:不需要学太深入

4.5、机器人操作系统ROS

  • 1、基础知识
    • 节点(Node)、话题(Topic)、消息(Message)、服务(Service)、动作(Action)、参数(Parameter)
    • TF 坐标变换
    • 仿真环境
      • Gazebo 仿真
      • RViz 可视化
  • 2、进阶应用
    • 传感器与驱动集成
      • 使用 ROS 包对常见传感器(LIDAR、深度摄像头、IMU、里程计、触觉传感器)进行数据获取和话题发布
      • 机器人运动控制与路径规划
    • ROS 工程实践
      • ROS package 的组织结构
      • launch 文件的编写
      • 参数文件的管理
  • 3、ROS 1与 ROS2 的对比与迁移
    • 了解 ROS1 与 ROS2 在通信机制(ROS1 基于 roscore,ROS2 基于 DDS)、安全性、实时性、跨平台性方面的区别
  • 4、学习资料
    • 古月居
    • 项目实践
      • 开源项目
      • 教育机器人

4.6、嵌入式典型平台(ARM)

  • 7.1、裸机开发(stm32)
    • 学习内容
      • GPIO
        • 典型电路、相关寄存器、工作模式
      • 中断
        • 工作模式、中断向量表、优先级、中断处理流程、主/外部中断
      • 定时器
        • 时钟体系和时钟、关键寄存器和控制、PWM定时器、看门狗定时器、实时时钟RTC
      • 存储器
      • 协议/接口/总线
        • 串口、485、IIC、SPI、CAN
    • 学习资料:野火、正点原子,项目实践
    • 本质:用代码驱动各种外设,实现对应的功能
  • 7.2、RTOS(实时操作系统)
    • FreeRTOS
      • FreeRTOS 是一种轻量级、开源的实时操作系统内核(RTOS),专门为嵌入式微控制器(MCU)环境设计。
      • 学习资料丰富
      • 学习资料:韦东山
      • 项目实践
    • RT-Thread
      • RT-Thread 是一款国产的开源实时操作系统(RTOS)

4.7、C++后端开发

  • 1、数据库
    • Mysql
    • Redis
  • 2、设计模式

五、嵌入式硬件基础

模电/数电基础

熟悉常用仪器仪表:万用表、电烙铁、焊台、示波器、信号发生器等

熟悉常见器件通信/传输方式/协议/接口/总线:串口、IIC、SPI、CAN、485、TCP/IP

会看或画基本原理图和PCB板

会看硬件时序图

会基本的电路仿真

六、常见开发工具

alt Linux指令

Git

Shell

Vim

GCC

makefile

GDB

交叉编译工具链

七、秋招准备

alt

1、简历

2、手撕代码

3、面经

alt

  • 自我介绍
  • 项目
  • C/C++
  • 操作系统
  • 计网
  • Linux
  • Stm32
  • 一些工具

4、模拟面试

#嵌入式##软件开发投递记录##嵌入式转岗的难度怎么样##25届秋招总结##牛客创作赏金赛#
全部评论
点赞 回复 分享
发布于 昨天 11:56 辽宁

相关推荐

评论
2
13
分享

创作者周榜

更多
牛客网
牛客企业服务