• 0901~0916

设计模式了解吗?说一下单例模式;饿汉模式的具体实现。

项目

  • 项目中用到了 GPIO 模拟 SCCB,展开说一下
  • CPU的缓存有多少级?
  • LCD buffer 怎么管理的
  • 项目中 TIMER 的作用
  • 项目中测量数据部分代码量多大,多少行
  • EC200U 模块整个初始化流程
  • 为什么还要做一个显示端,不直接用web
  • 用过那些芯片和板子;
  • STM32 有哪些时钟源?
  • 项目中用到了什么通信接口
  • BL0910 芯片与 STM32 通信过程
  • 项目中遇到的难点
  • 遇到问题如何与人沟通
  • 项目比较急会怎么去完成
  • 项目相关—设备异构问题
  • 数据发生波动或者干扰的时候,如何去做数据处理?
  • 如何去评估温度准不准?
  • 用的芯片是什么芯片?用的什么库?
  • 介绍下AMP这个项目中的具体实现以及中间遇到的难题?
  • 说一下这个整体的AMP流程
  • 为什么要采用这样的一个启动方法,有什么优势?
  • 画一下spi转can?
  • 芯片选型的时候考虑的因素是什么
  • 问项目中相应的功能是如何实现的
  • 项目的背景是什么?这个项目主要是cpu设计的实验平台,传统的CPU设计实验主要是学生从0开始完成所有的CPU设计。本项目采用模块化思想,降低学生的学习曲线。
  • 整机配置文件是什么文件类型,怎么实现整机配置
  • 项目用开发板的配置信息
  • 标准库和HAL库在开发过程中的区别
  • 摄像头怎么加载的,具体是什么信号,驱动怎么搞的
  • 支持向量机原理
  • 项目有没有优化的空间
  • 项目中的环形缓冲区的机制
  • 使用轮询还是中断获取传感器状态的?中断处理函数中做什么?怎么配置中断触发的?
  • RS485传感器和串口的区别?为什么考虑到要使用RS485?
  • 处理后的帧率和丢帧情况?画面出现了什么情况? 对YUV和RGB有哪些了解?
  • 如何保证每次传输过去的都是最新的?采集频率?
  • 项目采样原始图像格式
  • 项目中TIMER用了哪些功能
  • 对数据分析的处理效率有没有要求,有没有量化的数据,怎么知道数据处理没有问题
  • OTA升级拷打,APP,BOOTLOADER,数据正确性。
  • 读取E2,在传输过程中,数据波形错误导致数据改变怎么办?

嵌入式

  • bootloader  程序要更新怎么办 更新bootloader的程序必须非常简单
  • 看门狗喂狗时间 默认5秒
  • 交叉编译
  • 什么是嵌入式
    • 定义
    • 嵌入式设备开发与电脑上软件开发的区别
    • 单片机包含哪些部分,作用等
  • 嵌入式系统中内存管理策略有哪些
  • flash接口是什么?
  • 可编程大小是指什么?
  • 外部flash有多大?Cpu的flash有多大,ram有多大?
  • flash的操作流程?

调试

  • STM32的芯片电压
  • 会不会在示波器上面做什么设置或者操作吗
  • 如何使用 keil 查找变量地址
  • keil 使用 stlink 如何进行硬件调试,设置断点什么的
  • 怎么解决程序崩溃?(core dump)什么时候出现程序崩溃?
  • 摄像头驱动底层,如何检测驱动错误
  • 如果打印日志,如何根据日志排查I2C驱动
  • Union 有哪些风险
  • 说一下堆栈泄露,什么方法可以检测这个堆栈泄露
  • panic了怎么调试

计算机体系结构

主要问对架构的理解,从虚拟内存到物理内存,从页表项到dirty位,从缺页到meltdown,然后再到指令流水线。 计算机系统有哪些部件构成

  • cmake写一个动态库,怎么写
  • 动态库和静态库
  • BIOS的源码看过么   用汇编写的么  还是 C
  • 说一个熟悉的操作系统启动的过程

启动流程

