【Linux】嵌入式面试问题总结

Linux嵌入式面试问题大汇总

应用篇

一、C语言

1、static、const、volatile关键字有什么 作用?

2、const * 和 *const的区别?

3、#include< > 和 #include” ” 有什么区别?

4、声明变量和定义变量的区别?

5、如何避免头文件重复包含、嵌套问题?

6、const 与 # define 相比有何优点?

7、void指针就是空指针吗?有什么作用?

8、野指针是什么?如何避免?

9、值传递与址传递?

10、大小端字节序的区别,如何判断?

11、为无符号类型变量赋值时,数据类型应怎样转换?

12、memcpy、memmove自己实现?

13、什么是回调函数?钩子函数?

14、全局变量和局部变量的存储方式有什么区别?Linux进程虚拟内存分布?

15、结构体对齐问题?

16、内存泄漏是什么?如何定位内存泄漏?

17、面向对象的编程的思想?

18、可变参函数的使用方法?

二、编译问题

1、gcc编译器编译的完整流程,分别有什么作用?

2、C++如何调用C语言函数API?

3、写一个最简单的Makefile?

4、Makefile的伪目标是什么?有什么作用?

5、objdump、readelf、addr2line等反汇编相关命令的使用?

6、CMake工具是否使用过?

7、什么是交叉编译?为什么需要交叉编译?

8、编译乱序和执行乱序问题?

9、静态库与动态库的区别?

10、动态库的编译路径、加载路径?

三、Linux基础

1、如何查看CPU信息?如何查看CPU的使用情况?

2、如何查看内存使用情况?

3、查看进程、线程状态?如何杀死进程?

4、如何文件修改权限?0664代表什么意思?

5、文件描述符0、1、2代表什么?

6、文件的7种类型有什么?

7、Linux常用的文件系统类型?如何查看文件系统类型?

8、文件IO和标准IO的区别?

9、空洞文件的作用?空洞文件的占用磁盘空间大小?

四、进程&线程

1、进程有几种状态?如何转换?

2、进程与线程的区别?

3、进程间通信方式有哪些?

4、多线程较多进程的优势?

5、如何创建一个线程?线程如何回收?

6、同一个进程下的线程,哪些资源是共享的,哪些是私有的?

7、线程同步机制有几种?互斥锁、条件变量如何使用?

8、什么是死锁?如何避免死锁?(死锁的必要条件?)

9、如何创建一个守护进程?

10、高并发问题如何处理?

11、共享内存通信原理?

12、同步与异步区别?阻塞与非阻塞区别?

13、select、poll、epoll有什么区别?

14、常见的信号?可靠信号的特点?

15、线程池的创建方法?

16、什么是符号链接?

五、问题调试

1、GDB常用调试命令?如何调试正在运行的进程?

2、系统卡如何快速定位?

3、网络不通如何快速解决?

六、数据结构

1、数组和链表的区别?(逻辑结构、内存存储、访问方式三个方面辨析)

2、循环链表的实现?

3、队列和栈的区别?

4、二叉树的遍历?

5、判断单链表是否有环?

七、网络编程

1、TCP 和UDP的区别?优缺点?

2、OSI 七层模型 和 TCP/IP 四层、五层模型?每层的主要作用?包含的常见协议举例子?

3、描述TCP的连接与断开过程(三次握手、四次挥手)?

4、ping命令的实现原理?

5、实现一个TCP的客户端和服务器的流程?

6、IP的分类?组播IP与广播IP?

7、windows文件传输到Linux的方法?

八、算法

1、算法复杂度计算方法?(时间复杂度与空间复杂度)

2、会哪些排序算法?快排和冒泡排序的时间复杂度?

3、树的遍历

4、贪心算法、深度优先算法、广度优先算法等

十、数据库

1、熟悉哪些数据库的使用?

2、sqlite数据库的基本使用,包括增删改查?

十一、代码管理工具

1、是否使用过svn或git的常用命令?

2、svn或git提交代码流程?

3、merge功能是否会用?

十二、交换机相关问题

1、 交换机报文转发流程?

2、mac和phy的区别?

3、如果有1M的mac学习容量,哪种数据结构查找效率最高(不考虑增删),为什么?

