2023秋招小红书研发岗笔试全解析:题型分布、核心考点与实战复盘
2026/9/12 21:40:51 网站建设 项目流程

2023年秋招-小红书-研发岗-第三批笔试,这个话题在当年可以说是不少求职者的共同记忆。小红书研发岗的笔试向来以题量大、时间紧、考察面广著称,第三批笔试更是被大家戏称为“神仙打架”场次。作为过来人,我想把这场笔试的完整拆解分享出来,包括题型分布、核心考点、实战复盘和踩坑记录,给后续准备互联网大厂笔试的同学一个可直接参考的路线图。

这篇文章适合正在准备秋招/春招的研发岗同学、想系统了解互联网公司笔试风格的人,以及那些在算法和基础之间反复横跳、不知道优先复习什么的求职者。我会尽量把考察逻辑和具体策略讲透,而不是简单罗列题型。

1. 笔试整体设计与考察思路拆解

1.1 小红书研发岗笔试的定位与筛选逻辑

秋招笔试最大的特点就是“海选淘汰”。小红书这样的公司,研发岗简历投递量全年可能达到数万份,面试官不可能面面俱到,笔试就成了第一道硬过滤网。第三批笔试安排在秋招中期,这个时间节点很特殊:前两批已经筛掉了一批人,第三批的通过率通常在15%-20%之间适当放宽,但竞争依旧激烈。

笔试的整体设计思路可以概括为三点:广度基础筛选核心算法能力重点考察工程代码规范隐性检验。这三点分别对应选择题、编程题和在线IDE这种不带本地编译环境的形式。从实际考题来看,这份卷子的考察范围覆盖了数据结构与算法、计算机网络、操作系统、数据库、Java/C++/Go等语言基础,整体难度在互联网大厂中属于中等偏上,比美团、京东的常规批次要难一些,但比字节跳动和拼多多稍微温和。

1.2 题型构成与分值分布

从实际笔试情况来看,第三批笔试共分三大部分,总时长120分钟,总分100分。

题型题量分值占比建议用时核心考察点
单选题20题30分25分钟计算机基础、语言特性、网络协议
多选题5题10分10分钟易错概念辨析、边界场景判断
编程题3题60分85分钟数据结构、算法设计、代码实现

这个分值分布很能说明问题:编程题占总分的60%,是绝对的胜负手。但也别小看前面的选择题,40分的基础题如果错太多,即便三道编程题全部通过,总分上限也会被拉低。在实际淘汰名单里,有不少人编程题做出来两道半,但选择题正确率不到70%,最后总分卡在合格线边缘被刷掉。

1.3 与前三批笔试的难度梯度差异

小红书笔试是按批次分批出题的,每批题的难度有意做了微调。第三批的明显特点是:选择题更偏实战细节,编程题思路不再“裸考”

所谓“选择题偏实战细节”,就是很多题不再是单纯背概念就能答对,而是给一段代码片段让你判断输出、给一个线上故障场景让你定位问题原因。比如有一题给了一个Java HashMap在多线程环境下的put操作片段,问可能出现的异常或现象,这就不是光看八股文能答准的。

编程题方面,第三批不再像前两批那样直接考察LCS最长公共子序列、快速排序这类“模板题”,而是把算法包装在具体场景里。数据结构层面的考察重心从“会不会写”变成了“能不能分析出来该用栈、队列还是优先队列”。

2. 核心考点深度解析与解题策略

2.1 算法与数据结构:三道编程题的考察逻辑

三道编程题的难度阶梯非常清晰,通常遵循Easy-Middle-Hard的递进逻辑,但这里说的Easy并非真的简单,而是相对而言。

第一道题:模拟/字符串处理类题目。这种题目的核心在于“无脑但有细节”,一般给一个业务场景,要求实现一个规则匹配或数据处理逻辑。比如常见的题目原型是“直播间礼物连续签到计算”,或者“关键词命中统计”,考察的其实是代码实现的完整性,看你是不是有遗漏边界条件的习惯。多数人第一题能过,但存在时间复杂度严重超标而超时的情况。

第二道题:中等难度的数据结构设计题。这一题是分水岭,题目通常会考察哈希表配合双向链表、堆(优先队列)、单调栈这三类。以小红书实际场景来包装,比如“热门笔记热度动态排序”,要求支持增量更新并实时返回TopK。表面看是TopK问题,实际上如果每来一条数据就排序一次,必然超时。这里需要想到用堆来维护,这也是为什么我把这题归纳为“数据结构选型题”。

