当前位置: 首页 > news >正文

京东春招技术岗笔试复盘:算法题型、八股范围与时间分配全解析

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, i+k)]范围内找最小的字符 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 关于心态的三点真实体会

笔试当天的心态管理其实比做题更重要。我给自己定了一个原则:"把该拿的分拿稳,拿不到的分不强求。"这个听起来像废话,但实际操作中非常有用。比如选择题遇到一道不会的,心里默念“下一题”,千万别让它影响后面的节奏;编程题遇到一个卡壳的,先写暴力,然后做后面的题,有时间再回头优化。

第二点是饮食和睡眠。笔试一般安排在晚上,白天不要吃太油腻的东西,也别喝太多咖啡,否则晚上容易注意力涣散。我是吃过一次亏的,当年有一次笔试前一晚熬夜刷题,第二天开考半小时脑子都是蒙的,算法题直接爆炸。从那以后,笔试前一天晚上我绝不熬夜,最晚十一点就睡。

第三点是别太在意一城一池的得失。笔试发挥不好不代表就彻底没戏了,京东有的岗位批次之间会有调剂补录,笔试刷掉了一批人但岗位还没招满的话,后续可能会再发一批笔试或者直接面试。所以即便这场没过,也把题目复盘做好。机会总是留给那些准备充分的人,我身边就有同学第一场笔试挂掉、但第二周被调剂后直接收到面试邀请的案例。

我在实际走完这场笔试之后的感受是,京东技术通用岗位的笔试题算不上变态难,但覆盖面大,既有算法又有基础,还带一点业务场景的宏观判断。它更像是一场综合素质的压力测试,考验的不只是你会不会写代码,更是你在有限时间内如何分配精力、如何止损、如何把已知的信息用好。如果你正打算投这个岗位,希望这篇复盘能帮你少踩几个坑,把宝贵的时间花在真正会考的地方。

http://www.cnnetsun.cn/news/4314074.html

相关文章:

  • Starship 配色方案完整指南:3 步让凌乱的终端提示符变成清晰的视觉分层
  • Win11Debloat教程:3步给Windows 11瘦身,清理145个预装应用和AI杂项
  • 显卡无故氧化、接触不良?机房高湿腐蚀正在悄悄耗损硬件
  • 如何三步解包、修改并重打包 Android 启动镜像:MagiskBoot 实战指南
  • wav可以转mp3吗?当然可以,分享我这几天亲自用过的转换方法
  • 数据库岗秋招笔试复盘:SQL、索引与事务核心考点解析
  • 小满春招基础架构笔试复盘:分布式、存储与高可用考点解析
  • Anthropic API接入与Claude连接错误排查实践
  • 大模型评测无中立基准:配置变量如何左右榜单排名
  • 区块链投票系统毕业设计:从原理到实现的完整指南
  • 从零开始掌握 Web 安全:2026 年网络安全工程师必须掌握的漏洞挖掘技术
  • 基于Python的智能交通超速识别与车牌违法记录系统
  • 【关注可白嫖源码】--课程设计--毕业设计--springboot党史知识科普网站[编号:project55345](案件分析)
  • VS2017下OSG与Bullet物理引擎集成编译与碰撞检测实战
  • 腾讯音乐秋招笔试复盘:技术研究岗的考察重点与准备思路
  • 2026年政府采购对于小微企业的优势:盲投的机会来了
  • 达梦DW主备环境搭建
  • 语音转文本模型落地实时语音交互:从原理到工程实践
  • Windows平台Poppler预编译包:开箱即用的PDF处理利器部署与实战指南
  • Stable Diffusion模型服务化:基于BentoDiffusion的生产级部署实践
  • 移动端单词查找与字母重排工具:词典组织、算法与性能优化实战
  • 数学建模实战方法论:从题干解构到LaTeX-代码-论文闭环
  • 大模型应用演示翻车?从工程准备到稳定交付的避坑指南
  • 基于区块链的农产品溯源平台:Java+Spring Boot+FISCO BCOS混合架构实战
  • 防蒸馏机制失效背后:隐藏思维链与重现概率异常解析
  • GitHub Actions 数据库服务配置:MySQL/PostgreSQL/Redis/SQL Server 集成测试指南
  • iOS 27 AI收费争议背后:端侧与云侧推理的技术边界
  • 英语专业学姐亲测:AI降重一天改完8000字,重复率从22%降到6%的全过程
  • 奇安信秋招软件开发笔试解析:安全思维与编程考点全拆解
  • 缓存雪崩复盘实录,从整点故障到随机 TTL 的实战改造