4、Vlan协议IEEE 802.1Q的内容?VLAN的作用是什么?

5、交换机端口类型的区别Trunk 、access、 hybrid ?

6、你最熟悉的交换芯片,芯片带宽多大?支持多少mac地址学习?还支持哪些特性?

7、交换机和路由器分别工作在7层模型的哪一层?有什么区别?

8、二层交换跟三层交换的区别?

9、ACL匹配策略与行为?

10、mac与phy的连接方式?千兆口的时钟频率?

11、交换机打流测试方法?

12、网络风暴的产生常见原因?如何解决?

13、VLAN虚接口的作用?

14、了解QOS技术吗?QOS的作用?

驱动篇

一、Linux内核

1、描述内核编译过程?

2、描述内核启动流程?

3、zImage与uImage的区别?

4、进程管理的实现原理

5、并发与竞态产生的根本原因?

6、进程调度算法?进程优先级?调度策略?

7、实时系统与分时系统的区别?

8、多核CPU如何指定在某个核运行程序?

9、用户态与内核态的通信方式有哪些?

10、为什么要将中断分为上下半部?上下半部机制有哪些?工作队列与tasklet的区别?

11、优化内存屏障的作用?

12、VFS虚拟文件系统结构?

13、proc文件系统的内容?

14、linux内核在启动过程中遇到某些问题会打印系统崩溃报告Oops,报告中主要打印哪些内容?

15、常用的内核调试方法有哪些?

二、驱动

1、驱动程序的三要素?

2、驱动的开发方式(静态、动态)?

3、驱动开发与应用开发有什么不同?

4、加载删除模块命令?如何查看驱动是否加载成功?

5、驱动加载时如何传参?

6、驱动模块符号导出方法?

7、file_ops结构体包含哪些常用的方法?

8、字符设备驱动框架编程流程?

9、gpio如何高效获取上下沿变化?

10、你熟悉的驱动子系统?gpio子系统了解吗?

11、platform架构分别分为哪个部分?他们通过什么进行匹配

12、字符设备驱动、块设备驱动不同?

13、sys文件系统节点的创建?

14、伙伴算法申请内存?

15、举例常见的异常类型?

16、设备树的作用?

17、根文件系统构建方式(busybox、buildroot)?

18、磁盘挂载命令?

19、DMA设备的作用?

20、内存测试、CPU压力测试、磁盘读写压力测试是否做过?

21、系统时间与硬件时间的同步?

三、通信总线

1、串口的常见波特率?帧格式?

2、IIC的时序图?

3、IIC子系统驱动框架?

4、SPI的时序图?

5、IIC与SPI对比优缺点?使用场景?

6、对CAN总线的理解?CAN的帧ID范围?帧结构?帧类型?终端电阻的作用?

7、CAN的实时性(CAN ID)?CAN仲裁机制原理?

8、CAN与CANFD的区别?

9、双工模式的理解?串行与并行总线的区别?同步与异步总线的区别?

10、pcie的枚举过程?

四、u-boot

1、uboot编译流程?

2、uboot启动流程?如何向内核传参?

3、uboot常用命令?boot下读写寄存器命令?

4、bootcmd和bootargs参数的作用?自启动参数如何设置?

5、为什么boot可以ping同电脑,电脑ping不同设备?

五、ARM架构

1、简单描述一下ARM处理器的特点,至少说出5个以上的特点。

2、ARM内核有多少种工作模式?有几种异常模式,有几种特权模式?

3、异常中断处理流程(4大步,3小步)

4、ARM架构与X86架构的区别?开发时有什么要注意的?

5、ARM CPU寄存器和指令集?

6、描述一下什么是处理器现场,如何进行保存现场?

7、什么是满栈、空栈,什么是增栈、减栈?

8、ARM体系中异常向量表?

9、ARM程序生成的bin文件映像中包含哪些内容?

六、硬件基础

1、是否了解芯片集成方案设计?

2、时钟倍频与分频?pll?

3、芯片选型的考虑因素?

4、单片机与Linux设备的区别?优缺点?

5、soc由哪些部分组成?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

G-1科罗纳

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值