大疆嵌入式面经

先介绍一下自己吧,重点讲讲嵌入式相关的背景和项目经历。

聊聊 Linux 的线程调度?

单核 CPU 的话,多线程是怎么轮流跑的?

好几个线程在,怎么决定谁先跑?

用过的 STM32 芯片,配置都怎么样?比如主频、Flash 和 RAM 大小。

在 STM32 上都做过些什么?

写过哪些驱动吗?

SPI 通信过程熟吗?有几条线?都叫啥?你用的时候速率设的多少?

用过 DMA 吗?给讲讲是啥?

SPI 的四种模式,知道吗?

开发调试时,碰到过什么棘手的问题吗?分享一下?

做过什么大点的软件项目吗?就是那种需要做分层设计的。

设计中间层的时候,都考虑了啥?

进程间通信用过锁或者同步吗?

进程拿不到锁,会怎么样?

假如低优先级的进程 A 拿了锁,高优先级的进程 B 是不是就得等着?

那再来个优先级在 A 和 B 中间的任务 C,它会抢 CPU 吗?

这样 B 不就得等好久了吗?明明它优先级最高,这问题有办法解决吗?

怎么给 A 提优先级?

A 的优先级要提到多高?

Linux 开发,你主要在用户态还是内核态?

用户态程序崩了,比如段错误,你怎么定位问题?

运行中的错误要怎么调?

程序内存上分哪几个段?

堆和栈有啥区别?

全部评论
强度有点高了
2 回复 分享
发布于 08-30 11:40 广东
这面试题还是挺有难度的,感觉面的怎么样?
2 回复 分享
发布于 08-28 17:36 湖南
这些感觉都熟悉一点,但是回答呀怎么回答啊,要是我回答肯定语无伦次了
点赞 回复 分享
发布于 09-14 18:21 安徽
感觉前面问的是基础八股,后面讲了一下优先级反转和处理,比较难的还是后面那个遇见段错误咋调吧,压力上来了前面的都不一定回答的上来
点赞 回复 分享
发布于 09-02 12:58 湖北
太难了吧,我靠
点赞 回复 分享
发布于 08-31 20:10 江西
校友大佬
点赞 回复 分享
发布于 08-30 10:19 广东
换我这个有嵌入式经验的,有些都未必能回答上来
点赞 回复 分享
发布于 08-30 09:45 陕西
大疆面试有点强度啊,有后续吗
点赞 回复 分享
发布于 08-29 23:10 安徽
可以问下是本还是硕嘛,rmer吗
点赞 回复 分享
发布于 08-29 17:48 湖北
佬是rmer吗
点赞 回复 分享
发布于 08-28 20:45 重庆

相关推荐

1.I2C协议时序I2C协议是两线制串行通信协议,物理层包括SCL时钟线、SDA数据线,支持一主多从架构核心时序包括起始信号:scl为高电平,sda从高到低跳变,标志通信开始scl为高电平,sda从低到高跳变,标志通信结束数据传输时:scl高电平时,sda必须稳定,低电平时sda可变化,准备下一位,每个字节八位,高位在前接收方在第 9 个时钟周期拉低 SDA 表示应答,不拉低为非应答主设备通过控制scl和sda生成起始信号,发送从设备地址(7位地址+1位读写位),等待应答后传输数据,最后停止信号结束2.I2C 协议的应用场景和实现我在项目中用 I2C 连接过温湿度传感器(如 SHT30)和 EEPROM,传感器通过 I2C 将采集的数据传给 MCU,EEPROM 通过 I2C 存储配置参数,3.Linux 下 I2C 驱动编程的三层结构回答:linux下I2C驱动为核心层、总线层、设备驱动层核心层:提供通用api,管理总线和设备的匹配关系,是连接总线层和设备驱动层的桥梁总线层(控制器驱动):对应具体I2C控制器,实现硬件时序,负责将核心层的抽象请求转化为实际的 SCL/SDA 电平操作设备驱动层(外设驱动):针对具体 I2C 设备(如传感器),定义i2c_driver结构体,实现probe(初始化设备)、remove(清理)等函数,通过核心层 API 与设备通信。4.platform 与设备树的区别platform总线:是Linux内核为无物理总线的片上外设(GPIO、定时器)设计的虚拟总线设备树:是一种文本文件,用树形结构描述硬件信息(外设、引脚、中断),替代传统板级C代码,驱动通过属性与设备树节点匹配核心区别:platform 是 “驱动 - 设备” 匹配机制,设备树是 “硬件信息描述工具”;现代内核中,platform 设备通常由设备树自动生成5.Linux 下如何获取设备树中的硬件信息内核通过of函数解析设备树,查找节点,6.TCP 与 UDP 的区别,Socket 编程步骤及差异TCP服务器编程步骤:socket创建TCP套接字bind绑定ip和端口listen监听连接accept阻塞等待客户端连接,返回新套接字recv收发数据close关闭连接UDP无需listen、accept、connect收发用sendto,需指定目标地址,UDP无连接概念,一个套接字可与多个地址通信7.IO复用:select、poll、epoll区别三者均用于单线程管理多个I/O流,8.Linux 字符设备驱动设计流程,read/write 实现及应用访问方式定义file_operations结构体,实现open/read/write/release等操作函数,注册字符设备:通过cdev_init初始化cdev,cdev_add注册到内核,分配设备号(alloc_chrdev_region),创建设备文件:通过class_create和device_create自动生成/dev/xxx(替代手动mknod。read从设备读取数据到用户空间,内核到用户write是从用户空间写入到设备,从用户到内核应用程序访问方式 1打开设备,获取文件描述符2.调用驱动的read函数,数据通过copy_to_user传递到buf3.调用驱动的write函数,数据通过copy_from_user从buf传入内核
站队站对牛:这个技术面相当强
查看8道真题和解析
点赞 评论 收藏
分享
评论
21
126
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务