
2024年春招技术通用岗位第四批笔试——看到这个通知的时候我正在工位上刷着LeetCode。说实话前三批的笔试已经刷掉了一批人群里的讨论热度也降了不少到第四批反而让人心里更没底。我当时投的是京东的技术类通用岗方向偏后端整个笔试从收到通知到正式作答留给我的准备时间不到一周。这篇文章就以我自己那次笔试的完整经历为主线把题型分布、算法难度、八股范围、时间分配和考后复盘一次性写清楚给后面准备同类笔试的同学一份可以用得上的参考。1. 投递批次与笔试环境通用技术岗网申后绕不开的那几关1.1 批次背后的时间信号与准备节奏京东春招的笔试一般分多批进行。技术通用岗位的批次设置说白了就是按投递时间滚动安排的早投早安排后续批次也不会比前几批简单多少。我当时在第四批收到通知时间和前三批间隔了大概一个多星期。很多人觉得批次越靠后越像补录题目会更水这个想法我劝你趁早扔掉——从我和几个同学的反馈来看第四批的题目难度和前三批基本持平甚至在某些选择题上更偏细节。如果收到的是第四批笔试通知你最该做的不是焦虑是不是没岗位了而是抓紧做三件事第一去牛客和LeetCode把京东近两年的春招笔试帖子翻一遍记一下高频考点第二把操作系统、网络、数据库、Java/Go的基础题过一遍重点是那些以前背过但已经模糊的概念第三准备一个安静的环境和一台稳定的电脑笔试当天不能翻车。1.2 笔试平台与设备检查最容易出事的一环京东的在线笔试一般用的是第三方平台全程开摄像头部分场次还会录屏。正式笔试前一天系统会发一条测试链接让你检查摄像头、麦克风、浏览器兼容性。这里我吃过亏——当时我用的是某个非主流浏览器摄像头权限一直弹不出来折腾了半小时才发现是浏览器设置里把摄像头禁用了。建议你直接按照邮件里的要求装好指定浏览器比如Chrome提前把权限放开别等到开考了再跟摄像头较劲。另外笔试环境需要特别注意一点桌面不能有纸质的笔记、手机也不能放在手边。系统有AI监考你低头看手机的动作可能会被标记为异常。我那次笔试时有个同学就因为习惯性拿起手机看时间被系统弹窗警告了一次。所以提前准备一个正常的时钟放在视线范围内手机静音放到另一个房间这是最稳的做法。1.3 笔试时间与题型分布拿到试卷先看什么京东技术通用岗位的笔试通常时长是120分钟题型大概分两大块客观题选择题和编程题算法题。选择题一般在20到30道之间覆盖计算机基础、编程语言、数据库、网络、操作系统等编程题一般是2到4道难度从简单到中等偏上都有。我那次的情况是选择题28道编程题4道总分100分。选择题部分每题分值不大但架不住量大编程题单题分值高是决定能不能进入面试的关键。这里就有个很实在的策略如果你编程题没有AC两道以上面试机会大概率悬。所以后面我会重点说编程题的时间和智力投入分配。2. 算法题复盘这场笔试里让我印象最深的四道题2.1 第一题字典序最小字符串问题考察基本功够不够扎实第一道题不算难大意是给定一个字符串你可以进行若干次操作每次把相邻的两个字符交换问在不超过指定操作次数的情况下能得到的最小字典序字符串是什么。这道题的核心思路是贪心。你需要从左到右扫描每次在当前窗口内找出字典序最小的字符计算把它交换到当前位置所需的操作次数如果次数够就操作不够就换下一个位置。窗口大小受剩余操作次数约束所以每一轮都要重新计算。def min_lexicographic_string(s, k): s list(s) n len(s) for i in range(n): if k 0: break # 在[i, min(n-1, ik)]范围内找最小的字符 best_pos i limit min(n - 1, i k) for j in range(i 1, limit 1): if s[j] s[best_pos]: best_pos j # 将best_pos位置的字符交换到i ch s.pop(best_pos) s.insert(i, ch) k - (best_pos - i) return .join(s)这道题说难不难但非常考验基础。如果你对贪心策略不敏感很容易写成暴力全排列然后超时。我当时先用10分钟把思路理清再写了大概25行代码调通整体用时在20分钟左右。这个耗时偏长原因是我一开始用了一个错误的贪心判断——只找整个字符串最小的字符忽略了操作次数限制。修正之后才通过。2.2 第二题环形区域染色方案动态规划的状态很刁钻第二题是个环形问题有n个位置围成一个环每个位置可以涂m种颜色要求相邻位置颜色不同问一共有多少种染色方案。n很大m是常数。常规的线性染色问题很好算第一个位置m种后面每个位置m-1种。但环形会把最后一个位置和第一个位置的关系拉进来处理不好就会重复计数或者遗漏。解法是用动态规划。设dp[i][0]表示第i个位置与第一个位置颜色相同时的方案数dp[i][1]表示与第一个位置颜色不同时的方案数。初始条件第2个位置与第1个位置不同所以dp[2][1] m * (m - 1)。递推如果第i个位置与第1个位置相同那第i-1个位置必须与第1个位置不同所以dp[i][0] dp[i-1][1]如果第i个位置与第1个位置不同那第i-1个位置可以和第1个位置相同也可以不同但与第i个位置不同所以dp[i][1] dp[i-1][0] * (m - 1) dp[i-1][1] * (m - 2)最后答案就是dp[n][1]因为第n个位置不能与第1个位置相同。这道题我在考场上卡了大概30分钟原因是一开始想用组合数公式直接求结果发现n非常大取模的公式化简很麻烦。后来老老实实写DP发现递推式的边界条件有两个地方容易写错一是dp[2][0] 0二是倒数第二步的状态要区分与第1个位置相同和不同两个分支。建议你们平时多练这种环形的变体题它比线性DP更考验对状态定义的理解。2.3 第三题最长连续满足某个条件的子数组双指针比二分答案更直接第三题是给一个数组求最长的连续子数组使得子数组内所有元素的乘积不超过给定值k。元素都是正整数。时间复杂度要求O(n)最直观的做法是滑动窗口。右指针不断扩展窗口如果窗口内乘积超过k收缩左指针直到乘积重新满足条件并在这个过程中维护最大值。这道题的坑主要在乘法溢出。如果数组元素很大乘积可能在int范围内爆掉所以要用long long存乘积或者一旦窗口内乘积超过k就不需要继续乘了直接收缩。我本人在考场上还没有栽在这上面但我有一个同学就是因为没用long long最后一个用例一直超时或者报错非常可惜。关于双指针的思想平时刷题建议按右指针扩张 左指针收缩的模板多练几道滑动窗口的变形很多比如窗口内不同字符个数、窗口和不超过某个值、窗口内最大值减最小值小于等于limit这些都是高频题。把这类题练熟笔试的性价比很高。2.4 第四题拓扑排序的变体考察是否有工程建模能力最后一题难度直接拉满大意是有n个任务给定m条依赖关系a必须在b之前完成每个任务有一个耗时。现在可以并行执行没有依赖的任务问所有任务完成的最短时间是多少。这题本质是有向无环图上的关键路径问题或者说并行调度的最短完成时间。解法是先拓扑排序然后按拓扑序DP。设dp[i]为完成任务i的最早完成时间所有入度为0的节点dp[i] cost[i]对于每条边(u, v)dp[v] max(dp[v], dp[u] cost[v])最后答案就是所有节点dp值的最大值。这道题我当时只写出来了拓扑排序部分DP的状态转移在最后十分钟才想明白勉强AC了一个部分分。说实话这类题在笔试里出现概率不高但它一旦出现就很能拉开区分度。它考察的不是单纯的算法模板而是你能不能把并行执行这种工程概念映射到图模型上。通常可以用入度为0的节点集合作为当前可执行任务来模拟并行多个任务同时进行时需要维护一个优先队列来按完成时间排序。但这个题其实不用模拟直接用拓扑序DP就能算最短完成总时间因为已经假设资源无限每个任务只要依赖全部完成就能立刻开始。3. 选择题里的八股范围京东技术通用岗笔试的考点清单3.1 操作系统与计算机网络记忆点太碎靠理解才记得住选择题里操作系统和网络的比例一般比较大。京东历年喜欢考的知识点我总结下来基本集中在几个地方进程与线程的区别、进程间通信方式管道、共享内存、消息队列、Socket死锁的四个必要条件、银行家算法页面置换算法LRU、FIFO、Clock以及缺页次数的计算TCP三次握手和四次挥手、TIME_WAIT的意义、拥塞控制慢启动、拥塞避免、快速重传HTTP状态码301、302、403、404、502、504、HTTPS的握手流程这类题不是死记硬背就能全对的尤其是缺页次数计算和TCP拥塞窗口变化这两个点很容易算错。建议考前找几道典型的计算题手算一遍把流程理清楚而不是只看概念。我当时遇到的一道题是给一串页面访问序列初始有三个物理块分别用FIFO和LRU计算缺页次数。这种题就是纯熟练度问题做多了非常快。但如果你之前没练过光靠现场推理会浪费很多时间。3.2 数据库与编程语言基础概念辨析题如何快速判断数据库方面京东技术岗笔试喜欢考索引、事务隔离级别、锁、MVCC、SQL优化。通用技术岗位也涉及一些编程语言基础Java和Go都会出题不过不会特别深。一个高频题目是给一个SQL查询问它能否用到某个索引。这题其实考察的是索引失效的基本场景比如对索引列使用了函数、隐式类型转换、左模糊查询等。做题口诀就是一旦索引列参与了函数运算或者条件左边不是裸列索引大概率失效。另一个高频点是事务隔离级别与脏读、不可重复读、幻读的对应关系。死记表格很容易弄混建议从原理上理解脏读是没提交的数据被读到不可重复读是同一行读两次结果不同幻读是同样的范围查询第二次多出几行。理解了含义再把四个隔离级别放在一条线上哪个隔离级别解决哪个问题就清楚了。编程语言方面Java的HashMap实现原理、ConcurrentHashMap的分段锁机制、垃圾回收算法这些是常客。Go语言则会考goroutine调度、channel的阻塞行为、defer的执行顺序。选择题没必要抠底层源码级别的细节但常见的数据结构和并发模型要能说出个大概。3.3 逻辑与场景题他们想通过选择题考察什么除了基础八股之外京东技术岗的笔试一般会来几道逻辑题或场景设计题。我印象中有一道跟电商业务相关的是问秒杀系统中库存扣减如何避免超卖给了一堆选项包括乐观锁、悲观锁、Redis预减库存等等。这种题考的不是唯一的标准答案而是你在面对真实系统时能不能快速判断哪些方案可行、哪些方案有明显短板。如果你没有接触过这类系统设计建议了解一下库存扣减背后的基本思路乐观锁适合冲突少的场景悲观锁适合冲突多的场景Redis预减库存可以抗高并发但最终要保证数据库的准确性。把几个常见方案的适用条件说清楚选择题就不会慌。4. 做题顺序与时间止损一位跳坑选手的笔试心得4.1 拿到试卷先做的三件事开考后的前5分钟我建议你不要急着答题先做三件事第一快速浏览所有编程题把每道题的数据范围记下来判断大概的复杂度要求第二扫一眼选择题里有没有那种一眼就会的题比如几个简单的概念题可以先标记出来后面快速做掉第三在心里给每道编程题设定一个截止时间比如第一题15分钟第二题25分钟第三题20分钟第四题30分钟时间到了没写出来就先跳到下一题。我这次笔试前专门给自己定了一个止损原则如果一道题想不出思路超过10分钟就先写一个暴力解能拿部分分就行然后转去做下一题。这个原则帮我保住了第二题和第三题的AC。因为人是有惯性思维的越纠结越容易在一道题上死磕等回过神来后面的题已经没时间写了。4.2 时间分配与取舍的实战表格下面这张表是我自己那次笔试的分配思路供你参考。每个批次的题量和难度会有微调但原则通用模块数量建议用时策略选择题28道30-35分钟先把一眼会做的做掉不会的标记后跳过别恋战编程题第一题1道15-20分钟快速定位考点贪心/模拟/简单数据结构为主编程题第二题1道20-30分钟DP或滑动窗口注意边界条件编程题第三题1道20-25分钟算法模板题争取AC编程题第四题1道25-30分钟能做多少做多少部分分也很值钱检查剩余5-10分钟重点检查编程题是否有边界条件漏判看到这张表你可能觉得时间很紧。确实紧。所以选择题部分千万不能一道题纠结两分钟以上我给自己定的底线是90秒一题超过就随便选一个后面有时间再回来看。编程题则一定要先把输入输出格式看清楚有些同学因为没注意多组用例而WA血亏。4.3 不会的题目怎么蒙消除法比直接猜更有用选择题不会的时候不要直接乱选。先把明显错误的选项划掉再在剩下两个选项里选一个直觉答案。如果你对某个知识点完全无感至少要能排除掉跟题目完全不搭的选项这样命中率能提升不少。编程题如果完全没有思路也别空着。写一个能处理最小数据范围的暴力方法比如O(n^2)的解法提交后至少能过一部分测试用例拿到一点部分分。京东的判分系统一般按通过的用例比例给分你不写一定是零写一个暴力还可能有10分、20分的进账。我当时第四题就是靠一个拓扑排序结构拿到了部分分虽然没AC但也不至于在这一题上完全失分。等到面试的时候这段经历反而能拿出来讲——怎么在资源不足的情况下做局部最优方案面试官其实挺看中这种思路。5. 笔试后的复盘与时间线交卷不是结束而是下一阶段的开始5.1 交卷后马上记录哪些题没做出来、为什么笔试交卷后别急着关电脑。趁记忆还热乎把四道编程题的题型、你的思路、卡在哪一步全部记到一个文档里。选择题里没把握的题也记一下等后面牛客、知乎有大神发回忆版答案时可以对一下。这样做有几个实际好处第一如果后续有面试面试官很可能问你笔试做过的题你能不能把思路讲清楚第二如果你没通过笔试这些记录就是你下次再战的复习材料第三记录的过程本身就是一次反思很多当时没想明白的解法在复盘时突然就通了。我这次在第四题上没能写出完整DP回去之后花了一个小时把那道题的递推关系稿清楚还写了一个完整版本发给了一起笔试的同学。这个复盘过程让我在后来的面试里遇到任务调度的话题时能主动提到自己的思考过程也算是变废为宝。5.2 笔试结束到面试通知之间的知识补漏笔试结果通常在一两周内出来。这段时间不能干等要开始为面试做准备。具体做三件事第一把笔试中暴露出的薄弱点补掉第二准备一个自我介绍和项目经历的高质量版本第三去把京东业务线相关的技术场景过一遍比如商城、物流、金融等想想里面可能涉及的后端问题。我当时发现自己在DP的环形问题上有短板就花了两天专门刷环形DP和区间DP的题目。后来的面试问到的算法题虽然不是原题但思路有很多相通之处。笔试的筛人作用不只是筛会不会也在帮你筛出自己身上值得花时间补强的漏洞。5.3 关于心态的三点真实体会笔试当天的心态管理其实比做题更重要。我给自己定了一个原则把该拿的分拿稳拿不到的分不强求。这个听起来像废话但实际操作中非常有用。比如选择题遇到一道不会的心里默念“下一题”千万别让它影响后面的节奏编程题遇到一个卡壳的先写暴力然后做后面的题有时间再回头优化。第二点是饮食和睡眠。笔试一般安排在晚上白天不要吃太油腻的东西也别喝太多咖啡否则晚上容易注意力涣散。我是吃过一次亏的当年有一次笔试前一晚熬夜刷题第二天开考半小时脑子都是蒙的算法题直接爆炸。从那以后笔试前一天晚上我绝不熬夜最晚十一点就睡。第三点是别太在意一城一池的得失。笔试发挥不好不代表就彻底没戏了京东有的岗位批次之间会有调剂补录笔试刷掉了一批人但岗位还没招满的话后续可能会再发一批笔试或者直接面试。所以即便这场没过也把题目复盘做好。机会总是留给那些准备充分的人我身边就有同学第一场笔试挂掉、但第二周被调剂后直接收到面试邀请的案例。我在实际走完这场笔试之后的感受是京东技术通用岗位的笔试题算不上变态难但覆盖面大既有算法又有基础还带一点业务场景的宏观判断。它更像是一场综合素质的压力测试考验的不只是你会不会写代码更是你在有限时间内如何分配精力、如何止损、如何把已知的信息用好。如果你正打算投这个岗位希望这篇复盘能帮你少踩几个坑把宝贵的时间花在真正会考的地方。