海康威视 Linux 开发一面面试题总结
一、操作系统与进程相关
- 进程与线程进程与线程的区别用户态和内核态切换进程上下文和中断上下文区别线程安全与临界区概念
- 进程调度Linux 调度策略(SCHED_OTHER、SCHED_FIFO、SCHED_RR)时间片和优先级调度阻塞和非阻塞 I/O 对调度的影响
- 同步与互斥信号量、互斥锁、读写锁的区别和使用场景原子操作和自旋锁如何避免死锁
二、内核与驱动相关
- 中断与底半部tasklet 和 workqueue 的区别如何减少中断延迟中断服务程序中能做什么,不能做什么
- 设备驱动字符设备和杂项设备的区别open、read、write、ioctl 用法内核如何处理驱动中的阻塞与非阻塞GPIO 驱动按键检测(单击、双击、长按)实现思路
- 内存管理kmalloc 与 vmalloc 区别内核态和用户态内存访问内存泄漏排查方法
三、网络编程与协议
- Socket 编程TCP 与 UDP 区别TIME_WAIT 状态的意义客户端连接异常处理方法
- 网络通信select、poll、epoll 的区别与应用场景非阻塞 I/O 与阻塞 I/O数据收发的线程安全处理
四、C语言与编程基础
- 指针与内存指针运算、数组与指针关系指针悬空、野指针问题及解决函数指针使用场景
- 结构体与位运算结构体对齐与填充位操作常见应用(标志位、寄存器操作)
- 字符串与内存函数memcpy、memmove 区别strlen 与 sizeof 区别自己实现简单的字符串拷贝或拼接函数
五、调试与工具
- GDB 调试断点、条件断点、单步调试查看内存、寄存器、堆栈远程调试 ARM/Linux 嵌入式系统
- 日志与分析内核日志与用户日志分析异步日志实现原理日志对性能的影响及优化
六、项目与实际问题
- 项目深挖简历上的 Linux 开发项目实现细节数据流、模块设计、同步方式遇到 bug 如何排查
- 实际场景题Linux 下实现异步定时器,整点触发多任务共享资源,如何保证线程安全Flash 擦写寿命优化策略