外设

  • 设计双机通讯协议怎么设计
  • 熟悉哪些通讯技术?哪些是异步哪些是同步?
  • 使用外设发现功能不对,那你首先会检测什么东西呢
  • i2c,spi,can,uart从速率,稳定性,传输距离排序
  • 设计一个私有协议,从压缩,加密,分包角度来思考

GPIO

DMA

定时器

ADC

  • ADC片内还是片外,采样精度,采样范围多大
  • ADC采样原理
  • ADC 用的位数,速率多少
  • ADC的几种工作模式是什么?
  • ADC 数据对齐是什么?
  • ADC精度
  • ADC怎么实现的

CAN

  • 用过can总线吗,介绍一下
  • can总线的底层线与机制
  • CAN总线多主多从如何实现仲裁
  • can总线,缺点是什么,仲裁为什么能解决竞争问题

I2C

SPI

  • spi 的信号接收时工作的过程
  • 有没有测过SPI的波形,怎么测的
  • 用SPI接受过哪些数据,这些数据有显示吗
  • 软件SPI和硬件SPI
  • SPI/I2C相关(基本时序,调试,以及中断的通讯方式,从机往主机通讯方法,SGI、PPI和SPI)
  • SPI的时序?

UART

中断

C

  • 如果只想让一个函数被调用一次,后续可以直接返回结果,该如何做?
  • C语言如何实现多态
  • 浮点数如何判断相等,为什么会出现精度问题
  • ARM RISCV区别
  • 平时编程用c11还是c98
  • C语言的基本数据类型有几个,ARM中INT型16位有几个字节
  • 结构体和联合体的区别
  • 位运算,将第4~6位改为101
  • 什么是字节对齐
  • 全局变量和局部变量区别、作用域、生命周期、内存存储位置
  • 大小端,字节序
  • 为什么需要头文件
  • 头文件分尖括号和双引号,应该如何写引入的顺序
  • float可以移位吗
  • 就是要float移位怎么办 可以用指针强转
  • const和define区别。
  • 位域的概念?
  • 位域是什么,有什么作用

内存管理

  • 堆栈指针是怎么初始化堆栈的即sp怎么被初始化的
  • realloc和malloc的区别
  • 代码里,如何防止内存泄漏或者内存越界的问题?
  • 变量分配在内存什么区上,内存的几个段,为什么不能把变量全分配在栈上
  • 内存包含哪些分区?代码区、堆区分别用来存放什么?
  • malloc 和 free的原理 free为什么不用传入参数就可以把内存释放掉
  • malloc与new
  • malloc内存分配算法是什么
  • Malloc 底层实现
  • 内存碎片
  • 内存对齐
  • 内存管理的算法
  • 内存映射,频繁访问内存,需要使用什么关键字
  • 栈的作用 函数调用管理,局部变量存储,控制流,递归调用,空间高效,调试支持
  • 栈溢出的原因
  • 怎么设计线程池更合理?

编译流程

  • C语言传递参数的方式有哪几种?
  • 汇编的常用参数是什么
  • 形参和实参区别。
  • 字节对齐是什么意思
  • 宏定义和inline函数区别
  • inline内联函数的作用
  • 函数调用 传递参数 16个 和 3 个有什么区别
  • define怎么编译进去的 没有编译--预处理文本替换
  • C编译过程,编译后有多少个内存段(就是操作系统里面学的内存空间分布)
  • 用什么命令把c文件生成可执行文件
  • 程序编译阶段都有哪些,具体步骤,每一步用到了哪些指令
  • gcc编译过程
  • 预处理之后还会做什么工作啊?每部分都有什么作用呢?
  • 如果A函数调用了B函数,中间发生了什么?(回答压栈和出栈),这个对应汇编里面的什么指令?
  • 如何A函数中有个变量叫abc,B函数中有个变量也叫abc,A中调用B,会出现问题吗?
  • 你了解栈针吗?讲解一下工作原理?
  • i++和++i哪个效率更高?为什么?
  • 局部变量和全局变量可以重名吗?为什么?
  • 局部变量存放的区域在哪个位置?(栈or堆)
  • C函数的调用过程
  • 静态变量、局部变量、全局变量
  • GCC编译一般分为那几部分?

