面试凉经,又凉了好没意思啊
海康威视嵌入式面经随记
起初兴致勃勃地投了海康,没想到还是挂在了二面,感觉整体难度还好但是自己当时没想起来。复盘了一下,很多考点其实是有规律可循的。
💡 备考建议:如果你也在准备嵌入式方向,推荐先系统过一遍这份面经 我也是看完之后才意识到自己哪里没准备到位的。
一面(50min)
- Linux 中断流程,谈谈你对中断上下文的理解
- C 语言字节对齐的规则,为什么要字节对齐?
- 进程间通信的方式,为什么分用户空间和内核空间?
- C++ 多态怎么理解?C++ 有哪些多态的典型例子?
- C 语言程序运行时的内存分配
- const 关键字的用法
- extern C 有什么用?为什么声明 C 语言环境?与 C++ 环境区别?
- delete [] 和 delete 的区别?
- 互斥量和信号量区别
- SPI 的通信过程?SPI 有几根线?速率配置?
- DMA 是什么?解释其作用
- GDB 常用命令?段错误如何定位?
- FreeRTOS 任务抢占机制
一面整体还好,基础扎实基本都能答上来。但我在第 9、13 题上卡了一下——互斥量和信号量的区别我说得不够精准,FreeRTOS 抢占机制也只答了个大概。
📌 这几个点在【面试完全指南】里都有专题,讲得比我清楚多了,当时要是提前看到就好了。
二面(60min)——挂在这里了
二面明显上了一个难度,考的都是内核原理层面:
- Linux schedule() 函数的原理和调用的时机
- 页表实现机制,分页的缺点?
- 多级反馈调度策略和时间片轮转,如何用 nice 命令优化优先级?
- 共享内存分配的空间、读写速度,是否依赖内核?
- 实时操作系统的调度器设计细节(算法、上下文保存)
- 信号量释放后,如何选择下一个线程?
- 如何评估操作系统的实时性?如何测算中断响应时间?
- MCU 上如何设计用户态和内核态?如何保障安全性?
- 驱动开发中遇到的棘手问题及解决方案
- 上下文切换时系统做了什么?
- MMU 如何实现虚拟地址到物理地址的转换?
- u-boot 启动流程分两阶段的原因?第一阶段为何要足够小?
第 1、5、7、12 题是我的死穴,schedule() 的调用时机说得含糊,u-boot 两阶段的原因完全没想起来,当场脑子空白。
总结
海康的嵌入式岗位对Linux 内核原理 + RTOS 调度 + 硬件接口要求都挺深的,不是背背八股就能过的,得真正理解原理。
如果你也在准备嵌入式岗位面试,建议早点系统复习,别像我一样临场才发现漏洞。
👉 嵌入式软件工程师面试完全指南32篇 · 12w+字 · 持续更新 · 3300+人已订阅销量即口碑,提前订阅提前享受 ⬆️
