🕐 2026.08 | 滨江兄弟信息技术(杭州)有限公司 | 嵌入式软件开发工程师 | 技术面

这场面试没有上来就甩操作系统八股,基本是围着实习项目在聊。

滨江兄弟是 Brother(兄弟工业)在杭州滨江的研发中心,业务偏打印机、标签机这类嵌入式开发。日企味道比较重,流程、保密、代码规范都会比创业公司讲究。所以这场面下来,我的感觉是:他们不一定要你做过打印机,但很在意你是不是真的独立把一个固件项目啃到量产,以及能不能接受没有 AI、代码不能外传的开发环境。

这场是线上面,人事开场介绍了四位技术面试官。开头有点波折:设备掉链子、声音太轻、对面还中途离席接了个电话,有一阵完全听不到声音——线上面试先测好设备,这个教训记下了。


📋 面试流程

整场按实际问答顺序,可以分成六段:

顺序 环节 内容
1 自我介绍 实习成果总览、校内项目、技术栈,自选核心项目
2 SOC 方案 + 项目盘子 算法讲到一半被收住,转问人员配置、周期、量产标准
3 OTA 升级优化 23 分钟 → 6 分钟,全场追问最密的一段
4 FreeRTOS 任务划分 5 个任务怎么排优先级,微秒级保护被质疑
5 求职意向 上下层方向、AI 使用、早实习契机、到岗时间
6 反问收尾 入职后的导师带教机制

和之前几场比,这场更像是:把你做过的东西摊开,看你能不能讲到工程细节。


🎬 一、开场与自我介绍

郑州轻工业大学物联网工程,方向是嵌入式软件和控制系统。目前在浙江迈睿机器人实习,负责电池部件开发和一部分 Linux 应用层。

自我介绍里先把实习成果摆了出来,三件事:

  • SOC 估算误差压到 0.37% 以内
  • 基于 FreeRTOS 完成模块划分和任务优先级设计
  • 双 Bank 升级方案已通过验证、投入生产

校内项目带了两个:

  • 运动控制卡(校企合作):77 段 S 型加减速运算。这块我特意多讲了一句——F103 没有 FPU,浮点跑不动,我把 S 曲线计算整个换成了定点数,用整数运算把曲线啃下来。后面过了企业测试,进了产线。
  • 物料搬运机器人:卡尔曼滤波处理传感器数据,再配合视觉组给的坐标,做移动底盘控制。

F103 定点化这句是故意加的:打印机、标签机这类产品同样常年泡在没有 FPU 的小 MCU 上,这个优化正好对口。

最后用一句话收了技术栈:STM32 + Linux + 控制算法

面试官没在校内项目上停留太久,让我自己挑一个核心项目讲,我直接选了实习的电池部件——独立负责过的东西,讲起来最有底。


🔋 二、SOC 怎么算:第一个深挖点

磷酸铁锂和三元锂在平台区电压变化都很小,纯靠电压反推 SOC 基本不准。我这边的做法是:

  • 21 段 OCV 表,再配最小二乘法把曲线拟合出来、划区间
  • 满充校准之后,主路径走 安时积分
  • 再叠一层 卡尔曼滤波 做融合,误差做到 0.37% 以内

讲法上我把主次分得很清楚:安时积分是主力,OCV 用来划区间和校准,卡尔曼是用来压误差的,不是拿来当唯一真值。

这一段面试官听得比较认真,但没有继续追「模型是谁搭的」「测了几个循环」——这两问我在别的场次被拷打过,这次反而没往下挖。方案讲到一半,对面主动把技术细节收住,转去问项目本身的人员配置和开发周期。


🧾 三、项目盘子:怎么来的、做了多久、何时量产

被问得比想象中细,不只是做了什么,还有这个项目怎么来的、什么时候能交付

  • 项目是接手的半成品,前人只做了两个月左右就走了
  • 我 3 月接手,之后独立开发四个半月,从基础功能一路做到量产迭代
  • 量产交付标准当时就定得很清楚:装车跑满 30 天无异常。最后现场连续跑了 30 天以上没出问题,投产

讲的时候我比较强调「独立闭环」:不是只写过一个模块,而是从算法、任务调度、保护、日志、远程升级,一路跟到现场验证。