关键字

  • define是什么意思啊?(说了预处理)
  • #define 和enum 区别
  • inline的作用和起到的效果
  • volatile关键字的作用
  • 为什么用静态函数,什么时候用
  • static关键字具体讲讲,如何实现在文件外访问static修饰的函数
  • typedef和define有什么差别
  • sizeof和strlen,那如果对一个字符串用sizeof和strlen有差异吗
  • sizeof 是对什么进行操作的
  • static修饰的全局变量的作用域,如果想在其他文件访问static修饰的全局变量,应该使用什么方式

指针

  • 一级指针,二级指针
  • 结构体的指针+1,指针加多少;
  • 数组名与指针的区别
  • int*aint*a[10]int(*a)[10]int (*a[10])(int)的区别
  • C语言怎么求变量所占字节大小
  • 访问空指针发生什么?发生后如何解决?用什么解决?
  • 指针与数组
  • 野指针是什么,产生原因。访问野指针会导致运行中出错 。一般会产生什么错误信息。如何排查。
  • 回调需要注意什么
  • 指针函数和函数指针的区别
  • 野指针和悬空指针的区别
  • 一个指针p指向数组b,sizeof(p)的大小
  • 结构体和联合体的区别,改变他们成员的值,其他成员会不会改变
  • 函数指针一般用在什么场合
  • 函数指针在结构体起什么作用
  • 函数指针还有什么别的使用场景
  • 回调是不是用函数指针去实现的

C++

  • 深拷贝浅拷贝
  • C和C++中struct的区别
  • c++里的try catch throw
  • C++ 指针和引用的区别
  • C/C++哪个更熟悉,他们之间有什么区别
  • 什么时候用c++更好
  • C++多线程
  • 一个空类的大小,为什么
  • nullptr
  • 硬链接和软链接的区别

面向对象

  • 多态在编译器角度的底层实现原理。
  • 函数重载的话,传入参数个数不同,会发生重载吗?return值不同,会发生重载吗?
  • c++的基类和派生类的构造析构顺序
  • 多态解释举例,这样做的目的
  • 析构函数为什么需要是虚函数
  • 面向对象三大特性
  • 虚函数、虚函数表
  • C++的一个类里可以有几个析构函数?
  • 拷贝构造、引用可以去掉吗,去掉会导致什么问题
  • 引用与指针的区别
  • override关键字 显式地指定成员函数意图覆盖基类中的虚函数
  • 什么是纯虚函数,使用场景
  • 函数模板和类模板的区别
  • sizeof 一个类(两个int私有变量) 是多少 8

c++11

  • 右值引用了解吗
  • 智能指针
  • C++的语法新特性
  • 智能指针底层原理?
  • 为什么需要弱指针
  • sharePtr是线程安全的吗
  • 右值引用?
  • auto和decltpye的区别
  • move和forward的区别
  • 左值和右值的区别

STL

  • vector扩容原理?
  • array和vector
  • vector和list区别

QT

  • QLayout,QT基于指针的集合继承,QT线程相关的类,QT定位焦点,QT embedded,元对象,
  • QT实现了哪些功能,登录是怎么实现的,用户名和密码有加密吗
  • QT显示部分代码量多大,多少行
  • QT编译后文件大小多大
  • QT版本号是多少
  • QT是用的Creator 还是QML ?(有个项目是用的QT)
  • 对里面的控件以及信号与槽了解不?

ARM

  • ARM芯片之间的差别是什么吗
  • 汇编、机器指令,还有指令,以这三者之间的有什么关系吗
  • 讲讲指令集什么概念
  • ARM系列本质有什么区别(ARM-M3/M4)
  • PC寄存器的作用
  • 说一下你最熟悉的寄存器?使用方法(我一开始说的是OTA中的VTOR寄存器,但是面试官后面指出我想让你说类似PC,也就是ARM架构中的那些寄存器)
  • ARM的启动流程
  • arm的工作模式有哪些

