秋招:小米 嵌入式 1面+2面(近100个问题 全面涵盖linux内核!!)

小米系统安全解bug岗,一二面将近问了100个问题,而且涵盖很广

一面 9.14

  1. 实习内容
  2. 驱动加k载流程
  3. 加载过程会做检测嘛
  4. 如果一个驱动所依赖的符号表在内核里没有会发生什么
  5. 加载过jj程中的重定向
  6. ko和直接编译进内核的驱动文件有啥不一样? 加载过程不一样
  7. insmod和modprobe有啥区别
  8. modprobe可以加载依赖
  9. 并行
  10. 如何做CPU的测试
  11. 遇到的问题
  12. 实现了那些gdb
  13. 收获了什么,为什么做这个
  14. I2C器件都有那些,有啥功能
  15. 几个马达,怎么控制转向?
  16. gstreamer使用过程中会格式转换么?
  17. 配置的I2C速率
  18. I2C时序
  19. 小车上有几个线程?
  20. 多线程遇到过什么问题?
  21. 原子变量怎么实现的?
  22. CPU还有什么提升的地方
  23. 原子变量用于什么场景的保护 用于多线程或多处理器环境中,确保对某些共享数据的无锁操作,避免竞争条件(race conditions)和数据不一致问题
  24. cache的作用?
  25. 缓存插入的方式(随机、LRU)
  26. 什么情况下缓存会导致效率变慢
  27. 什么情况下会清空TLB
  28. 设备树怎么理解
  29. 内核怎么得到设备树的信息
  30. 改过设备树么?
  31. 看过啥linux的源码
  32. 有那些锁?
  33. 互斥锁和自旋锁的区别
  34. 互斥锁可以嵌套么?
  35. 为什么会死锁,用一个场景描述
  36. 内存泄漏怎么查看?
  37. 越界怎么检测?
  38. free后再使用可以检测出来么?

二面 9.20

  1. 设备树配合pinctrl怎么配置
  2. pinctrl不同的函数集是用来配什么的
  3. gpio_chip测试了什么
  4. v4l2底层改了什么
  5. 调摄像头配置么?
  6. v4l2应用层的使用
  7. v4l2中拿取buffer内容
  8. I2C发送放在哪里?
  9. I2C设备树里都会配什么
  10. I2C的协议
  11. I2C的驱动框架
  12. 字符设备驱动的流程,api
  13. class_create的作用 内核同时提供了class_create()函数,可以用它来创建一个类,这个类存放于sysfs下面,创建了这个类,再调用device_create()函数来在/dev目录下创建相应的设备节点。 这样,加载模块的时候,用户空间中的udev会自动响应device_create(…)函数,去/sysfs下寻找对应的类从而创建设备节点。
  14. file_options函数集有哪些
  15. poll这个文件接口是干嘛的 用于异步通知 非阻塞I/O+poll = 查询设备是否可访问+设备可访问后再通知用户进行处理
  16. tcp的服务端和客户端的链接api 服务端socket->bind->listen->accept 客户端socket->connect
  17. 总线匹配流程
  18. pinctrl的配置在realy_probe么?
  19. spi协议
  20. spi总线的数据结构
  21. 串口有几根线 txd rxd gnd
  22. 设计CPU有参考别的架构么?
  23. 5级流水是什么
  24. 虚拟外设有哪些?
  25. 虚拟转物理地址的过程
  26. TLB和MMU
  27. 页表项里的地址是物理地址还是虚拟地址
  28. 缺页中断的流程
  29. 缺页异常是用来干什么的?
  30. malloc会建立好映射关系么? 用的时候才会建立
  31. 匿名页和文件页 匿名页是指没有直接关联文件的内存页。它们通常用于进程的堆、栈、全局变量、共享内存(如 mmap 的匿名映射)、动态内存分配(如 malloc)等。这些页在进程运行时动态创建,不需要与磁盘文件相关联 文件页是与磁盘文件相关联的内存页。这些页用于将文件内容映射到内存,允许应用程序对文件进行高效的读写操作。文件页的主要用途包括内存映射 I/O(Memory-mapped I/O)和程序的代码段、数据段的加载。

区别总结

来源

动态内存(堆、栈、共享内存)

磁盘文件(代码段、数据段、内存映射文件)

与文件关联

交换(Swap)

可以交换到交换空间

修改后可以同步回文件或交换到交换空间

主要用途

堆、栈、共享内存、动态分配内存

代码段、数据段、文件 I/O

内存管理中的作用

  • 匿名页:用于分配进程执行所需的动态内存、栈、共享内存等,确保进程有足够的私有工作内存。
  • 文件页:允许文件系统与内存交互,支持内存映射文件 I/O,使程序加载更高效,支持代码共享,减少内存使用。

32. 伙伴系统作用

33. 有哪些zone

34.arm64有DMA还是DMA32 DMA是x86的

35.有哪些迁移类型

36.slab介绍一下

37.slab node?

38.页面分配的流程

__get_free_pages 从各个ZONE中找一个能分配的页 剩下按照标志进行分配的处理(清零等)
	>alloc_pages
		>alloc_pages_nodemask

39.进程调度

40.CFS是什么

41.CFS的调度周期

  • 权重总和:表示所有可运行任务的权重之和,每个任务的权重由其静态优先级(niceness 值)决定。 CFS 使用“vruntime”(虚拟运行时间)来决定任务的优先级,每个任务的 vruntime 随着实际运行时间和其优先级变化。在调度时,CFS 会选择 vruntime 最小的任务执行。

假设目标延迟为 20 毫秒,系统中有 4 个同等优先级的任务(权重相同),调度周期为:


\text{调度周期} = \text{目标延迟} \times \text{任务数} = 20\ \text{ms} \times 4 = 80\ \text{ms}
每个任务将在 80 毫秒的调度周期内获得 20 毫秒的 CPU 时间 43. RR和FIFO的区别 44. RR是怎么管理的? 优先级队列 45. 抢占的时机 比较重要的是中断返回的时候也可以抢占 46. 中断注册流程 47. 放在什么数据结构? 48. 申请的中断号是硬件中断号还是软件中断号? 硬件中断号 49. 锁 50. 自旋锁和互斥锁的区别 51. 中断下半部有了解么? 52. tasklet和工作队列的区别 53. 软中断都在中断上下文中么? 不是 如果太多的话 有的会开一个线程 54. 软中断中是中断是开着还是关着 55. 文件系统了解么? 56. 文件名存在哪 dentry 57. IO的什么东西没听清

9/29 hr面

直接一个电话打过来大概聊了十分钟不到,十分标准的hr面。祖籍、成绩、比赛、获奖等等,应该根本没看简历,就依次问问题。

嵌入式学习路线+面经合集 文章被收录于专栏

1. 自我介绍:高通、Oppo(sp)、vivo(sp)、小米(ssp)、荣耀(26k*12+80k)、华子(报批中)、美团、韶音、经纬恒润、乐鑫、TPLINK、中兴 2. 内容: 1.嵌入式学习的资料和路径 2.所有面试的题目和解答(持续更新)、对评论的快速解答 3.各种碎碎念 3.整理不易,buy me coffee☕️,为了回馈牛客和各个粉丝,文章都会先试读几天,热度过了再收录~

全部评论

相关推荐

11-18 16:08
福州大学 Java
影流之主:干10年不被裁,我就能拿别人一年的钱了,日子有盼头了
点赞 评论 收藏
分享
评论
点赞
5
分享
牛客网
牛客企业服务