中间还问了一个差异性问题:这个项目和我原来的技术基础差别在哪。我的回答是原底子偏通用嵌入式开发,SOC 算法和电池特性是学校没教过的,等于在项目里现学现做的垂直领域。这块我如实答了,没装熟。

现在回看,从 SOC 方案收住、转到项目盘子,这一收一转是有目的的:方案够不够用是一方面,这个项目到底有多少是我一个人扛下来的,是另一方面。


📡 四、OTA:从 23 分钟到 6 分钟,追问最密的一段

项目盘子问完,直接进了 OTA。这是全场讲得最细、也被追问最密的一块,总效果先摆出来:整套升级从 23 分钟压到 6 分钟。

原先那套能升,但慢,而且通信一抖就容易卡。我主要动了两刀。

第一刀:通信延迟从 500ms 压到 100ms

原来每包等 500ms,大量时间耗在「干等」上。压到 100ms 之后,间接通信带来的空窗明显缩短。

面试官当场追了一句:间隔压短之后,怎么验证的? 我答的就是这层逻辑——原 500ms 是现场测出来设大了;100ms 直接测试验证过,再往下压稳定性开始掉,所以停在这。

第二刀:单通道改双缓冲,从「收完再发」到「边收边发」

以前一个缓冲区,收完才能发、发完才能收,链路一直在等。后来改成两个缓冲区 + 标志位:

  • 一侧收满,置位,交给发送端
  • 另一侧继续收
  • BW20 主控循环读这两个缓冲,交替往下发

相当于把串行等待改成并行流水线,等确认的耗时直接砍掉。

链路可靠性也没裸奔:握手用渐进超时,20ms 不成就 40ms、80ms 一路加到 100ms;超过 200ms 还没握上,重试两次;再不行,按 Modbus 协议指令把数据重传一遍。短超时快速试,长超时兜底,协议层还能再拉一把——现场升级最怕的不是慢一点,是升到一半没下文。这套也过了直接测试验证。

然后是追问链:从数据流一路摁到内存写入

  • 「边接收边发送」,数据流到底怎么走? 双缓冲 + 标志位控制 + 分包发送,BW20 循环读两个缓冲交替往下发
  • 是不是用来交替发送的? 是,就是交替发送
  • 测试是黑盒吗?B 板和电池 MCU 怎么连? 数据从 B 板走串口直传给电池 MCU,MCU 收到直接写内存
  • 缓冲区的内容要手动拼接到指定地址吧? 不用拼接。大包先拆开发,MCU 按序接收,维护一个移动指针,来一块往当前地址写一块、指针后移——地址不容易写乱,也不用每收一包就重算一次落点

最后一问来回确认了三轮才对齐——面试官预设的是「手动拼接」,我做的是「按序直写」。事后想,先把链路一句话讲死(B 板双缓冲 → 串口 → MCU 移动指针写内存),这三轮可以省掉。讲项目先给全景再进细节,比反过来效率高。

确认完缓冲区位置在 B 板芯片上,这个话题结束,切去了 FreeRTOS。


🧵 五、FreeRTOS 任务都有哪些,怎么划分优先级的

结合项目答的。系统里一共 5 个任务,按实时性从高到低排:

优先级 任务 为什么这么排
最高 安全保护 微秒级响应。读 BQ76952 硬件保护故障位,MCU 再关自己控的 MOS,做双层保护
第二 通讯 上位机大约 3 秒要一次数据,频率低,不能让它抢保护任务
第三 电池数据计算 从 BQ76952 读电流电压,更新 SOC、SOH
第四 履历写入 不是周期狂写 Flash,只在特定条件触发
最低 休眠 系统进入休眠时才跑

履历写入有三种触发:

  1. 故障触发:出保护、出异常,立刻记
  2. 电压变化超过 0.2V,或者间隔 5 分钟:避免 Flash 被无意义地来回擦写
  3. 充放电 MOS 开关切换:充/放状态变化本身就是关键事件

被追问:微秒级保护,任务响应得过来吗

「安全保护最高优先级」这句当场被质疑过:微秒级的电流异常,RTOS 任务调度来得及吗?