FreeRTOS

概念

  • RTOS 的作用,主要组成成分。
  • 介绍一下freertos的任务管理、内存管理、中断管理
  • 操作系统创建的时候会给那些参数,操作系统源码看过吗
  • 介绍下AMP和SMP的区别
  • AMP主要是做什么的?
  • FreeRTOS的和linux操作系统的区别?
  • 为什么FreeRTOS相比于Linux的实时性更好?
  • FreeRTOS的实时性怎么体现的
  • 裸机和RTOS,如何挑选,包括Linux驱动

任务调度

内存管理

数据结构

通信原语

  • 原子变量会引起死锁吗
  • 在FreeRTOS中如何保证原子性操作
  • 抢占过程中,资源如何保证(并没过多考虑,使用双缓存)
  • 信号量是怎么传递的
  • 消息队列通讯的原理
  • 消息队列开辟了多少空间?
  • 计数信号量是存在哪里的? 开辟了多少空间?
  • 多线程安全
  • Task之间资源竞争了该怎么处理?
  • 线程间通信是什么样子的啊?(我只用了事件标志组)
  • 多核间有哪些通信方式?具体是怎么通信的?
  • 锁机制有哪些,其内部怎么做到的
  • 互斥信号量实现原理

计网

  • epoll连接断开时返回的故障码是什么
  • socket连接断掉了怎么办
  • TCP的SYN攻击是什么,有没有办法解决和避免(还有一些TCP有关场景题)
  • IP地址子网掩码的作用
  • DNS作用
  • 服务端如何监听客户端
  • 服务端如何接收客户端请求
  • 服务端accept多个请求采用什么模型处理
  • 粘包问题
  • tcp滑动窗口的过程
  • TCP发送数据过程中丢包怎么处理
  • select、epoll区别
  • ARP
  • 通信实时性是通过什么手段去保证的
  • 无线网卡和有线网卡通讯,两者从通讯协议出发的区别
  • 查看网络设备是否在线用什么?ping属于什么协议
  • http端口号?
  • 计网的应用做的多吗,Socket有没有用过?
  • tcp稳定性
  • TCP的拥塞算法
  • 物联网常用通信协议(Zigbee、LoRa和NB-IoT)几种的优缺点对比
  • WiFi模组通信的校验、应答、重发机制怎么实现的
  • OSI七层网络
  • HTTP的三次握手和四次挥手
  • NACK 和 ACK的区别
  • IP地址如何转化成Mac地址

MQTT

  • MQTT 的优缺点
  • 介绍一下MQTT协议,需要配置哪些参数
  • mqtt的通信过程

无线通信

  • 蓝牙的底层协议?
  • BLE和经典蓝牙的区别

电路

数电

模电

  • 电阻电容电感在电路中的作用
  • 有功功率、无功功率概念、区别?
  • 项目中用到了哪些电能参数,检测原理是什么?
  • 运放知道么,说一说,三极管的作用;
  • 上拉下拉推挽的外围电路是怎么实现的
  • GPIO引脚配置
  • 高阻态的理解