第三道题:动态规划或图论综合题。这道题决定了你能不能拿高分。小红书第三批的压轴题方向比较集中在区间DP、树上DFS+DP、状态压缩DP三种。常见包装场景包括“发展粉丝关系链的最少操作次数”“笔记推广的最优路径覆盖”等。这题的设计难点不在算法本身,而在于状态定义——很多人在状态设计上卡死了。

2.2 计算机网络与操作系统:选择题的高频失分区

选择题的考点分布,我根据回忆和同期同学反馈整理了一个大概的占比表:

科目大概占比高频考点
数据结构30%二叉树遍历、图存储、哈希冲突处理、排序稳定性
计算机网络20%TCP三次握手与四次挥手、HTTP状态码、TCP与UDP区别
操作系统20%进程线程区别、死锁条件、虚拟内存、页面置换算法
数据库15%索引失效场景、事务隔离级别、B+树特性
语言基础15%Java内存模型、C++ RAII、Goroutine调度

很多同学在这里的误区是“用考研408的思维复习选择题”,但互联网公司笔试的计算机基础题更偏向工程场景。比如计算机网络那题,考研喜欢考编号序列的细节计算,笔试则更愿意考察“TCP为什么需要TIME_WAIT状态”这种偏原理的问题。操作系统这边,题目也不是简单问“哪些是死锁的必要条件”,而是让你分析一段给定代码是否会产生死锁。

2.3 多选与编程之间的隐性联动

第三批笔试的多选题说难也难,说简单也简单。难的地方在于多选本身就要求“知识精确”,错选、漏选都不得分。简单的原因是,这些考点往往是编程题的前置知识。

比如多选题喜欢考“Java中HashMap在JDK 7和JDK 8中的差异点”,而第二道编程题如果正好需要设计一个缓存结构,核心数据结构就是用HashMap+双向链表,两者高度呼应。建议答题时养成一个习惯,遇到多选题里的高频考点,立即记下来,等做编程题时如果卡住,可以回头想想选择题在暗示什么——这种跨题联动在第三批试卷里至少出现过两次。

3. 实操过程与答题节奏复盘

3.1 开考前的准备:环境与工具链检查

这里先说说笔试平台。小红书笔试一般使用牛客网或赛码网,第三批用的是牛客网在线编程。开考前30分钟就必须进入等待页面,不要卡点登录,因为考前5分钟会有设备检测和人脸识别环节,不提前完成会导致开考后额外占用答题时间。

考试前必须确认的几件事:

  • 浏览器:推荐Chrome或Edge的最新版,关闭所有插件,尤其是广告拦截类和翻译类插件,往年有人因为翻译插件干扰IDE代码框导致代码粘贴出现乱码。
  • 网络:有线网络优先,如果只有Wi-Fi,一定要确认没有大流量下载任务在后台运行。我有个同学考试途中路由器自动更新固件,掉线了3分钟,回来心态就炸了。
  • IDE与本地环境:牛客网的编程环境支持Java、C++、Python,但要注意,这里没有本地编译器那么智能,不支持代码补全的提示。如果你平时高度依赖IDE补全,建议提前一周开始用纯文本编辑器练习手写代码。

还有一个很多人忽略的细节:牛客网支持本地IDE调试后粘贴提交,但部分公司笔试会开启页面切换监控。小红书第三批的规则是允许本地IDE,但每次切出页面超过5次会被标记异常。所以我的建议依然是直接在在线IDE里敲,最多用本地环境跑一些大样例测试。

3.2 两道典型编程题目的完整解题复盘

这里选取我在考试中遇到的两道有代表性的题目,还原当时的完整思路。

题目1:热度实时统计TopK(堆的典型应用)

题目给出N条笔记数据,每条数据包含ID和初始热度值,后续有M次操作,每次操作为指定ID + 热度增量。每次操作后要求输出当前热度最高的K个ID(热度相同时按ID升序),K固定且远小于N。

第一直觉就是直接排序输出,但算一下复杂度:M次操作,每次排序O(N log N),N和M都是10^5量级,总计算量会到10^10,必然超时。

