10.16 广和通嵌入式软件开发一面:比赛含金量、网络基础、C 语言堆栈与频繁 malloc
- 轮次
- 一面
- 时间
- 2026-10
- 来源
- 牛客网
《面试题目》
- 做一下自我介绍。
- 你参加了这么多比赛,哪些含金量或难度比较高?(原帖理解:面试官更关心你从比赛里收获了什么)
- 问一段特殊的个人经历(原帖认为这是在考察表达能力)。
- 计算机网络相关的知识储备如何?说说 DNS、ARP、TCP、UDP 这类基础概念。
- C 语言的知识储备如何?先自我评价,再根据自己说的内容提问(原帖被问到堆栈、以及频繁 malloc 的后果)。
- 用 STAR 讲一下你的实习工作和项目经历,然后针对其中涉及的基础知识随机提问。
- 反问:团队、业务、部门领导相关。
《参考解析》
比赛题:讲收获而不是讲名次。 面试官问「哪个含金量高」,实际在听三件事:你在团队里承担什么角色、遇到什么技术难点、最后拿到了什么可复用的能力。挑一个你真正动手的比赛,说清赛题约束(时间、硬件、功耗)、你的方案与取舍、失败过的那一版为什么不行,比罗列奖项有效得多。
网络四件套要能说清分层与用途。 DNS 把域名解析成 IP(递归查询与缓存、TTL);ARP 在局域网内把 IP 解析成 MAC,跨网段时解析的是网关 MAC;TCP 面向连接、可靠、有流量控制与拥塞控制,适合文件与交互;UDP 无连接、开销小、不保证顺序,适合实时音视频与嵌入式里对时延敏感的小包。嵌入式场景最好补一句实际用法:模组上网走 PPP、MQTT over TCP、局域网发现用 UDP 广播或 mDNS。
堆与栈。 栈由编译器自动管理,存局部变量、函数参数与返回地址,容量小、分配快,递归过深或大数组放栈上会栈溢出;堆由 malloc/free 手动管理,容量大但分配慢、会产生碎片。嵌入式里栈大小往往在链接脚本里写死,跑飞很大一部分原因就是栈溢出——这是这道题想听到的落点。
频繁 malloc 的后果。 一是碎片化:长时间运行后堆里全是小空洞,明明总空闲够却分配不出连续块,最终分配失败;二是时间不确定:分配耗时随堆状态波动,破坏实时性;三是泄漏与野指针风险随调用次数放大。工程做法是内存池/静态分配、启动时一次性分配、或用固定大小的块分配器;嵌入式里通常直接禁用动态分配,或只在初始化阶段用。
STAR 讲项目 + 被抽查基础。 STAR 的要点是 Result 必须有具体数字或现象(时延从多少降到多少、误码率、通过率),而不是「顺利完成了」。讲完主动标出自己最熟的技术点,把追问引到你准备充分的地方——这是原帖说的「用回答扭转面试方向」的具体做法。面试氛围是审问还是技术聊天,往往取决于你有没有主动给出可追问的细节。