以下面经来自知识星球球友的分享,26届小米秋招嵌入式面经:

一面

(1)自我介绍:我是xxx,就读于xxx,…

(2)通信协议了解过吗(SPI,I2C,UART)?选一个你熟悉的说一下,我选的是I2C协议(必须要真的懂时序)。

(3)I2C协议你是用到哪里的,代码怎么实现的?

(4)Linux下I2C驱动编程:I2C核心层、I2C总线层、I2C驱动层

(5)platform 与 设备树的区别

(6)linux 下怎么获取到设备树中硬件(板级)的信息

(7)TCP,UDP的不同之处,socket套接字编程了解吗,TCP服务器端的编程步骤,UDP和TCP socket编程哪里不同

(8)I/O复用,select、epoll,poll的区别

(9)linux字符设备驱动程序的设计流程,file_operations 中read write,应用程序怎么读取到字符设备中的数据;

(10)系统调用的过程?platform 总线驱动的设计?mmap函数?

(11)UART串口有时钟线吗,他是怎么保证数据发完之后对方知道你发完的,UART怎么保证数据的准确性;

(12)多个进程访问同一个文件时,文件描述符是一样的吗?

(13)uboot的启动流程了解吗;stage1 和 stage2 。uboot源码看过吗,其中的数组?(uboot代码必须理解)

(14)添加过uboot中的命令吗?linux文件系统的格式.

(15)多线程通信

(16)共享内存,进程间通信方式, 共享内存如果发生泄漏,怎么查看?ipcs -m?

(17)创建的设备文件 /dev/下的,读取时文件描述符一样吗?

(18)算法相关:反转链表,链表的头插和尾插法;

(19)画过原理图吗,用什么软件画的,AD? 那在AD软件中在如果根据原理图上的器件快速选中PCB图上的器件

(20)了解Makefile吗,Makefile语法格式?

(21)struct结构体的大小,字节对齐、数组 sizeof()大小;

二面

(1)给定一个字符数组,求它的 sizeof 的大小,字节对齐之类的;

(2)linux内核源码看过吗?linux内核启动流程,叙述一下;

(3)uboot源码看过吗?uboot的加载引导过程;

(4)linux内核移植做过吗,当时做的是哪一块的移植?

(5)linux文件系统有哪些?

(6)linux内核目录结构,linux查看内存的命令。

(7)自旋锁和互斥量的区别;

(8)还有一些比较简单的C语言知识,冒泡排序之类的

(9)在linux内核里怎么分配动态内存(kmalloc,内核中怎么创建线程:kthread_create)

Logo

智能硬件社区聚焦AI智能硬件技术生态,汇聚嵌入式AI、物联网硬件开发者,打造交流分享平台,同步全国赛事资讯、开展 OPC 核心人才招募,助力技术落地与开发者成长。

更多推荐