我的答案是分层的:微秒级那一层根本不在任务里做——BQ76952 硬件侧自带保护,故障位立起来直接动作;MCU 任务做的是第二层关断,把我自己控的 MOS 关掉。硬件兜底,软件复核,两层各管各的时间尺度。硬把微秒级塞进任务调度,才是设计错误。

这块我自己觉得是比较能体现工程意识的:不是把所有任务一股脑同优先级丢进去,也不是日志无脑周期写。保护一定最高,Flash 写入一定要限频,通讯再重要也不能压过安全。

优先级聊完,技术部分基本结束,后面全是意向确认。


🧭 六、求职意向与实习安排

方向:上下层都能做

嵌入式上层、下层都表态可以做。这块我拿的是独立开发迈睿电池上位机和驱动的经历做背书——上下层确实都碰过,不是嘴上说能做。工作方式上也明确:能接受无 AI 辅助、代码不能外带的严格保密环境。

AI 辅助开发怎么答

这场专门问了一段 AI 使用,日企对这块敏感不意外。我的回答三个要点:

  1. 工具:主要用 Claude
  2. 用法:查资料,以及生成 SOC 这类有标准公式的算法代码;核心的优化和调试还是自己来
  3. 依赖度:不高。早期实习公司没开放权限,代码全手写;后来权限开了才开始用,没有 AI 也能独立完成任务

「能不能不用 AI」不是客套。日企研发对源码和资料管控通常很严,有的环境直接断外网、禁用大模型。我如果在这点上含糊,后面入职反而被动。

为什么这么早出来实习

也被问到了。实际原因就是听学长建议:大四秋招和名校生正面竞争不占优势,不如提前把实习和项目攒出来;考公考研没计划,路线就是就业。这块我没绕弯子——对学历的现实提前想清楚,比回避有用。

到岗时间

大三下就已经办好离校实习;大四没有课程,除了毕业答辩都可以全职实习。他们要的是能稳定坐在工位上写程序的人,不是每周还要跑回去上课的实习生——这块是硬条件,双方都对得齐。

反问:入职后有没有导师带教

我主动问的:入职后有没有导师带。答复是前两个月有导师带教,后面由项目 leader 指导。对我来说上手门槛比别的都重要,这个安排是满意的。

双方确认没有其他问题后,面试结束。


🩹 七、这场可以再打磨的地方

纪要里几乎全是我在讲项目,当场翻车的点没有记下来。但对照自己的准备,有几个地方其实经不起继续往下问:

如果继续追 我现在的真实情况
SOC 0.37% 怎么测的 电子负载恒功率放电,完整循环不多,样本偏少
卡尔曼滤波模型 模型不是我独立从零推导的,我更熟的是数据接入和结果融合
硬件 主板入职时已经有了,自己做的是软件
OTA 失败恢复 双缓冲和重传讲了,Flash 落盘、断电保护、回滚策略还可以讲得更完整
打印机 / 图像 / 电机控制 岗位更靠近这个方向,我没有主动把 BMS 经验映射过去

也就是说,这场如果只看「项目能不能讲细」,我是够用的;如果他们下一轮开始对岗位做迁移提问,还得补一层:

通信可靠性、任务优先级、保护闭环、量产验证,这些能力怎么挪到打印机固件上。


💭 八、一点感受

这场面试的味道和 CVTE 那种八股拷打不一样,也和新奥那种「对着 PPT 逐页刨」不完全一样。更像是:

你把一个量产固件项目讲清楚,我再看你这个人能不能进日企的开发节奏。

对我比较有利的点有三个:

  1. 有完整闭环:不是只做过 SOC,或者只做过 OTA,而是保护、计算、日志、升级、现场验证都沾过
  2. 能讲清为什么这么设计:任务优先级、Flash 写入触发、OTA 超时策略,都有工程上的理由
  3. 意向很干净:能全职、能接受无 AI 高保密、AI 使用边界讲得清楚

不太有利的点也很明显:岗位本身更像打印机 / 标签机嵌入式,我的项目是 BMS。对得上的是 C、MCU、RTOS、通信和量产意识,对不上的是具体业务。

所以如果还有同类日企研发面,我会把开场改一下——先用一句话对齐岗位,再拿 BMS 当证据,而不是默认对方会自己完成这次能力迁移。


✨ 一句话总结:项目细节够用,岗位映射还要自己补上。