行业资讯
📅 2026/9/1 13:23:48
蔚来软件开发岗秋招笔试全复盘:题型、考点与避坑指南
2024届秋招的时候我投了蔚来汽车的软件开发岗笔试是在赛码网线上完成的整个流程给我留下的印象很深。蔚来作为造车新势力里技术投入比较重的几家之一软件开发岗位的笔试其实非常有代表性——既有大厂通用算法题的影子又有明显的汽车软件底色。这篇文章我把这场笔试的题型结构、考查重点、做题策略和踩过的坑完整复盘一遍特别是岗位方向差异、赛码网平台注意事项、编程题的AC技巧这三个维度接下来要投蔚来或者类似车企软件开发岗的朋友可以直接拿来做参考。先说结论蔚来软件开发岗笔试整体难度中等偏上编程题不算变态但选择题覆盖面很广很容易在基础知识上翻车。而且它是线上笔试环境因素占比很大我见过好几个基础不错的同学挂在摄像头权限、网络抖动这类非技术问题上。所以这篇文章不只是讲题目也会花足够的篇幅讲平台和流程细节。1. 蔚来汽车软件开发岗笔试全景方向、平台与流程1.1 求职方向不同笔试内容差异很大很多同学投蔚来的时候只看到一个“软件开发岗”但实际上这个岗下面分得很细。如果你投的是智能座舱方向笔试里大概率会出现C语言机制、嵌入式Linux、进程间通信这些题如果你投的是云端平台方向Java、Go、分布式和数据库的占比就会明显提升如果是自动驾驶平台方向C、并发、内存模型、算法复杂度分析就是重头戏。我当时投的是整车软件相关方向笔试整场做下来明显感觉到它的出题逻辑和互联网大厂不是完全一样的。互联网大厂的笔试更偏向“筛人手速”考你快速解题的能力蔚来的笔试更偏向“筛基础”它会通过选择题去确认你的计算机底层功底扎不扎实。这个差异很重要因为备考策略完全不同。如果你只刷算法题选择题反而会成为你的失分重灾区。提示投递前一定看清楚岗位描述里写的技术栈关键词。蔚来不同业务线的软件开发岗笔试题的侧重会有肉眼可见的差别备考方向不要跑偏。1.2 赛码网线上笔试的平台细节蔚来秋招笔试用的平台是赛码网这个平台在车企和部分互联网公司校招里出现频率很高。第一次用赛码网的同学要注意它的在线IDE和牛客网、力扣的体验不太一样编程题的输入输出需要自己处理而且每道题会给出多个样例测试但本地调试功能相对简陋。我这场笔试的时长是120分钟题量接近35道其中选择题30道左右编程题3道个别批次可能还会出现简答题。赛码网考试开始前需要做三件事开启电脑摄像头、用手机扫码进入第二视角监控、完成人脸识别。这些环节建议提前15到20分钟进场避免卡在设备检测上。笔试过程中如果摄像头断掉或者人脸识别掉了系统会弹出提醒处理不及时可能会影响成绩有效性。还有一个很重要的细节赛码网部分场次的选择题是“不可回退”的也就是说你点了下一题就不能返回修改上一题了。我当时那场没有这个限制但不同批次、不同项目的设置不完全一样开考后先花十秒钟确认页面上的答题规则再开始做题这个习惯能帮你避免一些无谓的失误。2. 题型分布与核心考查点拆解2.1 选择题基础知识四座大山蔚来软件开发岗笔试的选择题考点主要集中在四块编程语言基础、数据结构与算法、操作系统、计算机网络外加少量的数据库和场景题。这不是猎奇而是汽车软件开发的实际需求决定的。车上跑的代码对稳定性要求极高一个内存泄漏、一个数据竞争在线下测试可能好几天都暴露不出来一上路就是大问题所以笔试里大量出现底层机制题其实是在第一关就筛选那些对计算机基础真正理解到位的候选人。第一块是编程语言基础。C方向考得最多的是虚函数表的内存布局、构造函数和析构函数调用顺序、智能指针的引用计数机制、类型转换的适用场景、const和static在不同位置的含义。Java方向则偏向垃圾回收机制、HashMap的底层实现、线程池参数、synchronized和ReentrantLock的区别。我当时碰到一道关于“C里含有虚函数的类其对象内存布局是什么样”的题这就是很典型的语言底层功底考查。第二块是数据结构与算法。数组和链表的区别、哈希冲突的解决方式、二叉搜索树和平衡二叉树的查找复杂度、堆的调整过程、排序算法的稳定性对比这些是高频考点。出题方式往往不是直接问概念而是给一个具体场景让你选最合适的数据结构。比如给定一堆每日车况数据需要频繁按时间范围查询问用哪种结构最合适这就是在考索引相关的底层意识。第三块是操作系统。进程和线程的区别属于送分题级别但再往下就容易暴露水平了死锁的四个必要条件、信号量与互斥锁的区别、用户态和内核态的切换开销、虚拟内存到物理地址的映射过程、页面置换算法。车企软件里很多功能是跑在Linux或者类Linux系统上的进程调度和内存管理如果理解不深后面面试环节很容易被追问到怀疑人生。第四块是计算机网络。TCP三次握手和四次挥手状态变化、TCP和UDP的使用场景、HTTP状态码含义、HTTP和HTTPS的差异还有DNS解析过程。这块儿和互联网大厂笔试的考法差别不大但要注意蔚来可能会结合车联网场景出题比如车辆通过移动网络上报数据涉及长连接、弱网环境下的重传机制这种场景题单纯背概念是搞不定的。注意选择题最怕的不是不会而是“我觉得我选对了”。很多选项在设计的时候就是往“二选一”里逼你的比如问你哈希表查找在极端情况下的复杂度如果你只记得平均O(1)而忽略极端O(n)就是白送分给别人了。2.2 编程题策略比手速更重要蔚来笔试的编程题通常有2到3道难度大致呈梯度上升。第一题基本是常规数据结构题比如链表操作、数组遍历、字符串处理属于热身级别第二题开始考查基础算法常见的有贪心、二分、双指针、简单的动态规划第三题则偏向场景抽象有时会包装一个业务背景考你能否把实际问题转化成经典算法模型。编程题支持的语言以C、Java、Python、Go为主。我的建议是平时用什么语言刷题笔试就用什么语言写不要在现场尝试换语言。每个人对不同语言的标准库记忆深度完全不同线上笔试时间紧张没必要做这种高风险尝试。做题顺序上我的策略从来都是先把三道题全部读一遍然后从最简单的那道开始写。为什么要这样做因为笔试的得分不只看你有没有AC还看你AC了几道。有些同学看到第一题不是特别难就埋头苦写结果第二题其实是更简单的最后时间不够用反而丢了大分。还有一个特别实际的建议如果一道题你5分钟内没有任何思路直接跳过做后面的题。不要恋战。笔试的通过线不是满分而是进入前多少比例。把会做的题稳稳拿到手比死磕一道卡壳题要划算得多。另外要强调一下输入输出处理。赛码网这类平台编程题都需要自己处理输入输出很多用惯了力扣函数式输入的同学在笔试时反而会在输入输出上翻车。建议考前几天专门用赛码网的在线模拟环境练一练。尤其是多行输入、不定长输入、需要循环读取直到EOF的情况这些日常IDE里不太注意的细节在笔试中都是真实的失分点。3. 真题思路复盘几道让我印象深刻的题目严格来说不同批次、不同投递方向的笔试题不会完全一样我不太建议把宝押在“背原题”上。但题型和考查逻辑是有规律可循的我把笔试里遇到的同类型题目做了脱敏复盘还原了原题的题型内核和解题路径供大家参考。3.1 多线程奇偶打印并发控制基本功这道题从难度上讲不算高分题但它非常典型尤其是在车企软件开发岗的笔试里。题目原型是这样的两个线程一个只负责打印奇数一个只负责打印偶数要求两个线程交替输出1到100之间的数字。代码框架已经给出你需要在指定位置补全同步逻辑。这类题考查的核心是线程同步机制互斥锁、条件变量、信号量以及它们各自的适用场景。很多同学在牛客上背过类似的题但真正手写的时候会卡在条件变量的等待逻辑上。核心思路是用互斥锁保护一个共享变量cur当当前线程要打印的数字不是自己负责的奇偶类型时就调用条件变量的wait挂起自己打印完之后切换到下一个数字然后notify唤醒另一个线程。我当时提交的C实现大概是下面这个逻辑不是唯一解但能稳定跑通#include iostream #include thread #include mutex #include condition_variable std::mutex mtx; std::condition_variable cv; int num 1; const int MAX 100; void printOdd() { while (true) { std::unique_lockstd::mutex lock(mtx); cv.wait(lock, [] { return num % 2 1 || num MAX; }); if (num MAX) { cv.notify_all(); break; } std::cout num ; num; cv.notify_all(); } } void printEven() { while (true) { std::unique_lockstd::mutex lock(mtx); cv.wait(lock, [] { return num % 2 0 || num MAX; }); if (num MAX) { cv.notify_all(); break; } std::cout num ; num; cv.notify_all(); } }写这种题要留意两个坑一是要注意竞争条件判断和修改num必须放在同一个锁的临界区内二是要注意结束条件num越过MAX之后要把所有线程都唤醒否则另一个线程会一直挂起程序无法正常退出。这种代码只要有一处细节不对本地跑少量数据可能看不出来但在线判题会直接超时或者卡死。复盘之后我会建议把这题背后的“等待-通知”机制吃透因为它不只是笔试考点更是以后做车载中间件、传感器数据采集、多线程任务调度时天天要面对的问题。蔚来笔试出这种题其实是在暗示岗位日常工作中对并发安全的重视程度。3.2 最长连续递增子序列边界条件决定AC率这题我在蔚来笔试里也碰到了类似版本。题目原型是给定一个未排序的整数数组要求找出最长的连续递增子序列长度。所谓“连续”就是要求子序列在原数组中是连续的例如数组[1, 3, 5, 4, 7]答案是3对应[1, 3, 5]。这题本身不难一次遍历就能解决。维护一个当前递增长度cur从头开始遍历数组如果当前元素比前一个元素大cur加1否则cur重置为1同时用ans记录cur的最大值。核心代码如下int findLengthOfLCIS(vectorint nums) { if (nums.empty()) return 0; int ans 1, cur 1; for (int i 1; i nums.size(); i) { if (nums[i] nums[i - 1]) { cur; } else { cur 1; } ans max(ans, cur); } return ans; }这道题真正拉开差距的地方在边界条件。空数组返回0所有元素都相等的情况答案是1而不是0数组只有一个元素答案是1。这些边界条件只要漏掉一个提交就可能直接报错或者扣分。我在笔试时先把这个题做完了但多花了一分钟检查空数组和重复元素的情况这就是稳的做法。这题出现在车企笔试里很有意思车辆在行驶过程中产生的传感器数据、GPS轨迹、电池电压序列经常需要做趋势分析连续递增的识别是基础操作。它看似简单却能考察一个人是不是有完善的边界思维这个素质在汽车软件开发中比“能写出高级算法”更重要。3.3 任务调度把业务场景抽象成图论问题第三道编程题让我印象最深因为它很有“车企味道”。题目原型是一个智能座舱系统有不少任务模块每个任务有执行时间任务之间存在依赖关系有的任务必须等前置任务完成后才能开始单核处理器一次只能跑一个任务问完成全部任务所需的最短时间。任务数量在千级别依赖关系给出的是若干条“前置任务ID到后置任务ID”的边。这题本质上是求有向无环图的关键路径长度每个节点有耗时边表示依赖关系求所有节点都完成的最短时间等价于找从任意入度为零的节点到任意出度为零的节点之间的最大路径耗时。解题步骤分三步第一步用邻接表建图并统计每个节点的入度第二步按拓扑序推进计算每个节点的最早完成时间第三步所有节点最早完成时间的最大值就是答案。我当时用的就是拓扑排序加动态规划的思路在拓扑排序的过程中不断更新每个节点的最晚完成时间。关键代码逻辑如下vectorint topo; queueint q; for (int i 0; i n; i) { if (indeg[i] 0) { q.push(i); dp[i] cost[i]; } } while (!q.empty()) { int u q.front(); q.pop(); topo.push_back(u); for (int v : graph[u]) { dp[v] max(dp[v], dp[u] cost[v]); if (--indeg[v] 0) q.push(v); } } int ans 0; for (int i 0; i n; i) ans max(ans, dp[i]);这里有一个隐藏坑题目并没有保证给出的依赖关系一定构成有向无环图有环的话整个任务系统就是矛盾的。我提交前专门写了一段判断环的逻辑如果拓扑排序的节点数小于总节点数说明存在环此时要输出错误提示。这道题如果没考虑到环的存在代码很可能在隐藏用例上挂掉。这种题对做过项目、写过真实业务代码的同学来说其实比纯算法题更友好。因为它考察的是“把实际需求抽象成数据结构”的能力而这恰恰是开发者的日常。我在笔试时看到这题的第一反应是这不就是我平时在任务队列、工作流引擎里处理的东西吗这种熟悉感能节省大量读题时间。4. 备考建议与时间规划4.1 一个月备考节奏先补基础再刷综合我这场笔试准备了一个多月整体节奏可以分成三个阶段。第一阶段是前两周重心放在语言基础和算法基础上。C方向的同学把虚函数、智能指针、STL容器实现原理过一遍同时每天保持3到5道数据结构题链表、二叉树、哈希表这三类重点刷。Java方向的同学重点看JVM内存结构、垃圾回收、集合源码、并发工具包。第二阶段是第三周集中突击操作系统、计算机网络和数据库。这三门课在互联网大厂笔试里占分比可能略低于算法但在蔚来的选择题里占比相当高。进程线程区别、死锁条件、TCP状态变化、HTTP和HTTPS、数据库索引和事务隔离级别这些属于性价比极高的考点花三到四天就能覆盖大半高频考题。第三阶段是最后一周进入综合模拟状态。每天上午按真实考试时间做一套模拟题逼自己在规定时间内完成。我用的平台以牛客和赛码网为主牛客有大量往年的车企软开笔试题赛码网则是因为考试本身会用到提前熟悉一下在线IDE和输入输出套路没有坏处。4.2 模拟练习的三个关键习惯第一个习惯是定时整卷练习。不要每次只做编程题不做选择题也不要只刷知识点不刷整卷。笔试的疲劳感和时间压力只有通过整卷模拟才能感受到。我每周至少做两套完整的线上笔试题全部卡时间做完再看解析。第二个习惯是收集错题并归纳错因。刷题不是刷数量而是刷总结。我准备了一个错题表格记录每道错题的错误类型、涉及知识点、正确思路。到考前那个周末只看这个表格不刷新题。考前看错题的收益远大于做新题因为大部分笔试考点都是固定的错题里藏着的才是你最容易丢分的地方。第三个习惯是专门练习输入输出和边界样例。很多人刷力扣、牛客的时候习惯用平台给好的函数签名但赛码网部分题目需要你自己解析输入。我会在模拟的时候刻意练习getline、split、scanf这几种输入处理方式同时对每道题至少测试三种边界样例空输入、单个元素、全相同元素。这些习惯在考场上都是实际的分数。4.3 编程题做题顺序与时间分配编程题的时间分配建议是“5分钟读题 15分钟解题 5分钟检查”每道题控制在25分钟左右。三道题总时长1小时左右剩下1小时留给30道选择题。这不是死规矩而是一个相对合理的锚点。如果选择题遇到完全不会的不要纠结太久先凭第一印象选一个把时间留给有把握的题。顺序上先做编程题还是先做选择题我的偏好是先看编程题再回头做选择题。原因很简单编程题在连续时间段内完成思路更连贯越做到后面大脑越清醒。如果先做选择题被一些偏题怪题消耗了精力再去做编程题容易没有状态。不过这个因人而异有同学喜欢先做选择题热身也完全可以关键是考试前通过模拟确定自己的最优顺序不要在考场上临时试验。5. 常见问题与避坑实录5.1 线上笔试环境问题在赛码网考试最让人崩的往往不是题目而是设备问题。笔试当天我提前半小时开始准备开摄像头、人脸识别、手机扫码都顺利过了。但我一个同学就没这么幸运他的笔试在图书馆的公共电脑上进行摄像头权限没开人脸识别卡了将近十分钟没通过考试时间已经悄悄走掉了。结合自己和其他人的经验我整理了几个高频问题摄像头画面黑屏基本是浏览器权限没放开需要在浏览器设置里允许网站访问摄像头人脸识别提示“检测失败”大概率是光线太暗或者逆光换个位置再试考试中途断网赛码网一般会给你重新连接的缓冲时间但千万不要手动刷新页面刷新可能导致答题数据丢失。电脑的选择上优先用Windows电脑配Chrome浏览器兼容性相对稳定。开考前把微信、QQ、钉钉这类可能弹窗的软件全部退出电脑系统通知也关掉因为赛码网会监控切屏行为如果检测到你切出了考试页面哪怕只是弹窗通知也可能被记录为异常行为轻则警告重则取消成绩。5.2 编程题提交的常见坑赛码网在线判题的主要坑集中在输入输出和编译器环境上。第一输入读取速度。如果数据量接近十万级别的循环用cin要记得加上ios::sync_with_stdio(false)这行否则可能超时C的cin默认同步C的stdio在不加这行的情况下性能很差。第二数据类型范围。题目里如果出现“数组长度在10的9次方以内”这种描述存储中间结果一定要用long long否则一次加法运算就可能导致溢出。第三多组数据输入的处理很多平台要求读到文件末尾也就是while(cin n)这种写法不要只读一组就提前结束。还有一个容易被忽略的点提交前的最后三分钟不要改代码。我在模拟笔试时吃过亏明明已经AC了最后觉得变量名不够好手贱去改了结果引入一个编译错误重新提交到判题系统已经来不及了。笔试分数取决于最终提交的结果不是中间过程所以确认AC以后就不要再动它。5.3 时间不够用的应对策略笔试最普遍的问题是时间不够用。选择题题量大每道题如果都仔细推演一小时根本不够编程题就更委屈了。对付这个问题我的办法是“两遍做题法”第一遍快速扫过所有选择题会做的直接选不会的用排除法缩小范围但不要停留超过90秒每题控制在1分钟以内第二遍再回头处理第一遍标记的题目这个时候心态更稳定注意力也更集中。编程题如果实在做不完优先保证写完第一道和第二道第三道哪怕只有思路和伪代码也要尽量写出核心算法框架。很多在线判题系统对部分通过是有分的哪怕你只通过了一个测试样例也可能比零分强。笔试分数是按整体排名看的有时候一道题少十分可能就是进面与不进的差别。另外提醒一句选择题如果完全不提示答错扣分那就绝对不要留空。即使不确定凭感觉选一个也比空着强。这个道理虽然朴素但考场上真有人因为“不确定所以不敢选”白白丢分。6. 写在最后的体会蔚来这场笔试结束后我复盘了整整一个晚上。最大的感受是它的题目设计不是为难你而是通过一套组合拳把“基础知识、编码能力、业务抽象能力”这三件事一起考了。编程题不难到需要刷几千道题才见成效但对代码规范和边界意识的要求是很严格的。选择题覆盖面广逼着你把计算机基础的地基打牢。另外有个细节分享给大家笔试之后如果进入下一轮面试官是真的会翻看你的笔试记录的。我的面试约在笔试后一周面试官针对我错了一道数据库索引的选择题专门追问了“联合索引最左前缀原则的实现原理”。所以笔试结束不是终点那道错题值得你在等面试的时候回头补一补它很可能变成面试官为你量身打造的追问点。如果你正在准备蔚来或者其他车企的软件岗笔试我的建议很简单把所有能拿到的真题模拟都做一遍把选择题当成“基础体检”来对待把编程题当成“业务小需求”来实现。不要迷信刷题数量要把每道题背后的原理吃透。毕竟进了这个行业之后日常面对的并不是“AC不AC”的问题而是代码跑在真车上、跑在用户手里的问题。