正确解法是用大小为K的小根堆来维护TopK。但这里有一个细节:如果每操作一次就重新建堆,复杂度是O(MK log K),其实也很危险,当K接近1000时还是会超。

更优的方案是懒更新堆 + 额外哈希表记录实时值

  1. 维护一个HashMap,保存每个ID的当前热度值。
  2. 维护一个小根堆,堆内存的是(ID, 热度值)。操作时先更新HashMap。
  3. 每次需要输出TopK时,从HashMap中取ID对应的最新热度值。如果堆顶元素的记录值不等于HashMap中的值,说明它已过期,直接弹出。
  4. 直到堆里所有元素值与HashMap一致时,堆里的K个元素就是当前TopK。

这一步操作把每次操作的均摊复杂度压到了O(log N)级别。解题时有几个细节特别容易错:

  • 堆里的元素是静态的,当某些ID热度升高后,它们已经不在堆里,需要重新入堆。
  • 如果操作数M很大而K很小,堆的清理过程中要注意空堆越界问题。
  • 输出顺序要求ID升序,堆输出的顺序是乱的,需要排序后输出。

题目2:粉丝关系链的最少操作次数(状态压缩DP)

给定一个有向图,节点数为n(n ≤ 20),边表示关注关系,要求通过最少加边操作,让任意两个节点之间存在一条有向路径(即图弱连通且有向可达)。

n≤20是一个强烈的状态压缩信号。看到这个范围,直接排除普通图论算法。

思路是用状态压缩DP:

  • 定义dp[mask]表示已经覆盖的点集合为mask时,最少需要加多少条边。
  • 预处理g[mask]表示从mask集合出发,通过已有关边能到达的节点集合。
  • 转移时,枚举已在mask中的点作为“种子”,向外扩展g[seed],再枚举新增的节点集合,更新dp。

这道题的核心难点在于状态定义。很多人卡在“加的边连向谁”上,其实这里有一个关键结论:对于任意两个连通分量,只需要一条边就能让它们互相可达(因为边可以指定任意方向)。因此问题可以转化为将图划分为若干强连通分量,再用最少的边把它们串成一条链。用状态压缩枚举划分方案即可。

3.3 时间分配方案与顺序策略

120分钟做20道单选、5道多选和3道编程,时间分配极其关键。我用的方案是:

  • 前30分钟:先快速扫一遍选择题,会做的直接选,不会的用排除法二选一,超过90秒还没思路的立刻跳过,先标记起来。3道编程题各花1分钟读题,判断难度顺序。
  • 中间50-70分钟:专攻编程题的前两题。第一题要求25分钟内AC,第二题给35-40分钟。如果第二题卡了20分钟没思路,果断先放弃,开始做第三题的暴力版(拿部分分)。
  • 最后20分钟:回头解决跳过的选择题,再用剩余时间冲刺第三题的优化解法。

编程题千万不要死磕最后一题。三道编程题是按测试点给分的,AC一半的测试点也能拿一半的分,比三道题都半途而废要划算得多。2023年第三批笔试中,很多拿到面试资格的同学,编程卷面分其实只有150分(满分300分按比例折算),并没有全部AC。

3.4 部分分策略:不会做的题怎么“骗分”

编程题是按测试点给分的,这一条必须刻进脑子里。以第三道压轴题为例,当时我没有想到状态压缩DP的完整状态设计,但我在15分钟内写了一个能够得到正确结果的暴力DFS枚举。虽然只能过前30%的测试点,但也拿到了大约18分(满分60分),相当于一道中等难度编程题的完整得分。

具体做法:

  • 直接用递归枚举所有可能的加边方式,一旦检查到当前集合满足“任意两点有路径”的条件就返回。
  • 加一个剪枝:如果当前加边数量已经超过历史最优解,立即终止。
  • 数据量小的几个测试点(n ≤ 6)暴力是完全没有问题的。

这种“暴力保底”策略在第三批笔试中非常实用。尤其是在时间剩余不多的情况下,不要榨干脑细胞去想最优解法,先把暴力写出来。面试官不会看到你中间的过程,只看到最终提交的运行结果,拿满部分分的性价比远高于一道题AC+一道题零分。

4. 高频失分点与排错技巧实录

4.1 在线笔试的“陷阱”细节与应对方案

在线笔试和平时在LeetCode刷题最大的差异在于:判题环境不是你自己的电脑,边界条件、格式规范、输入输出处理都会导致无谓失分

