(嵌入式面经)第11章 20+公司面经杂谈(三):科大讯飞、阳光电源、蔚来
预计2025.03.11,完成优化/完善该内容,敬请期待!!!
(以下为学习过程中的粗略知识点,还未经过优化/完善,后续会变成更有条理的形式!!!)
介绍你实习期间学到了什么,项目中遇到了什么问题,怎么解决的。
八股:
1、gpio输入输出有哪几种
2、iic协议介绍以及时序
3、static作用
反问:
贵公司技术栈用RTOS还是LINUX
1.讲讲项目中如何去使用esp8266。
2.IIC接口地址位有几位,只有这一种模式吗,理论上能接多少外设,实际上能接多少,是什么影响的
在7位地址模式下,理论上可以连接127个设备(0x00和0x7F是保留地址),而在10位地址模式下,理论上可以支持1023个设备。
地址冲突:如果多个设备使用相同的地址,则会产生冲突,无法正常通信。
功耗和驱动能力:从设备和主设备的电流驱动能力也是一个限制因素。
总线信号质量:过多的设备可能导致信号衰减和噪声增加,从而影响通信质量
3.写过IIC驱动吗,为什么要这么去实现,简述一下
1. stm32里,串口接收哪几种模式,你比较常用什么模式,为什么呢。它是接受断如何判断数据接受结束的。
轮询模式:主循环中不断检查串口是否有数据可读。
中断模式:利用串口的中断功能,当数据到达时触发中断处理程序。
DMA模式:使用DMA控制器自动接收数据并存储到内存中,无需CPU介入。
常用模式:通常使用中断模式或DMA模式。
中断模式的优势在于可以减少CPU的负担,不必频繁轮询串口状态。
DMA模式适合大批量数据传输,进一步降低了CPU的负担,提高系统性能。
5.讲讲项目里mpu6050如何工作的,有哪些参数,有什么作用。
6.pid参数是自己调的吗,怎么去调节的。
9.项目中用到了FreeRTOS,自己移植过吗?
10.讲讲移植了哪些文件,他们有什么作用。
11.FreeRTOS如何去实现任务调度的。
12.FreeRTOS的多任务之间如何去进行通信的,什么方法,它实现原理是什么。
13.说说stm32的最小系统是什么。
14.聊聊C语言基础知识吧,说说什么是堆和栈吧,在mcu中程序运行的空间是什么样的。
15.static和const的区别,常用在什么地方,空间上有什么区别吗
16.static修饰的在其他文件能使用吗。
17.说说extern。
18.说一下局部变量与全局变量的区别。在MCU上空间上有什么不同吗?
19.反问
20.聊了聊讯飞的技术栈。
1.分享你在学校学习期间你觉得挺不错的学习经历,上的一些课有哪些独到的见解(第一次遇见这种问题,懵逼了)
2.设计模式:你对c++有哪些看法,主要用到了哪些点(我搞嵌入式的,主要用到封装),用到了哪些设计模式(我说单例)
工厂模式
定义:将工厂变成一个抽象类,在里面定义一个纯虚函数,具体生成什么产品交给子类继承去决定(抽象产品类-》具体产品类-》抽象工厂类-》具体工厂类)
单例模式(懒汉式、饿汉式)
定义:一个单例类只创建自己的唯一实例对象,有且只有一个,这个单例类提供了一种访问其唯一实例的对象的方式,可以直接访问,不需要实例化该类的对象。
作用:在整个程序空间中,该类只存在一个实例对象。
适配器模式
定义:适配器模式是作为两个不兼容的接口之间的桥梁。这种类型的设计模式属于结构型模式,它结合了两个独立接口的功能。这种模式涉及到一个单一的类,该类负责加入独立的或不兼容的接口功能。例如,读卡器是作为内存卡和笔记本之间的适配器。将内存卡插入读卡器,再将读卡器插入笔记本,这样就可以通过笔记本来读取内存卡。
其中适配器模式又分为类适配器和对象适配器
C++常用的11种设计模式_c++设计模式-CSDN博客
3.如何自己实现一个list
4.数据传入速度大于处理速度是怎么解决(我回答加个buffer)
• 增加缓冲区大小:
• 增加缓冲区的大小可以容纳更多的数据,使系统有更多时间处理数据,防止数据溢出。
• 多线程处理:
• 使用多线程将数据的接收和处理分离开来,一个线程负责接收数据并放入缓冲区,另一个线程负责从缓冲区取出数据进行处理。这种方法可以更好地利用多核处理器的资源。
• 优先级处理:
• 对数据进行优先级排序,优先处理重要或紧急的数据。较低优先级的数据可以延迟处理或在负载过大时丢弃。
• 流量控制:
• 实施流量控制机制,如令牌桶算法或滑动窗口协议,控制数据的流入速度,使其与处理能力匹配。
• 数据压缩:
• 如果数据量非常大,且有较高的冗余,可以使用数据压缩技术减少传输的数据量,从而减轻处理的压力。
5.让我自己说一些linux的知识,什么进程通信,进程管理的,想到啥说啥,属于是自己给自己提问题了
1、自我介绍
2、问项目细节和八股
(1)挑一个你最熟悉的项目详细介绍,说个人主要负责的工作
(2)在项目中怎么考虑控制的实时性
(3)介绍项目的软件架构是怎么设计的
(4)堆和栈的区别,static修饰的局部变量存放在哪里
(5)进程间的通讯方式
(6)c语言编译链接的过程(预处理 编译 汇编 链接)
(7)内联函数和宏函数的区别
(8)构造函数和析构函数什么时候会被调用
(9)笔试题最后一题的思路是什么?
进程调度策略有哪些?
Freertos进程调度策略是什么?
Linux进程调度策略是什么?
讲一下动态规划和贪心,除了动态规划和贪心还有哪些算法解决最优问题?
排序算法哪些用了分治思想?
归并排序,快速排序稳定性如何,时间复杂度是多少?
反问:
讯飞的培养策略,面试官对我的看法
1.自我介绍
2.sizeof与strlen不同,我只说了char s[100] = "0123456789"类似的情况
3.extern C的作用(没答出来)
4.堆和栈的区别,哪些变量使用堆,哪些使用栈
5.滤波器作用
6.为什么使用vector
7.项目成果
8.C++开发经验
1.自我介绍
2.介绍一个项目
3.(项目里用到了iic)问iic实现过程,地址是多少位(7比特加一个读写位),iic的SCL和SDA的IO口模式。还对iic展开了一些,我忘记了。问得挺深挺细。
4.c++问了函数重载,析构函数和构造函数。c问了strpy 和memorycpy 。 简历提了一嘴python,问了python里的pass的作用,list和元胞数组的区别。
5.简历里另一个项目有用到spi,问了spi和iic的区别。
其他忘了。
6看我提到了语音处理,问我怎么实现语音分析,时域转频域的方法,用过滤波吗,用过示波器吗,用示波器测什么,一般分辨率调到多少。
7.介绍了一下嵌入式工程师的四个方向。问我对哪个方向有兴趣。
智能指针中shared以及unique区别
2.10 阳光电源
阳光电源股份有限公司(股票代码:300274)是一家专注于太阳能、风能、储能、氢能、电动汽车等新能源电源设备的研发、生产、销售和服务的国家重点高新技术企业。主要产品有光伏逆变器、风电变流器、储能系统、水面光伏系统、新能源汽车驱动系统、充电设备、可再生能源制氢系统、智慧能源运维服务等,并致力于提供全球一流的清洁能源全生命周期解决方案。
2.11 蔚来
2.11.1 公司背景
蔚来是一家全球化的智能电动汽车公司
2.11.2 问题准备
自我介绍
针对项目聊理解 无八股
(二叉树应用,文件系统和内存管理之间的交互)
手撕
1 第一题leet88,easy。
两个有序数组合并,数组1预留了数组2的空间。
acm模式,输入写好了才跟我说不用写输入输出,直接写class solution吧。
我很笨的写了合并之后冒泡排序(不让sort)还写bug了。然后面试官告诉我可以开辟额外数组放进去。好吧,被预留空间误导了,上来就想着把2放进1里。
不过最好的方法不需要额外空间,可以看leet官解。
2 第二题leet451,中等。
一个字符串,按照各字符出现频率重新排序。
我没写出来,说了下思路。
3 面试官问交叉编译用过吗,我说我都用现成的ide的比如keil5 vsc。
4 问我linux了解吗,用什么命令。
不太了解,说了几个最基本的命令。
5 反问。
结束。
我以为会问项目 八股 自我介绍。结果都没hhh
显然要挂,就当长长见识了。
二面更新————————
来了个提问很慢的面试官hhh看半天才问一个。不过因为我答得快+没有做题,45min面完了。
1自我介绍
2问专业,因为我专业是海洋工程,比较少见吧。就了解了下专业、课程。
3问static,问volatile。答了。
4我说我非科班,自学的计网、操作系统、数据结构。数据库没学过。
他就问tcp握手挥手知道吧,我说知道。
他问如果客户端发送的tcp报文里的目的端口和服务端的端口不一致,会怎么样。
这我真不知道。
5他问线程进程,答了。
6问有一个设备要联网,怎么给他分配一个唯一的id。
我说直接用mac地址就是唯一的。如果要另外定一个id,可以用哈希函数。
7问了网络7层结构,我把表示层给忘了,淦。
8tcp和udp相比,udp的优点?
一般不都是问tcp优点么。。。我只说了结构简单,效率高一点,编程方便点。感觉没答到点子上。
9问项目。让我挑一个项目说。
其实我项目都比较拉胯(从程序角度来说都难度不大)。我就说了个最近在做的项目,也是毕业课题。
然后问答了几个来回。比如项目里的难点。两台设备的通信怎么做的(ros里封装好的通信😅)。
9.1问嵌入式,比如中断处理的步骤。基本都答了。
10我估计他实在没啥想问了,说看我英语六级比较高,让我用英语介绍这个项目。
我说我项目好多术语,我说了你也听不明白😂
他说那你简单介绍下自己的情况或者项目的情况吧。
我就临场发挥了一下(几年没说英语了,要命)。
他说还不错🌝🌝
11反问。我问我还需要自学下啥。
他说学一下数据库,学一下计网(实践应用一下)
,因为我计网就是背的知识点,细节一概不知hhh
说他们主要做车云互联的。
时间:2021.8.2
时长: 20:00-20:55 55min
1.自我介绍
2.说一说项目流程,以及项目中有什么做的不足的地方?
3在这个项目中你做了什么工作?
4.怎么进行电机的准确定位,有无反馈
5.pid算法
6.CAN通信介绍;CAN通信报文的标识符有几位?
7.用到了哪些嵌入式的操作?
8.用到了几路PWM?
9.有没有用到嵌入式系统?为什么不用?【无,但是和linux系统有点儿联系-引导了第二个项目】
10.简介第二个项目;项目实现了嘛?
11.之前的比赛为什么都集中在一个时间段?
12.说说linux系统和嵌入式系统的相似之处
13.线程和进程的区别和联系?
14.线程的通信方式你知道哪几个?说一说。
15.TCP和UDP区别,说一说tcp通信的过程
16.三次握手过程?
17。四次挥手时服务器和客户端哪个先关闭?【无所谓先后,都可以调用close(),作为发起关闭链接的一方】
18.现在的视频连线用的是哪个协议?为什么
19.你说管道通信实现比较简单,但之前不是说没在linux系统上编程嘛?【用的是vscode】
20.数组和链表有什么区别?
21.用过哪些数据结构?说说队和栈
22.说一说虚拟内存空间
23.代码:字符串逆转
24.再问一个问题:程序的编译步骤?
25.反问环节
反
剩余60%内容,订阅专栏后可继续查看/也可单篇购买
作者简介:仅用大半年时间0基础天坑急转嵌入式开发,逆袭成功拿下华为、vivo、小米等15个offer,面试经验60+,收藏20+面经,分享自己的求职历程与学习心得。 专栏内容:最新求职与学习经验,详细讲解了嵌入式开发的学习路径、项目经验分享、简历优化技巧、面试心得及实习经验,从测评,笔试,技术面,HR面,AI面,主管面,谈薪一站式服务,助你突破技术瓶颈、打破信息差,争取更多大厂offer。