
2023届秋招已经过去一段时间了小红书后端开发岗的笔试是我那年完整参加下来印象最深的一场。很多同学私信问这场笔试到底考什么、难度怎么样、怎么准备才不浪费机会。我干脆把整个流程和复盘写出来不涉及具体原题重点说题型分布、知识点权重、时间分配、答题策略以及那些只有真正上过考场才会发现的坑。无论你是准备下一届秋招还是刚开始规划后端开发学习路线这篇都能给你一份可以直接照着用的大纲。先说结论小红书后端岗笔试的调性和字节、美团这类公司不太一样它更看重基础打得牢不牢同时对工程思维和业务理解有明确考察。整个笔试时长一般在120分钟左右题目分几大块算法题不会刻意出特别偏的难题但选择题覆盖面很广从操作系统、网络到数据库、Java/Golang都有甚至会有少量中间件和场景设计题。这个组合意味着单纯刷LeetCode是不够的必须把后端的核心知识体系过一遍否则选择题会丢很多分。下面我按笔试的完整拆解顺序来写从笔试前的信息准备到各题型怎么答再到备考路线和实战避坑尽量把这场笔试还原成一个可以复盘的完整过程。1. 笔试整体结构与备战前要搞清楚的事1.1 投递节奏与笔试通知机制我是从官网投递的简历投完大概两周左右收到了笔试邮件邮件标题是“小红书2023秋招后端开发岗位笔试邀请”。这里有个经验想投小红书的话尽量走内推或者赶早批早批简历筛选会更宽笔试排期也会更充裕。投递时岗位名称要看仔细后端开发岗在小红书体系里分得比较细有的偏业务后端有的偏基础架构笔试内容虽大体一致但侧重点会有差异比如偏平台的岗位算法题权重可能更高偏业务的岗位场景设计题会更多。笔试通知一般提前3到5天发到邮箱同时短信提醒。邮件里会写明考试平台、考试时间段、设备要求。小红书用的是在线笔试平台支持浏览器答题需要提前测试摄像头和屏幕分享权限。我那年要求双机位一台电脑答题一部手机放斜后方监考手机要登录指定的监考小程序。这个要求一定要提前准备好别等开考了才发现手机没电或者没装小程序。还有一点容易忽略笔试时间是固定的不是全天任选。通常分为两场比如下午一场、晚上一场选一场参加就行。一旦选定并进入考试中途不能随意退出断网、断电、误关页面都会算作异常记录。所以开考前务必清空后台应用关掉消息弹窗把电脑电源插上。1.2 考试平台与题型分布考试平台我碰到的是牛客网有的场次可能是赛码功能上大差不差。答题界面左侧是题目列表右侧是代码编辑区支持C、Java、Golang、Python等主流语言。代码题需要自己处理输入输出这个和力扣的“只写函数”模式不一样必须记住标准输入输出的写法否则题做对了也可能因格式问题判0分。从题型上看大致分为三类单选题与多选题一般20到30题覆盖数据结构、算法分析、操作系统、计算机网络、数据库、编程语言基础。编程题一般2到3题难度从简单到中等偏上偶尔有一题接近Hard但不属于竞赛级难题。简答/设计题有的批次会有一道简答题让你描述某个系统设计方案或某个线上问题的排查思路不写代码纯文字回答。这里要特别强调选择题占比其实很高二十分的选择题如果错误率超过30%后面编程题全对也可能过不了。我见过不少算法很强的同学折在选择题上因为太久没复操作系统和网络细节看到题觉得“学过”但选不出来。1.3 不同岗位方向的侧重点差异后端开发岗不等于“Java开发岗”。小红书的服务端技术栈以Java和Golang为主也有不少中间件是自研的所以笔试不会只盯着一门语言。你可以在答题时选择自己熟悉的语言写代码但选择题里会出现Java和Golang的相关问题。如果只精通Python理解Java的并发题就会比较吃力。我当时主攻Java所以复习时把JVM内存模型、并发编程、Spring常用机制都过了一遍。但考场上也碰到了Golang的垃圾回收相关选择题以及Redis、Kafka这类通用中间件题。这说明准备后端笔试不能只看语言核心是掌握后端开发的通用知识体系数据结构、算法、操作系统、网络、数据库、缓存、消息队列。这些内容在平时做项目时也会用到只是笔试会考得更细更基础。2. 选择题与基础题那些不能丢分的模块2.1 数据结构与算法高频选择题第一类必考的是数据结构基础。比如栈和队列的应用场景、二叉树遍历方式、堆的调整过程、哈希冲突的处理方法、图的最短路径算法适用条件。看似简单但出题人特别爱在“最优时间复杂度”“最坏情况”“平均情况”这些字眼上做文章。比如问“在有序数组中查找某个数最快用什么算法”如果选成二叉搜索树就错了因为数组随机访问是O(1)二叉搜索树还要从根节点开始。这种题拿高分的办法不是背结论而是理解每个数据结构的底层实现。我复习时把数组、链表、栈、队列、树、哈希表、堆、图这八类东西的增删改查复杂度重新推了一遍并且把典型应用场景列成一张表对比效果很好。考场上遇到“最适合实现LRU Cache的结构”这种题马上能答出“HashMap双向链表”因为底层细节和场景都印在脑子里了。2.2 计算机网络与操作系统考点网络题几乎是必考的而且考得比大学期末深入。TCP三次握手、四次挥手是基础重点是TCP为什么需要TIME_WAIT、HTTP和HTTPS区别、DNS解析流程、HTTPS握手过程、TCP拥塞控制里的慢启动和拥塞避免。还有一类很实用的问题输入一个URL到页面显示中间经历了什么。这道题虽然不直接写代码但选择题会从各个阶段出细节比如DNS用UDP还是TCP、CDN缓存在哪一层、TCP连接复用是怎么回事。操作系统方面进程与线程的区别是送分题但容易被追问细节。比如进程间通信方式有哪些线程切换开销大的原因虚拟内存和页面置换算法进程调度算法死锁产生的四个必要条件。我印象里有道题问“发生系统调用时CPU状态如何切换”答案是用户态切换到内核态但很多选项会混淆“中断”“异常”“陷入”的概念。这种题就是靠复习时抠概念细节靠考前突击容易漏。2.3 数据库与MySQL常见坑数据库选择题的密集程度很高。索引的原理和应用是重中之重聚簇索引与非聚簇索引的区别、联合索引最左前缀原则、覆盖索引、索引失效的几种情况基本是必考。事务的ACID特性、隔离级别、MVCC原理、锁机制包括行锁、表锁、间隙锁也经常出现。这里分享一道让我印象深刻的题表中有一个联合索引(a, b)查询条件是where b ? and a ?问索引会不会生效。很多人以为最左前缀必须按顺序写但实际上MySQL优化器会自动调整顺序只要WHERE条件里同时出现了a和b索引就会生效。这种细节只有真正设计过表、用EXPLAIN看过执行计划的人才能快速判断。Redis的题也有比如Redis持久化机制RDB和AOF的区别、缓存穿透和缓存雪崩的解决方案、Redis分布式锁的实现方式。这些内容属于后端开发实战中会碰到的笔试出现说明出题人希望候选人不仅会写SQL还了解生产环境的常见组件。2.4 Java基础与并发编程细节如果你用Java答题这部分很关键。String、StringBuilder、StringBuffer的区别HashMap和ConcurrentHashMap的底层实现与线程安全性ArrayList和LinkedList适用场景这些都是老熟人了但出题人会往深处挖。比如HashMap在JDK8的扩容机制、红黑树引入的条件、ConcurrentHashMap在JDK8如何用CASsynchronized保证并发安全。还有并发编程的原子性、可见性、有序性volatile关键字的作用synchronized和ReentrantLock的区别线程池的核心参数和拒绝策略ThreadLocal的原理和内存泄漏问题。我建议复习时自己画一画JVM内存区域图把堆、栈、方法区、程序计数器的分工搞清楚选择题里经常会把“栈溢出属于什么错误”和“常量池放在哪里”混在一起考。这个模块的复习材料不用多市面上主流的Java后端面试题合集够用但一定要自己动手验证比如写一段多线程代码修改共享变量看看结果和预期差异再理解内存可见性。只背题的话换一个问法就容易懵。2.5 选择题答题策略与蒙题技巧选择题占比高但时间有限建议单项选择控制在40分钟内完成。遇到不会的题先跳过还是先蒙我的策略是先快速作答拿不准的标记最后统一处理。因为后面编程题需要整块时间不能因一道选择题纠结太久。多选题是最容易丢分的因为少选、错选都不得分选多也扣分。应对方法是看选项之间的逻辑关系如果两个选项表达的是同一个意思通常都不是正确答案如果某个选项明显过于绝对比如“一定会”“必须”也要警惕。当然这也只是技巧核心还是知识面要够。注意在线笔试系统一般不允许复制粘贴选择题页面不能开IDE调试。想验证代码逻辑只能在编程题的编辑器里写所以平时的代码基本功很重要。3. 算法编程题刷题策略与实战复盘3.1 算法题风格与难度定位编程题部分小红书后端岗的难度我体感是力扣中等题为主偶尔一道偏难。题目通常和业务场景有结合不会直接让你写“反转链表”而是会包装成一个社区内容推荐的场景比如“根据用户点赞数为笔记排序”“计算连续登录天数和签到奖励”这类。本质还是经典算法但是题意理解需要花点时间。我那年遇到的三道题一道是贪心或模拟类的数组操作题一道是有关字符串处理的题还有一道是带一点动态规划思想的题。这个组合很有代表性不需要你写出特别冷门的算法但需要你在有限时间内把思路理清楚并且代码写得干净。3.2 必须掌握的几类题型如果按出现频率给后端笔试算法题排个序我会排成这样数组与双指针快慢指针、左右指针、滑动窗口这类题能覆盖很多字符串和数组题目。哈希表辅助两数之和、分组统计、频次统计尤其是笔试场景题中很常见。排序与自定义比较器比如按某个规则给对象排序不止考排序算法本身还考你熟不熟悉语言里的排序API。二分查找有序数组里找边界、找目标值注意开闭区间的细节。链表操作反转、合并、找环考基本功。二叉树遍历与递归层级遍历、最近公共祖先、路径和问题。动态规划背包问题、最长公共子序列、打家劫舍类问题通常作为压轴题。图的简单应用DFS/BFS连通分量拓扑排序不过不会考太深。我建议按照这个优先级刷题先保证前六类能快速写出正确代码再花时间看动态规划和图论。小红书笔试的编程题不会故意考冷门东西所以覆盖面比深度更重要。3.3 编程题做题顺序与时间分配编程题一般2到3道我给自己的硬性要求是前30分钟先把所有题目都读一遍判断每道题的难度和熟悉度。先做最有把握的保证至少在编程题上有两道AC剩下时间再攻难题。读题时一定要看清输入输出格式。有些题目的输入是一行整数有些是多行有些包含字符串中的空格这些细节决定了解析逻辑。写代码前我习惯先在草稿纸或注释里列一下测试用例尤其是边界情况比如空数组、只有一个元素、数组长度极大、数值溢出等。别小看这一步能省下面调试时间。代码写完一定自己构造测试用例验证。在线笔试环境没有“运行测试用例”按钮会少很多有的平台允许本地运行但数据量一大就超时。我通常用两种方式验证一是手算一个简单用例看输出是否和预期一致二是想想极端输入比如字符串长度为10万看代码复杂度是否太高。3.4 一道典型模拟题的思考过程为了说明我的做题思路我举个例子这题不完全等于笔试原题但出题风格接近。题目大概是给定一个点赞记录数组每个元素是用户ID和时间戳要求统计连续3天都有点赞行为的用户数并按用户ID升序输出。第一眼这题和“连续登录天数”很相似核心是去重和日期连续性判断。我先用哈希集合对每个用户的三天记录去重再把日期转成整数形式排序后判断相邻日期是否连续。因为只需要判断连续3天所以不需要用动态规划直接遍历即可。但这里有个坑如果用户一天内有多次点赞直接处理会重复计数。所以第一步必须“按用户日期去重”。我想到先用Set 保存“用户ID-日期”这样的组合字符串然后遍历每个用户时再排序日期。这样代码量不大逻辑也清晰。最后要注意输出顺序把用户ID放进TreeMap或最后排序。从这道题能看出笔试算法不要求奇技淫巧而是考察你能不能把业务问题抽象成数据结构问题并且注意到边界条件。3.5 编程题的代码风格与判分机制在线判题系统按测试用例给分AC一道题就直接拿满分不会根据代码风格扣分。但代码可读性会影响你的调试效率也影响后续面试官看笔试记录时的印象。我写编程题时会把核心逻辑抽成单独方法变量命名用有意义的英文单词避免到处都是a、b、c这种临时变量。另外很多平台对代码有“超时”限制复杂度太高的暴力解法可能只过部分用例。比如数据范围是10^5O(n^2)大概率超时必须想O(n)或O(n log n)的做法。比赛经验不足的同学尤其要注意写完代码后在脑海里估算一下最内层循环的执行次数。4. 系统设计与业务场景题容易被低估的部分4.1 为什么笔试会考设计题小红书是内容社区产品后端开发每天面对的是Feed流、笔记发布、评论点赞、用户关注关系、消息通知等真实业务场景。笔试里出现系统设计题或业务场景题本质上是在筛选“具备工程思维”的候选人而不只是会写算法。这类题目的形式通常是给一个场景描述让你设计一个方案或者让你排查一个问题。比如“设计一个短链服务”“设计一个排行榜功能”“线上接口突然变慢怎么排查”。不要求写出完整代码重点考察答题思路是否清晰、有没有考虑性能和数据一致性。我当时看到这题时有点意外因为大多数刷题攻略都忽略了它。好在平时做过项目也有线上故障排查的经验回答起来不算吃力。如果你的项目经验主要来自课程设计建议多看系统的架构设计文章尤其是缓存和数据库一致性、消息队列削峰、分库分表这些内容。4.2 设计题回答框架从需求到架构我在笔试简答题里用了一个固定的框架屡试不爽。第一步确认需求场景和数据量级。比如设计短链服务先说明短链生成算法有几种方案自增ID还是哈希取模对比优劣之后选一种。第二步设计存储结构说明用MySQL存映射关系还是用Redis做缓存加速。第三步考虑高并发下的稳定性比如缓存击穿、缓存雪崩、并发去重。第四步总结方案的优缺点。这个框架看起来朴素但能保证回答不跑偏。判卷人不会指望应届生设计出完美的高可用架构他们更看重你思考问题有没有条理能不能把大问题拆成小问题。那道简答题我印象里是关于“内容评论区如何设计”要支持排序、分页、异常评论过滤。我写的时候先定义了评论的数据模型包括评论ID、父评论ID、作者ID、内容、时间戳、状态字段然后说存储用MySQL热评用Redis缓存列表接口先查缓存未命中再查库最后补充了怎么防止恶意刷评论。没有用什么高深的架构就是很务实的“从0到1”的思路。4.3 常见场景题的准备清单如果你还有时间建议把这几类典型设计题提前写一遍答案短链服务生成算法、存储、重定向、过期策略。排行榜Redis Zset的使用、分数相同怎么办、实时榜和周期榜的区别。关注/粉丝关系存储模型、粉丝数统计、Feed流推送还是拉取。点赞和评论防重复点赞、计数一致性、排序规则。消息通知推模式、拉模式、推拉结合、消息去重。线上接口变慢从CPU、内存、IO、数据库慢查询、外部调用超时逐层排查。准备的时候别只看文章要动手画一下表格或流程图哪怕只是把自己脑海里的方案用文字写出来写的时候会发现很多地方之前根本没想清楚。5. 备考计划与后端开发学习路线整理5.1 一个月冲刺的时间线安排如果你离笔试还有一个月完全来得及。我按三周加一周的模式做了安排第一周巩固数据结构与算法基础第二周集中刷题并复习计算机网络和操作系统第三周过数据库、中间件和场景设计题最后几天做整套模拟题并复盘错题。具体到每天我基本是上午两小时刷算法题下午两小时看计算机基础晚上两小时做项目和整理笔记。时间不用排得太满但每天必须保持代码手感。笔试前一周开始每天严格按照考试时间做一套模拟卷中间不中断不看手机让大脑适应连续两小时的高强度思考。如果你准备时间更长可以直接把路线放宽到两到三个月。前期重点放在算法刷题上后期再针对后端开发的知识体系做系统梳理。不要把战线拉太长又不做题那种“收藏了很多路线但一道题没刷”的状态最危险。5.2 后端开发到底需要学什么关于后端开发学习路线我结合笔试经验说下核心模块。第一是语言基础建议Java或者Golang二选一。学Java的话要掌握面向对象、集合框架、IO、多线程、反射、JVM基础学Golang的话要掌握语法、goroutine、channel、垃圾回收机制、标准库的常用包。两者都要求能熟练用该语言写算法题。第二是数据库MySQL是重点不仅要会写SQL和增删改查还要懂索引原理、事务隔离级别、锁机制、日志体系和主从复制。Redis作为常用的缓存组件也必须掌握包括常用数据结构、持久化、过期策略、缓存问题。第三是计算机网络和操作系统这两个是选择题重灾区也是后端开发的底层支撑。网络重点掌握TCP/IP协议栈、HTTP/HTTPS、DNS、加密流程操作系统重点掌握进程线程、调度、内存管理、文件系统、I/O模型。第四是中间件与框架熟悉Spring Boot、MyBatis等Java生态了解消息队列Kafka或RocketMQ的基本使用和适用场景。这部分笔试直接考得不多但会体现在项目经历里。第五是项目准备一个和自己技术栈匹配的完整项目。小红书这类公司很看重项目有没有落地如果你的项目用到了Redis缓存、MySQL事务、消息队列面试时能讲清楚为什么用和怎么用的会很加分。5.3 开发环境与前后端联调常识笔试虽然不考环境搭建但备考阶段做项目时会用到相关工具。如果你的项目是前后端分离的结构后端同学至少要会用IDEA开发后端接口知道怎么连MySQL和Redis怎么用Postman或Apifox调试接口怎么处理跨域。哪怕笔试不直接考后续面试被问项目时也会涉及。有一类被反复提及的问题比如“idea如何进行前后端开发”其实就是讲清后端起服务、前端用Node起开发服务器、通过代理转发接口或者后端直接托管静态资源。这个模式不难但建议自己完整走一遍理解前端和后端是怎么通过HTTP协议通信的。5.4 刷题平台与复盘方法刷题不用开很多平台一个力扣加一个在线笔试题库就够了。力扣按标签刷优先数组、哈希表、双指针、滑动窗口、二叉树、动态规划。每个标签做20到30题基本能覆盖笔试常见题型。复盘比刷题更重要。我每做完一道题不管有没有AC都会把题解看一遍想明白为什么我的解法慢、为什么别人能想到那个优化点。然后把这题的思路用自己的话写到笔记里包括核心套路、易错点、复杂度分析。笔试前翻笔记比翻题目列表高效得多。另外尽量找目标公司的往年笔试题或模拟题来做。小红书、字节、美团的题库风格有差异提前适应能减少考场上的陌生感。有些题库平台会有“互联网公司笔试历年真题”虽然不保证100%命中但题型可以当练手。6. 常见问题与实战避坑6.1 笔试平台环境问题在线笔试最让人崩溃的不是题目难而是环境出问题。几个高频情况我全部经历过开考前摄像头黑屏、浏览器弹窗拦截、电脑上不了网。我的解决办法是提前一天在考试平台上做一次“环境检测”按照邮件指引安装插件、授权摄像头和麦克风并且换一个稳定的浏览器Chrome和Edge都可以。考试当天一定要提前半小时把手机和电脑都打开确认电量充足、网络稳定。如果中途断网不要慌第一时间恢复网络并刷新页面系统一般会保留之前的作答记录。但如果长时间离线可能被判为作弊所以最好提前准备一个手机热点作为备用网络不要嫌麻烦。6.2 时间分配与做题顺序的致命误区我身边有同学笔试挂在时间分配上。打开试卷先死磕第一道编程题花了一个小时没AC后面选择题匆忙作答正确率惨不忍睹。这是非常典型的错误。正确做法是拿到试卷先花两到三分钟扫一遍全部题目标记出哪些题自己会、哪些题拿不准然后先做有把握的再啃难题。选择题和编程题之间要用“剩余时间”作为切换标准比如计划选择题40分钟编程题每题20到30分钟最后留15分钟检查。如果真的遇到一道怎么都想不出来的编程题建议先写一个暴力的朴素解法尽量保证能过一部分用例拿部分分。不要浪费时间去追求最优解笔试的评分按用例通过率来部分AC也比空着强。6.3 边界条件与代码鲁棒性编程题最可惜的一种情况是算法思路完全正确但代码因为一个边界条件挂了几个用例。比如数组长度为0、输入包含负数、整数溢出、字符串里有空格、链表只有一个节点。所以写代码时宁可多写两行也要保证这些边界情况被处理。如果题目没明确说明数据范围默认要考虑最坏情况。比如求和题目如果数值可能很大就要用long而不是int。还有递归题如果树很深递归可能爆栈这时要考虑迭代写法。6.4 考场上最容易忽视的“软技能”笔试考察的不只是知识还有你的心理素质和习惯。开考后先深呼吸不要因为某一题卡住就乱了节奏。我做题时会开着草稿纸把每道题的关键思路先写下来防止思路被打断后忘记。考场上尽量别去翻网页搜索在线系统有防切屏检测切出页面几次就可能被判作弊得不偿失。万一不小心切屏被提醒也不要继续操作立即回到考试页面正常作答通常不会直接取消成绩。我在笔试时见过提醒弹窗心里一紧但后续没有异常继续正常答题就行。还有一点是关于“交卷前检查”。最后留三分钟检查一下代码有没有多余调试输出输出格式是否和题目要求一致有没有多个空格或换行导致格式错误。选择题有没有漏答多选题是否选得太多。这些细节看着不起眼但每一点都可能是一道题的分数。写在最后的一些体会去年做笔试的时候我最大的感受是这场考试更像是一场“后端基本功的体检”不是看你背了多少难题而是看你在压力下还能不能保持清晰的思维和稳定的代码输出。我在备考时也走过弯路比如前期只顾着刷算法题忽略了数据库和网络基础结果选择题做得战战兢兢。后来调整了复习结构把时间重新分配才逐渐建立起信心。如果你也准备参加类似的后端开发岗笔试我的建议是不用追求把所有知识点都学得透彻无比但一定要保证高频考点足够熟练项目经历能够完整自洽。笔试只是第一关过线之后还有面试继续考察项目深度和思维广度。希望这篇复盘能让你少踩几个坑把精力放在真正值得投入的地方。