时间:2024-07-30 来源:网络搜集 关于我们 0
通知:代码随想录算法训练营 九期将在二月中旬(预计15号)开营!目前报名提前拉群,等着开营就好。
之前发文讲了嵌入式,面试都问啥?。
上文中的这位星球录友后面也分享了自己的嵌入式学习路线。
对想冲嵌入式的录友们很有帮助,所以也分享给大家,以下是他在知识星球里的分享:
抱歉拖了很久;(
嵌入式软件主要分两个大方向吧,一个是以arm、dsp为主的纯软件方向另一个是以FPGA为主的稍微偏硬件的方向。
FPGA和IC行业有关,即使不去IC可以去做图像识别和通信,今年薪资普遍较高。
以arm、dsp为主的软件方向又可以细分做linux驱动、汽车电子、图像、电机控制。
编程语言以C为主,会C++更好,但是C语言要非常牢固,尤其对指针要有比较深入的理解,这里推荐一个视频。
https://www.bilibili.com/video/BV1oq4y117Yb
这里出几道题,检验以下C语言功底。有些就是面试真题。
1、写一个尽可能优秀的MAX宏
2、int a[10][10] &a+1 和a+1是否相同
3、举例一个使用指向指针的指针俗称的二级指针的场合(void **)
4、int (*p)(void (*)(void *),int**);解释这个指针的含义
5、
#definecontainer_of(ptr, type, member) ({ \
const typeof( ((type *)0)->member ) *__mptr = (ptr); \
(type *)( (char *)__mptr - offsetof(type,member) );})6、#define BUILD_BUG(x) (sizeof(struct {int:-!!((x))};)) 解释这两个宏
7、如何在C语言中实现接口?
我认为嵌入式的两门基础课程就是计算机组成原理和操作系统
计算机组成原理建议学习CMU的CSAPP
https://www.bilibili.com/video/BV1iW411d7hd
操作系统可以学习南京大学的操作系统概述也可以学习MIT的6.S081
https://www.bilibili.com/video/BV1Cm4y1d7Ur
这两门如果学有余力可以学一下这一门数字系统设计和计算机体系结构
https://www.bilibili.com/video/BV1J54y1o7R5
我的简历项目一个来自于实验室的项目另一个是我学习mit的6.S081写过的实验lab。
学习的时候建议大家多敲代码,csapp和6.S081的lab都可以写到简历上,含金量非常的高,面试官非常喜欢问其中的细节,我在华为和大疆的面试中就多次被问到相关的知识。
如果真的想转这行的话建议买个开发板,如果时间财力都充裕的话可以买个ZYNQ开发板。既可以学arm又可以学FPGA。
嵌入式包含的领域实在太庞大了,我仅谈一下我秋招面试过的方向。
1、芯片公司的嵌入式软件
这个主要做芯片配套的驱动开发和操作系统移植,所以招聘上要求有一些驱动开发经验,对计算机基础知识和linux要求比较高,
2、消费电子
活比较杂,有做配套驱动的,也有做SDK开发的,还有图像处理的。大疆嵌入式工程师就包含以上方向。
3、汽车电子
我投的方向和控制有关,这个方向有开发智能座舱的,有地盘控制的。今年比亚迪大批量打包控制和计算机就有开发智能座舱这个方向,我面过的博世就是开发车身控制软件。
C语言做到写出来CSAPP的cache实验和malloc实验就可以,刷题建议刷个leetcode热门100题足够,熟悉基本的数据结构和算法。
卡哥的代码随想录刷完足够应付笔试,笔试主要是通讯协议、计组、C/C++、操作系统、计网。面试比较看重项目经验。
嵌入式最好有实验室的项目做支撑,适合机械/自动化/通信有原来的专业经验然后加上一定的计算机专业知识。
我本人的实力和眼界也有限,对嵌入式也能说管中窥豹,希望能帮到大家。有问题可以知识星球留言或者私信问我,一定知无不言。
以下问星球里录友问答:
我有两个问题想问下:
1、把csapp和6.s081项目写进简历有加分吗?会不会太烂大街了...lab本身是互相独立的,怎么串起来介绍?你提到的面试官喜欢问,含金量是大公司吗?
2、自动化/电子背景投芯片公司的话,你提到驱动开发,相对于芯片设计,是不是属于边缘?接触不到核心业务?你怎么看?
3、你最后选择去了哪?互联网和嵌入式岗都投吗?怎么取舍的?
谢谢😜
答:
1、不会,我简历写的项目是MIT的6.828,写了一个简易的操作系统内核,S081比828简单一些但是也算个内核开发。
面试问我的话我会和和Linux综合答,比如问我怎么设计的中断处理流程,我会答我怎么做的然后linux咋处理的,我比linux缺点在哪里。
算是面试技巧吧。大疆,oppo,华为都问过我项目的细节。
串起来我是通过面试官问我的时候我提到我写过malloc和模拟过cache然后面试官感兴趣就会问我
2、我认为芯片原厂的驱动开发不算边缘,驱动开发可以转内核。
但是相比于IC设计那还是设计重要一些。
我认为核不核心也看个人对技术的追求吧,芯片原厂舞台够大,芯片原厂会去做配套的RTOS甚至是编译器。嵌入式的天花板还是做内核。
3、没投互联网,我情况特殊,实验室有对口的部门,没有纯转码,个人对嵌入式感兴趣去的嵌入式。
我认为还是更喜欢哪一行就去哪一行钱少点无所谓,都不感兴趣选钱多的。
828和081是操作系统的话感觉是一个整体,像csapp这种的lab很难说成一个整体,你有什么建议吗?
感觉你是以csapp为辅助,中间提到,如果只有csapp怎么组织?
你最终去了芯片公司是吗?没去大疆/华为这种,或者车企做座舱开发
答:
嵌入式会问你内存管理,你就可以讲malloc底层实现讲malloc lab,还可以引申回答c++里面stl的分配器用的内存池技术。
csapp里有的lab 比如attack和bit就不太好讲出来。
你的理解没有错就是拿csapp当辅助多谈论底层的实现原理展示你技术栈的深度。
大疆方向不太喜欢而且加班太狠了,华为在上海不太想去。个人喜欢做底层开发,去做嵌入式操作系统了。
可以在知识星球置顶3,学习路线中找到 本篇原贴,欢迎星球录友找他交流。
直播预约:
知识星球最近发布了
代码随想录知识星球精华|最强八股文(第三版)计算机2023届年求职薪资PDF想加入星球的录友们可以抓紧一波!这里有很多优秀的人,有很多精彩的事!
加入星球之后,一定要看知识星球置顶的资料,绝对物超所值!
我在星球里详细回答了5000+个问题, 基本你目前的疑惑,你的前辈录友们在星球里都问过我了。
已经有1w+录友加入了知识星球,方向比努力更重要,一群人可以走的更远!