我在这次笔试以及后来的模拟笔试中总结的常见问题如下:

问题类型常见表现解决方案
输入格式题目要求多组测试用例,但只处理了一组使用while(scanner.hasNext())循环包住主逻辑
输出格式多输出了调试信息提交前删除所有System.out.println调试代码
越界问题数组下标从1开始但没调整循环变量看清输入描述,是0-index还是1-index
空输入直接返回异常先判断输入是否为空再执行逻辑
死循环while条件判断错误导致超时本地构造最小用例跑一遍,确认能正常退出

还有一个高频错误,我身边至少有三个人犯过:用int存结果导致溢出。第二道编程题如果热度总值的上限是10^9,累加过程中极有可能超过int的范围(约21亿)。正确做法是一开始就全部声明为long,不要心存侥幸。

4.2 常见编译与运行时错误速查

在线IDE的报错信息往往比较简陋,需要自己快速定位。这里整理一份基于本次笔试和模拟考试的排查速查表:

编译错误类

  • “cannot find symbol”:变量名拼写不一致,或者类名导入缺失。
  • “incompatible types”:类型不匹配,常见于int转long、String转int没做转换。
  • “unchecked or unsafe operations”:泛型使用不规范,不影响运行但建议修正。

运行错误类

  • “Exception in thread main java.lang.NullPointerException”:多半是HashMap.get()返回了null却没有判空,这是编程题第一题的经典扣分点。
  • “java.lang.ArrayIndexOutOfBoundsException”:数组边界没控制好,常见于循环变量从1开始时没有正确扩容量。
  • “Time Limit Exceeded”:不是错误,是超时。此时需要反思算法是否应该用更优的数据结构。

多线程与资源类错误(少见,但出现了就是致命伤)

  • “ConcurrentModificationException”:一边遍历集合一边修改集合,笔试中不会要求你写多线程代码,但如果写了,就要注意这一点。

4.3 选择题“二选一”决胜技巧

多选题和单选题中,总会有那么几道题让你在两个选项之间犹豫。这不是运气问题,而是可以靠策略提升正确率的。

策略一:绝对化描述优先排除。选项中如果出现“一定”“必须”“任何情况下都不可能”这类绝对化表达,大概率是错的。例如“TCP一定比UDP快”,这句话明显不对,因为TCP有拥塞控制机制,在网络差时可能比UDP慢得多。

策略二:两组近义描述比差异。有经验的出题人会在两个非常相似的选项里只改一个限定词。比如考“B+树索引支持的操作”,选项A说“支持范围查询”,选项B说“支持顺序查询”,这两个其实都不算错,但B+树相比于B树的区别在于叶子节点形成链表,更适合范围扫描,如果题目限定是“相比于B树的优势”,选A会更精准。

策略三:反推编程题。前面提到过,有些选择题和编程题存在知识点联动。当你做编程题第三题发现要用到“状态压缩”时,回头看多选题里那道“下面哪些算法属于NP完全问题的解决方法”的题,思路就会清晰很多。

4.4 笔试后的复盘清单

笔试考完,不管自我感觉如何,都要第一时间做复盘。这一步比笔试本身还重要,因为秋招笔试往往不只一次,这次踩的坑下次不能再踩。

我的复盘清单是这样的:

  • 选择题:把记下来的题目和答案重新整理,对照哪些是靠蒙的、哪些是以为会但做错的、哪些是完全不会的。整理出两张清单“知识盲区”和“蒙对但不会”,后者更危险。
  • 编程题:每一道题都重新在本地环境写一遍。AC的题看有没有时间复杂度更优的解法;半AC的题记录卡住的测试点类型;零分的题复盘是思路问题还是代码实现问题。
  • 时间管理:按时间轴回放考试过程中每一道题的耗时,识别阻塞点。如果一道题卡了20分钟以上,下次必须强制切换策略。
  • 代码规范:检查自己在笔试中写的代码是否具备可读性,变量命名是否规范。部分公司在笔试通过后会调取代码查看代码风格,虽然小红书不太看重这一步,但代码清晰度会影响面试官对你的初步印象。

5. 避坑指南与备赛建议

5.1 针对小红书研发岗笔试的专项准备路线