规划

  • 讲一下你工作这些天有什么体会?或者学习上有什么收获?
  • 问我对公司评分,我直接说8~9分,然后问原因为什么不是10分?
  • 组织能力怎么体现
  • 如果领导给你了任务,你感觉压力大,该怎么办?
  • 举个列子说明一下自己的个性特点
  • 说一个项目的难点。怎么解决的?解决后提升了多少?有考虑过为什么能解决?
  • 领导和同事在组会提出批评(甩锅)如何应对?
  • 公共场合倾向于表露自己的情绪还是喜怒不形于色
  • offer情况,薪资期望
  • 介绍了工作内容和强度(强度是真不低)
  • 嵌入式开发最困难的问题是什么?
  • 投递的考虑因素
  • 如何看待加班
  • 职业规划与城市,就业所选择的行业
  • 有没有npy,定居意向之类的
  • 毕业后的工作地点是怎么想的?
  • 你比较看中的就业方向是什么?
  • 类似于那种互联网厂你考虑吗?
  • 你选择的工作地点,最后强调工作以时间要求、质量要求为准,完成不了自己或者组内想办法解决
  • 期望薪资
  • 学习途径
  • 为什么转专业
  • 问个人意愿。想要从事什么方向?
  • 为什么选择我们公司
  • 应聘这个岗位的核心竞争力
  • 对于加班的看法
  • 家里情况
  • 技术方向
  • 学习能力
  • 问题解决思路
  • 个人兴趣爱好
  • 除了简历外还有没有项目
  • 问接不接受10 10 5加班强度
  • 英文介绍+英文介绍自己的一个项目,问遇到没有了解的问题如何解决,同事之间产生分歧如何解决之类的这种问题,主要考察英文水平和解决能力问题
  • 实习期间主要的工作内容,对研发类和应用类的看法
  • 举一个自己感到自豪的经历,
  • 遇到没有了解的问题怎么解决,
  • 工作意向如何,父母对工作地的看法;
  • 用英语讲讲上周末干了什么,英语讲讲未来几年打算做什么
  • 最难忘的事情
  • 最难处理的事情
  • 遇到难处理的事情怎么办
  • 薪资得不到满足怎么办
  • 能否接受加班
  • 期望工作地址+期望薪资+简历提到的比赛+英语怎么样
  • 自我评价优缺点
  • 是否有当领导或者负责人的经历,展开讲讲
  • 是否有和同学同事发生冲突过,怎么解决
  • 找工作比较看重的三个点
  • 最有成就感的事情
  • 是否做过比较冲动的事情
  • 平常课余生活喜欢做什么
  • 兴趣爱好
  • 抗压能力咋样,举个例子
  • 你学习能力怎样,体现在哪里,分享一些学习方法。
  • 选城市的一些思考,就业方向的思考。
  • 分工情况、项目加班情况
  • 有没有为项目失眠过
  • 项目合作中如果别人都质疑你该怎么解决
  • 项目合作中意见不统一怎么解决
  • 遇到压力怎么办,自己会有什么体现
  • 从小到大印象特别深刻的事情
  • 什么东西驱动你好好学习的
  • 花时间最多的项目,最难的问题。
  • 问看过什么计算机软件的书
  • 优秀的嵌入式软件工程师应该具备的东西?
  • 外企和国资背景单位你怎么看待
  • 项目内容、负责的工作、遇到的难点和解决方法、成员意见出现分歧怎么解决等等
  • 了不了解华为文化以及怎么理解
  • 压力大的时候怎么排解
  • 遇到压力最大的事情
  • 介绍对嵌入式软件工程师的认知
  • 问家庭背景,来深意愿,是否想去体制内,对工作选择看法,个人性格特征。最讨厌的哪类人,如果他是领导怎么办,秋招准备了多久,是否在乎工资高低。

英语

  • 英语介绍 自己的优点和缺点

反问

  • 晋升路线(技术&管理)
  • 公司部门主要业务
  • 培养机制
  • 面试流程是怎么安排的?如果能进入下一次面试,大概什么时候会给个确定的消息?
  • 光伏逆变器中的嵌入式主要做什么工作?单片机,数据交互,ad采样,数据逻辑的控制
  • 公司在哪些地方有岗位?岗位充足吗?西安上海杭州..,总部宁波,没说岗位是不是充足
  • 如何分配工作地点?根据需求分配
  • 面试流程:技术面 - 总监技术面 - hr谈薪
  • 一年出差多久
  • 做Linux还是mcu
  • 之前提问都是硬件相关的多、你们部门开发啥的;
  • 既然是嵌入式软件岗,做软件多一点还是硬件多一点;
  • 人员规模
  • 业务方向

建议

可以买一块通用的板子,自己来移植内核再到自己来编写相应的驱动程序,最好是对整个硬件的交互有一个深刻的认识,面试官说我目前大概是停留在一个中间层及以上的一个开发应用,可以再从寄存器、内核、设备树的底层来出发考虑