以下面经来自知识星球球友的分享,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)