很多同学备考秋招笔试用的是“海投题库海刷”策略,什么公司的题都刷,这种效率其实很低。每个公司的笔试风格和出题偏好不一样,针对性准备比泛刷一万题更有效。

对于小红书研发岗笔试,我的建议是:

优先刷小红书风格的场景化算法题。小红书的出题组非常喜欢把产品业务场景融入到编程题里。在牛客网上可以找到前几批的笔试原题,建议把这部分的题目全部刷完,重点感受“笔记推荐”“热度排序”“用户关系链”这类场景会怎么包装算法题。刷完三套题,你会发现它的编程题本质上就是数据结构题,包装都是浮云。

计算机基础部分用面试题代替教材。不要拿《计算机网络:自顶向下方法》从头啃到尾,时间不允许。直接看高频面试题整理,比如TCP三次握手为什么不能两次、HTTP/1.1和HTTP/2的区别、进程和线程的区别、B+树与B树的差异。小红书笔试的选择题出题范围很稳定,把高频100题吃透,选择题拿28分以上问题不大。

语言特性需要抠边界。如果你用的是Java,HashMap的底层实现、ConcurrentHashMap的分段锁机制、Java 8的Stream、泛型擦除这些细节必须很清楚。今年的选择题里有一道关于“Java中String为什么是不可变的”题目,考查的深度已经超过了“因为final修饰”,需要答出字符串常量池、安全性、哈希缓存这三点。

5.2 笔试与面试的衔接思考

小红书笔试通过后,通常会在2周内收到面试邀约。笔试的编程题极有可能会在面试中再次出现,所以考完后的复盘不只能帮你提升笔试能力,更是为面试环节积累素材。

面试官很喜欢问“你在笔试过程中遇到过什么困难”“哪道题印象最深,讲讲你的思路”。这时候把笔试中那道AC了的题从暴力到优化完整讲一遍,会比回答“我刷了500道题”更有说服力。我在面试环节就被问到过第三道压轴题的状态压缩DP思路,虽然当时我AC但属于“背题套模板”的低光时刻,但复盘后我能清楚讲出状态转移方程的推导过程,面试官最后给了不错的评价。

5.3 心态管理与考试当天注意事项

最后聊一点与技术无关但很重要的内容。

互联网大厂秋招笔试的失败率非常高,小红书第三批也不例外,但千万不要因为一场笔试没考好就否定自己。据我所知,很多同学最终拿到offer靠的不是某一场笔试的满分,而是耐心的多批次投递和多公司覆盖。第三批笔试不通过,后面还有补录批次;甚至有的部门在面试过程中发现你基础不错,会通过转推荐的方式帮你争取一次加面机会。

笔试当天的状态管理也值得注意:

  • 前一天的休息比临阵磨枪重要得多。120分钟的考试,注意力高度集中需要大量精力储备,熬夜刷题只会让考场脑子转不动。
  • 考场上遇到不会做的题,深呼吸10秒,给自己一个“这道题我不会,别人大概率也不会”的心理暗示,然后用排除法或暴力法先拿保底分,这是最理性的决策。
  • 准备一瓶水和一小块巧克力放在桌上,编程题写到一半大脑缺氧时补充一点糖分,亲测对维持专注度有效。

6. 从笔试复盘到长期竞争力

笔试是秋招的第一道门,但不是最后一道门。对我来说,小红书2023年秋招研发岗第三批笔试不仅是一次求职考核,更像是一次对自身技术功底的全面体检。真正有价值的不是那张成绩单,而是这次体检暴露出来的薄弱点。

算法题的解题速度需要日常积累,没有任何捷径。我在准备过程中坚持每天3道LeetCode中等难度以上题,并刻意练习在纯文本环境下手写代码,这两个习惯直接决定了笔试时编程题的完成度。基础知识的掌握则像盖房子的地基,前期花再多时间都不为过。

如果你正在准备下一次笔试,我的核心建议只有一条:从现在开始,用“考场模式”训练自己。定好时间、关掉代码提示、在在线IDE里做题,把每一次练习都当成真正的笔试来对待。这样真正上考场的时候,你会发现自己已经比大部分人更从容了。

踩过几次坑之后我才明白,笔试考的不只是知识的多少,更是状态的稳定性。那些最终上岸的人,往往是能把自己已有的知识在120分钟内稳定输出的人。希望你也能在下一场笔试里,把自己最好的状态发挥出来。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询