ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

2023秋招小红书研发岗笔试全解析:题型分布、核心考点与实战复盘

2023秋招小红书研发岗笔试全解析:题型分布、核心考点与实战复盘 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、树上DFSDP、状态压缩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时还是会超。更优的方案是懒更新堆 额外哈希表记录实时值维护一个HashMap保存每个ID的当前热度值。维护一个小根堆堆内存的是(ID, 热度值)。操作时先更新HashMap。每次需要输出TopK时从HashMap中取ID对应的最新热度值。如果堆顶元素的记录值不等于HashMap中的值说明它已过期直接弹出。直到堆里所有元素值与HashMap一致时堆里的K个元素就是当前TopK。这一步操作把每次操作的均摊复杂度压到了O(log N)级别。解题时有几个细节特别容易错堆里的元素是静态的当某些ID热度升高后它们已经不在堆里需要重新入堆。如果操作数M很大而K很小堆的清理过程中要注意空堆越界问题。输出顺序要求ID升序堆输出的顺序是乱的需要排序后输出。题目2粉丝关系链的最少操作次数状态压缩DP给定一个有向图节点数为nn ≤ 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分以上问题不大。语言特性需要抠边界。如果你用的是JavaHashMap的底层实现、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分钟内稳定输出的人。希望你也能在下一场笔试里把自己最好的状态发挥出来。
返回列表