2024年秋招我只投了不到十家公司,科大讯飞是其中为数不多做了完整笔试记录的。飞凡计划研发岗这场笔试,我考完就趁着记忆还热乎,把题目和踩过的坑全部复盘了一遍。身边几个同学后来问我考了什么,我每次都要重新讲一遍,干脆整理成这篇完整的拆解,给后面准备飞凡计划或者其他AI公司研发岗的朋友做个参考。
先说结论:科大讯飞飞凡计划的笔试整体难度在秋招大厂里算中等偏上,不上不下的位置。它不像互联网大厂那样上来就四道hard算法题压场,但也不像传统软件公司那样背背书就能过。它的特点是杂——选择、算法、主观题、智力题全都出现在一套卷子里,对你综合能力的考察非常全面。如果你只按“刷LeetCode”的方式准备,大概率会在选择题和主观题上吃亏。
1. 笔试整体架构与考核逻辑拆解
1.1 飞凡计划研发岗笔试到底在考什么
飞凡计划是科大讯飞针对优秀应届生设立的专项招聘项目,定位偏核心研发和算法工程方向。这意味着它的笔试不可能只考察单一维度的能力,而是通过不同类型题目组合,快速判断候选人是否具备“能干活、有潜力、好沟通”这三个基本素质。
从2024年秋招的实际体验来看,飞凡计划研发岗笔试的构成大体分为三块:专业技术选择题、编程算法题、以及开放型综合题。技术选择题覆盖了数据结构、操作系统、计算机网络、数据库基础这些计算机专业核心课程;编程题一般有两到三道,难度从简单到中等递进;开放型综合题则更像是智力题加项目经验的混合体,考察你的思维方式和表达逻辑。
这套笔试设计最核心的筛选逻辑是:先通过选择题快速过滤基础知识不扎实的人,再用编程题判断工程落地能力,最后用综合题考察你的思考深度。三个环节环环相扣,任何一个环节明显偏科,都有可能被卡掉。
1.2 题型结构与分数分布
根据我在牛客网和应届生论坛上收集到的多份面经,结合自身考试经历,2024年秋招飞凡计划研发岗笔试题型分布大致如下:
| 题型 | 题量 | 分值占比 | 考察方向 |
|---|---|---|---|
| 技术单选/多选 | 20-25 道 | 约 40% | 数据结构、OS、网络、数据库、编程语言 |
| 编程题 | 2-3 道 | 约 40% | 算法设计、代码实现、边界处理 |
| 主观/综合题 | 1-2 道 | 约 20% | 项目思考、场景设计、逻辑表达 |
选择题每道分值不大但胜在数量多,而且有些是多选题,选错一个就全扣。我印象最深的是有一道关于数据库索引失效场景的多选,五个选项里有两个题干本身就有争议,如果不是之前实习时被DBA同事教育过,我大概率会选错。
编程题没有给特别明确的难度梯度标注,但实际做下来,第一道基本是送分题,通常可以用暴力解法拿满分;第二道就需要你动点脑子,一般涉及动态规划或贪心策略;第三道如果有的话,往往是字符串处理或图论的变种,考场上能做出来的人不超过两成。
1.3 从笔试设计看筛选逻辑
仔细琢磨这套笔试题,你会发现科大讯飞的出题团队并不是想去刁难你,而是想高效地筛掉三类人:
第一类是不扎实的人。选择题考点很基础,但基础不意味着简单。比如它问你“TCP四次挥手中TIME_WAIT状态为什么需要等待2MSL”,这种题目上课都听过,但真到笔试现场,要逻辑清晰地写出来,没有真正理解网络协议栈的人很容易糊弄不过去。
第二类是只会背题不会迁移的人。编程题第一道可能是经典的爬楼梯,第二道就会变成“机器人走网格且携带电量约束”的变体。本质上还是动态规划,但你如果只会套模板,看到题目换了场景就会懵。
第三类是表达混乱的人。主观题分数占比不算低,而且阅卷人是真实的技术面试官。你写技术方案时逻辑是否自洽、有没有考虑边界情况、文字表达是否清晰,他一眼就能看出来。这部分恰恰是很多刷题型选手最容易忽视的盲区。
2. 核心知识点梳理:研发岗笔试的高频考点
2.1 编程语言与数据结构:必拿分的稳定盘
飞凡计划的研发岗笔试允许选择自己熟悉的语言,我在系统里看到可选的语言有C++、Java、Python、Go等主流选项。建议你直接选自己最熟练的那个,不要因为“题目可能用Java写更好”就临时换语言。笔试环境里的编译器优化和代码提示都比较基础,用不熟悉的语言很容易因为语法问题浪费宝贵时间。
数据结构部分,重点考察数组、链表、栈、队列、二叉树、哈希表和堆。特别是二叉树的各种遍历方式、哈希表的冲突处理机制,以及堆在TopK问题中的应用,这三块几乎是每场笔试必出。我考的那套卷子里,选择题出了两题关于二叉树遍历顺序的推导,编程题第二道也跟树结构有关。
如果你准备时间有限,优先把每个数据结构的“底层实现原理”搞清楚。比如ArrayList和LinkedList的源码级区别、HashMap在JDK不同版本下的实现差异、红黑树在什么条件下会退化。这些内容不光是笔试选择题的得分点,后面的技术面试也一定问到。
2.2 操作系统与计算机网络:校验内功的试金石
操作系统和计算机网络是计算机专业面试中衡量“内功”的两门课。飞凡计划笔试在这一块出题很稳定,几乎不会出偏题怪题,但往往会把你“以为会”的知识点问到细节里。
操作系统重点看进程与线程的区别、进程间通信方式、死锁产生的四个必要条件及其处理方法、虚拟内存与页面置换算法。尤其是虚拟内存这块,选择题里经常会给你一个逻辑地址,让你算物理地址和页内偏移。这类题只要理解原理,算一遍就不会错,但如果对分页机制不熟,现场推导会非常浪费时间。
计算机网络的重点则集中在TCP/IP分层模型、TCP三次握手四次挥手、TCP与UDP区别、HTTP各版本差异以及DNS解析流程。科大讯飞的业务涉及语音转写、机器翻译,很多服务基于长连接通信,所以你还会看到一些连接管理相关的题目。我印象里有一个问答题,问的是“高并发场景下,连接池的参数该如何设置调整”,这道题如果只是在学校里学过理论、没有实际部署经验的话,答起来会比较吃力。
2.3 数据库与系统设计基础:不能丢的隐性分
数据库知识在选择题里的占比不如前面几块重,但它的分数很好拿,因为出题方向非常集中:索引、事务、隔离级别、SQL语句优化、范式设计。我建议你把B+树索引的底层结构、聚簇索引与非聚簇索引的区别、事务的ACID特性、MVCC多版本并发控制的原理这四块复习到位,基本能覆盖九成以上的考点。
系统设计基础这个方向容易被忽略,但飞凡计划的笔试里确实出现了一些“轻量级系统设计”的题目。比如它给你一个场景——语音识别请求的高并发处理系统,让你简述架构思路。这种题不要求你画出完整的系统设计图,但需要你具备基本的分层思想、缓存策略、消息队列、负载均衡这些概念。
用一句话概括:飞凡计划笔试对基础知识的考察是典型的“广而不深”,它不会像某些公司那样只盯着一个点挖到极致,而是要求你对整个计算机知识体系有一个全面的认知框架。这反而对跨专业选手和自学者更友好,因为只要复习到位,拿分的确定性非常高。
3. 实操复盘:笔试题型逐题拆解与参考解法
3.1 选择题实战要点:读题比做题更重要
选择题这块,我最大的心得是“读题比做题更重要”。因为研发岗的选择题里经常埋“坑”,比如下面这样的选项:
下列关于线程的说法,正确的是: A. 同一进程中的线程共享虚拟地址空间,因此线程间不需要同步机制。 B. 线程是资源分配的基本单位,进程是调度的基本单位。 C. 与进程相比,线程的创建和切换开销更小。 D. 多线程程序一定比多进程程序执行效率高。
正确答案是C,但A、B、D都极具迷惑性。A错在“共享地址空间不需要同步”,实际上正因为共享才需要同步机制;B正好把进程和线程的定义说反了;D的“一定”是典型的绝对化表述,遇到这种词基本可以直接排除。
多选题策略又不同。科大讯飞的多选题通常要求“全部选对才能得分,漏选、错选均不得分”,这就意味着遇到不确定的选项时,你要做的不是“尽量多选”,而是“只选确定的”。我第一道多选就犯了贪心的错误,五个选项选了四个,结果一个选项理解有误,整道题零分。
考场上如果真的遇到完全没思路的选择题,我的建议是“尊重第一直觉,但标记题号”。先快速选一个顺眼的答案,把它标记为待检查,等把后面所有题目做完,再回头集中推敲。这样做的好处是,在解题后期你的知识网络已经被激活,很多当时想不起来的知识点会在做其他题目时突然闪现,这时候回头改答案的成功率会提升不少。千万别在一道选择题上死磕超过三分钟。
3.2 编程题完整解题过程示例
编程题占整个笔试的40%左右,这部分拿不到分,笔试基本就告别了。我遇到的编程题原题记忆有些模糊了,但有一道非常典型的“变体题”我印象深刻,大意如下:
给定一个整数数组 nums 和一个目标值 target,请你在数组中找出和为目标值的那两个整数,并返回它们的数组下标。不过这次加了一个限制:必须按照第一个数下标从大到小的顺序依次返回所有满足条件的组合。
这道题看似是LeetCode第一题的变体,但加上了“所有满足条件的组合”和“排序限制”,难度直接提升了一档。如果你只写过最原始的“两数之和”,大概率会在这里翻车。
我当时的做法是使用哈希表加排序:先用一趟遍历把元素值和下标存进哈希表(注意值相同的元素,需要用一个list来存储所有下标),然后再次遍历时匹配目标差值,通过下标过滤掉同一个元素被使用两次的情况,最后把所有匹配到的下标对按照题目要求的规则排序输出。核心代码如下:
def two_sum_pairs(nums, target): from collections import defaultdict # 用字典记录每个值出现的所有下标 value_indices = defaultdict(list) for idx, val in enumerate(nums): value_indices[val].append(idx) result = [] seen = set() for idx, val in enumerate(nums): complement = target - val if complement in value_indices: for j in value_indices[complement]: if j != idx: # 确保每一对只记录一次 pair = (idx, j) if idx < j else (j, idx) if pair not in seen: seen.add(pair) result.append(pair) # 按照第一个下标从大到小排序 result.sort(key=lambda x: (-x[0], x[1])) return result这段代码有两个关键细节值得注意:第一,使用defaultdict(list)来存下标,保证了重复元素的所有下标都不会丢失;第二,用seen集合来去重,避免(0,3)和(3,0)被当作两组不同答案。很多人在考场上能想到哈希表,却遗漏了重复元素下标这个边界问题,导致部分用例超时或答案错误。
除了这道题,编程题里还出现过字符串压缩和解压缩、动态规划背景下的路径计数问题。建议你在考前把LeetCode热题100中的哈希表、双指针、动态规划三类题全部刷一遍,特别是“两数之和系列”“最长无重复子串”“接雨水”这些经典变体,飞凡计划的出题人非常喜欢在原题基础上加约束条件。
3.3 主观与智力题的作答思路:展现思维方式比展现知识量更重要
飞凡计划笔试的主观题不多,但每一道都是拉开分差的关键。我记得有一道题问的是“如果给你一个语音识别引擎,前端识别准确率始终不达标,你会如何定位问题”。这道题看似是算法题,其实考的是工程思维,面试官想看到你面对一个模糊问题时如何分析。
我的作答思路分三步走。第一步,先明确问题边界:准确率不达标的具体定义是什么?是字错误率超过阈值,还是特定场景下的识别失败率过高?第二步,建立排查方法:从数据层面分析错误样本的特征分布,看是噪声环境下识别差,还是专业词汇识别差;从模型层面检查是否有训练集和测试集分布不一致的问题,有没有需要做针对性fine-tune的场景。第三步,提出解决方案:针对不同错误类型,给出加噪数据增强、定制词表、后处理纠错等不同策略,并说明各自的成本和预期收益。
这种题目没有标准答案,但你回答的层次感非常重要。如果你上来就大谈“应该用更大的模型、更长的训练时间”,只能说明你没有工程经验。正确的姿势是展示“定位问题—拆解原因—设计实验—选择方案”的完整思考链。
有同学问我智力题该怎么准备,我的建议是别花太多时间专门刷,智力题在总分中占比不高,而且很多智力题的本质是“思维定式突破”。比如经典的“100层楼两个鸡蛋”问题,你如果没见过,现场想确实费劲,但如果花太多时间去刷各种智力题,性价比极低。把精力放在算法题和主观题上,回报率高得多。
4. 时间分配与考场发挥策略
4.1 考前准备清单:硬件与软件缺一不可
这次笔试采用的是牛客网的在线测评系统。提前做好环境准备能帮你避免很多考场上的低级失误。
硬件方面,准备好一台摄像头功能正常的电脑,提前测试麦克风(虽然笔试一般不需要,但万一遇到需要录音回答的题目就尴尬了)。网络务必使用稳定宽带,不要用公共Wi-Fi,我有个朋友考试时路由器重启,断线了两次,直接影响了心态和答题节奏。按牛客网的规范要求,笔试过程会全程录屏和开启摄像头监控,建议把桌面整理干净,关闭所有无关应用和浏览器标签页,避免触发切屏警告。
软件方面,提前登录牛客网测试环境,把代码编辑器里常用语言的模板提前写好,比如Python的快速输入模板:
import sys def main(): data = sys.stdin.read().split() # 按需解析数据 if __name__ == "__main__": main()另外,准备一张草稿纸和两支笔。编程题设计算法逻辑、推导状态转移方程时,草稿纸是必需品。千万不要在脑子里空想,你的工作记忆在紧张状态下根本不够用。
4.2 考场上的时间分配方案
飞凡计划研发岗笔试的总时长一般是90到120分钟。我第一次做这类综合卷时,因为没有规划时间,选择题花费太多,导致最后编程题只剩30分钟,第二道题直接来不及写完整。第二次参加其他公司笔试时,我总结了时间分配方案,整体效果好了很多。
以总时长120分钟为例,我建议这样分配:
| 时间段 | 任务 | 具体策略 |
|---|---|---|
| 前 30 分钟 | 选择题 | 快速扫读,不确定的标记后跳过,不在任何一题上死磕 |
| 中间 60 分钟 | 编程题 | 先做第一道送分题拿稳,再冲击第二道,第三道看剩余时间 |
| 最后 20 分钟 | 主观题 | 用结构化方式快速写出要点,不求字数多,但求逻辑清晰 |
| 剩余 10 分钟 | 检查 | 检查选择题标记项,补充代码边界条件,确认所有题都已提交 |
这个分配方案的核心原则是“分数转化率优先”。编程题和主观题的单位时间得分率远高于选择题,所以我不建议把大量时间耗在选择题的纠结上。如果你选择题遇到一道题看了两遍还没有任何头绪,果断标记、跳过,等后续时间富裕再回来处理。
另外特别强调一个细节:牛客网的编程题需要手动点击“提交”按钮,且提交后立即判分不提供修改机会。所以写代码时务必在本地编辑器里把边界条件和示例都测试完,再点击提交。宁可迟提交五分钟,也不要为了刷提交次数而放弃一次重要题目的完整度。
4.3 常见的丢分原因与应对
复盘我做过的几场笔试,发现自己和身边同学丢分主要集中在以下几个地方,说出来给大家提个醒。
第一个丢分原因是编程题没有处理输入输出的边界。有些题目没有明确说明输入数据的范围,如果代码用了固定大小数组,实际给的测试用例里出现了超出预期的数据量,就会导致段错误或者越界访问。解法是写代码时先把输入数据量读到变量里,再动态分配存储空间,而不是写死一个MAXN。
第二个丢分原因是时间分配失衡。我见过有同学选择题做得非常仔细,每一道题都反复验算,结果编程题第一道简单题只剩20分钟,因为紧张还写出了bug。这种情况特别可惜。选择题每道分值小,编程题一道分值可能是它的五倍到十倍,优先级孰高孰低一目了然。
第三个丢分原因是主观题只写结论不写过程。很多同学看到主观题,觉得“我应该会做”,就只写两三行结论性文字。阅卷人看这种答案根本没法判断你的思考过程。正确的做法是把思路分步骤写清楚,哪怕最终方案不是最优的,也能体现出完整的思考链条。
5. 常见问题与避坑实录
5.1 测评环境与设备问题
笔试当天最容易出幺蛾子的就是设备问题。我说几个自己遇到或身边人反馈过的真实场景:
场景一:摄像头无法开启。有同学考试开始五分钟才发现摄像头权限没有设置好,系统一直提示人脸识别失败。在牛客网的监控规则下,摄像头无法正常开启会影响成绩认定。建议至少提前30分钟进入系统做设备测试,不要掐着开考时间才登录。
场景二:电脑息屏或休眠。在线笔试过程中,如果系统检测到长时间无操作,有些电脑会进入睡眠模式。编程题需要读题、思考、写代码,时间往往很长,中途息屏会导致程序中断甚至无法恢复。提前在电源设置里把“从不休眠”打开,就可以避免这种低级问题。
场景三:浏览器兼容问题。牛客网对浏览器有兼容性要求,如果用了过于冷门的浏览器,可能会出现代码编辑器无法输入、试卷加载不完全等异常。建议直接用Chrome或Edge,这两个浏览器的兼容性测试做得最充分。
5.2 编程题答题的边界与性能坑
编程题除了算法思路本身,还有两个容易被忽视的坑。
第一个是性能问题。2024年的笔试中,有些编程题的数据范围给得比较大,比如数组长度达到10^5甚至10^6级别。这种情况下,O(n^2)的暴力解法一定超时。在写代码之前,先读清楚题目对数据范围的描述,根据数据量推断应该采用的算法复杂度。给你一个参考表格:
| 数据规模 | 可接受的算法复杂度 |
|---|---|
| n ≤ 100 | O(n³) 甚至更高 |
| n ≤ 10^4 | O(n²) |
| n ≤ 10^5 | O(n log n) |
| n ≤ 10^6 | O(n) 或 O(n log n) |
第二个是边界条件。题目里经常会写“数组可能为空”或“目标值可能不存在”,这些情况必须在代码里显式处理,否则会返回错误答案。我习惯在做题时先写几个测试用例,包括空输入、最小输入、最大输入、重复元素等情况,然后逐一把代码跑一遍,确认无误后再提交。
5.3 笔试后的衔接准备
笔试结束不代表万事大吉。飞凡计划的流程通常是笔试→技术面试→HR面试→Offer审批,笔试通过率整体不算高,所以考完后的24小时内,趁记忆最清晰的时候,把笔试涉及的题目和你的解法整理成文档。这样做有两个好处:一是为后续面试做准备,面试官很可能会问“你笔试时XX题是怎么思考的”;二是万一笔试被挂,复盘笔记也可以作为下一次投递的参考素材。
笔试结束后的第二天,如果你收到了面试邀请,一定要针对笔试中暴露出的薄弱点做突击。比如笔试选择题里数据库索引错误率较高,面试前就专门把索引优化和慢查询排查整理一遍。这种有方向感的准备,远比漫无目的地刷题效率高。
我自己在笔试后收到面试通知,第一轮技术面就被问了一个现场场景设计题:如何为一个语音交互App设计端侧缓存机制。这道题跟我笔试主观题里提到的“语音识别服务优化”有相似之处,得益于笔试后的复盘,我回答得比较成体系。所以不管笔试成绩好坏,认真复盘都是为后续环节做铺垫。
写在最后的个人体会
科大讯飞飞凡计划研发岗的笔试,整体来说是一套设计得很用心的试卷。它并不追求把你“考倒”,而是在有限时间内高效判断你是否具备扎实的计算机基础、灵活的算法思维和工程化的表达习惯。如果你准备秋招的时间有限,我的核心建议是:基础复习以“经典考点”为主,算法刷题以“高频题型的变体训练”为主,主观题练习重视“结构化表达”,绝大多数人都能拿到一个不错的分数。
最后分享一个很实际的小技巧:科大讯飞历年笔试题目在牛客网的讨论区里有大量热心同学分享的回忆版,题目虽然不会完全重复,但考点和出题风格有很强的连续性。考前花两个晚上把近三年的飞凡计划笔试面经全部过一遍,你会对出题人的偏好形成非常具象的感知。这种“针对性的熟悉感”,在考场上能显著降低你的紧张程度,让你发挥出正常水平。