ARTICLE DETAIL

资讯详情

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

2023京东技术岗笔试复盘:计算机基础考点与编程题避坑指南

2023京东技术岗笔试复盘:计算机基础考点与编程题避坑指南 2023年秋招京东技术通用岗第二批笔试我踩过的坑和复盘笔记又到一年秋招季回想自己去年的笔试经历感触挺多的。尤其是京东技术通用岗位的笔试题目难度不算变态但覆盖面很广出题思路也挺有代表性。这篇文章就围绕2023年秋招京东技术通用岗位第二批笔试展开把当时的题型分布、考点细节、做题顺序、答题策略和踩坑记录完整梳理一遍给后面准备技术岗笔试的同学做个参考。如果你正在备战类似大厂的技术岗这篇文章能帮你少走不少弯路。京东技术通用岗位的笔试通常不区分太细的技术方向后端、前端、客户端、测试开发的候选人可能共用同一套卷子所以考察内容偏向通用计算机基础而不是某个特定框架的深入应用。这意味着你需要把数据结构、算法、计算机网络、操作系统、数据库这些基础科目都过一遍而不是只刷自己熟悉的语言题。第二批笔试的题目结构和第一批基本一致但具体题目有差异整体难度保持稳定没有出现偏题怪题这点比较友好。1. 笔试整体情况与准备思路1.1 题型分布和分值结构先说一下这场笔试的基本盘。2023年秋招京东技术通用岗位第二批笔试采用的是在线笔试系统全程监控总时长大约两个小时左右题量不算少需要合理分配时间。整个试卷分为三大部分第一部分是逻辑推理与数据分析类选择题第二部分是计算机基础类选择题第三部分是编程题。第一部分和第二部分合计大约30到40道选择题每道题分值不高但覆盖面极大。第三部分编程题一般有2到3道分值占比很高是拉分的关键。从笔试通过情况来看编程题做得好不好基本决定你能不能进入面试环节选择题大家差距反而不大。这个结构其实很符合大厂技术岗的筛选逻辑。选择题考察的是知识面的广度和基础概念的扎实程度编程题考察的是代码能力和解决问题的思维水平。单独看任何一部分都不难但组合在一起两个小时内的压力还是不小的。提示不同批次的题量和分值可能会微调但大体框架不变。准备时不要把希望全押在某一部分选择题和编程题都要兼顾。1.2 备考资料和复习侧重点针对这种考察结构我当时的复习策略是分三步走的。第一步是把计算机网络、操作系统、数据库这三门课的核心知识点过了一遍不需要深入啃教材重点是概念清晰、原理理解到位。第二步是针对性地刷了一些大厂历年真题和牛客网上的模拟题尤其是选择题部分刷题能帮你快速找到知识盲区。第三步是集中时间练编程题用LeetCode和牛客网的题库做专项训练。复习侧重点上选择题部分要特别注意计算机网络的分层结构、TCP和UDP的区别、滑动窗口机制操作系统的进程调度算法、死锁条件、虚拟内存数据库的索引原理、事务ACID特性、范式判断。这些都是高频考点每场笔试基本必出。编程题部分则要重点准备字符串处理、数组和链表操作、动态规划基础、二叉树遍历以及一些简单的贪心算法题目。有一点需要提醒的是京东的笔试题目比较注重基础但不刻板选择题里经常会有“下列哪种情况会导致死锁”这类需要理解分析的题而不是直接考“死锁的四个必要条件是什么”这种纯记忆题。所以复习时不要只背结论要把原理理解透做题时才能灵活判断。2. 技术考点深度解析2.1 计算机网络考点复盘计算机网络是选择题的绝对大户基本每场笔试都会占到六到八道题。涉及的考点主要集中在TCP/IP协议栈、HTTP协议、TCP可靠传输机制、IP地址与子网划分这几个方向覆盖面广但难度不大算是送分题和送命题的分水岭。我当时遇到的一个高频考点是TCP的拥塞控制机制。题目会给定一个场景例如某个连接当前的拥塞窗口大小然后问你经过一轮传输后窗口会怎么变化。这个知识点需要清楚慢启动、拥塞避免、快重传、快恢复这几个阶段的触发条件和窗口变化规则光记概念不够得会算。还有一个重点就是HTTP协议的状态码和缓存机制。京东的笔试比较喜欢考301和302的区别、Cache-Control和Expires的优先级、Cookie和Session的区别。这些知识点在企业实际开发中天天用到出题人考察的意图很明显不希望你只会写代码还要理解网络交互的底层逻辑。另外子网掩码和IP地址的计算也出现过。一般来说会给你一个IP和一个前缀长度让你算网络地址、广播地址或者可用主机数。提前要记住子网划分计算本身不难但考试时时间一紧就容易算错平时复习一定得多练几遍。# CIDR地址计算示例192.168.1.0/26 # 子网掩码255.255.255.192 # 可用地址数2^(32-26) - 2 62 # 第一个可用地址192.168.1.1 # 最后一个可用地址192.168.1.62注意计算机网络的选择题有不少细节陷阱比如“TCP的确认号是期望收到对方下一个报文段的序号”这种表述会用来混淆你。复习时建议把TCP和UDP的头部格式、连接建立释放流程、可靠传输原理都吃透。2.2 操作系统核心考点操作系统部分的考点集中在进程管理、内存管理和调度算法这三个方向题量比计算机网络略少但同样不容忽视。进程管理是必考内容尤其是死锁的判断。题目会给你一个资源分配的场景比如多个进程同时持有并请求资源问会不会发生死锁。这种题要用银行家算法去判断或者直接分析是否满足死锁的四个必要条件。我在笔试时就遇到了一道经典的哲学家就餐问题题干也明确提示了一点当所有哲学家同时拿起左边的筷子时会怎样答案是会发生死锁。内存管理方面虚拟内存和页面置换算法是高频考点。LRU、FIFO、OPT这三种置换算法要会手算缺页次数这部分难度不大但需要细心因为缺页次数的计算很容易出小错误。京东这批笔试还考了一道关于段页式管理的题目问一个逻辑地址如何转换到物理地址要求考生理解段号和页号的组合关系。调度算法部分常见的先来先服务、短作业优先、时间片轮转、优先级调度都有可能会考。重点在于会计算平均等待时间和平均周转时间这需要你把甘特图画出来一步步算没有太多捷径。做题时建议养成先在草稿纸上列出进程到达时间和服务时间的习惯再按算法规则模拟执行过程避免漏算。2.3 数据库与数据结构重点数据库部分的核心考点集中在SQL语句、索引和事务特性。SQL题一般不难考察的多是单表查询和简单的多表连接查询偶尔会有GROUP BY和HAVING的组合查询写对就得分。索引部分要理解主键索引、唯一索引和普通索引的区别知道什么情况下索引会失效。事务ACID特性基本上是必考题尤其要注意隔离级别和对应的问题。读未提交会导致脏读读已提交可以避免脏读但会出现不可重复读可重复读可以避免不可重复读但可能出现幻读可串行化解决了所有问题但性能最差。这个知识链路要背熟考试时经常以实例形式出题。数据结构部分选择题经常考察栈和队列的特性、二叉树的遍历方式、图的存储结构、哈希表的冲突处理方式。二叉树遍历是重中之重给一个前序和中序序列让你求后序序列的题几乎每场都能碰到解题思路是依靠中序序列来区分左右子树再结合前序或后序确定根节点递归还原整个二叉树结构。# 根据前序遍历和中序遍历重建二叉树 def build_tree(preorder, inorder): if not preorder: return None root_val preorder[0] root_index inorder.index(root_val) left_inorder inorder[:root_index] right_inorder inorder[root_index 1:] left_preorder preorder[1:1 len(left_inorder)] right_preorder preorder[1 len(left_inorder):] root TreeNode(root_val) root.left build_tree(left_preorder, left_inorder) root.right build_tree(right_preorder, right_inorder) return root我自己在复习二叉树重建时一开始总是想背代码模板后来发现其实只要理解了递归切分数组的逻辑代码怎么写都是通的。不要死记硬背要理解每一步在做什么。3. 编程题实战解析3.1 第一批典型编程题思路与解法京东笔试的编程题通常有2到3道难度从简单到中等递进。第一批的题目我没有赶上但根据身边同学的反馈和社区里大家的讨论能大致推测第二批的题目风格。编程题不求你用多么高深的算法更重要的是把思路表达清楚、代码写得干净、边界情况处理好。有一道比较典型的编程题是数组去重和排序的变体给你一个整数数组要求先按照出现次数降序排序如果出现次数相同则按照数值升序排序输出排序后的数组。这道题本质上考察的是哈希表统计加自定义排序用Python的Counter类或者Java的HashMap就能解决。from collections import Counter def custom_sort(arr): counter Counter(arr) sorted_items sorted(counter.items(), keylambda x: (-x[1], x[0])) result [] for num, count in sorted_items: result.extend([num] * count) return result这题其实不难但很多人在“出现次数相同按数值升序”这个排序条件上栽了跟头。如果用冒泡排序排序函数写得不对就会出错。建议用语言内置的排序接口重写比较逻辑时就非常方便。还有一道题是模拟栈的先进后出实现队列的先进先出。这道题用两个栈来模拟队列一个栈负责入队一个栈负责出队。出队时如果出队栈为空就把入队栈的所有元素依次弹出并压入出队栈这样元素的顺序就反过来了再从出队栈弹出时就能实现先进先出。边界条件就是两个栈都为空时不能做出队操作要抛出异常或返回特定值。3.2 第二批编程题的常见考法与思考过程第二批编程题整体风格和第一批很相似但从网上反馈和我个人的做题感受来看题目的题干描述更长场景包装更多不再是简单地列一个输入输出格式而是把题目藏在一段业务描述里需要你从中抽象出核心问题。举个例子有一道题是所有可能的路径问题类似走迷宫但加了一些条件限制。题目场景包装成物流配送说有一个网格状的仓库从左上角出发到右下角网格中某个值为1代表有障碍物不能走问有多少条不同的路径。这就是典型的动态规划或者递归加记忆化搜索问题。def unique_paths_with_obstacles(grid): m, n len(grid), len(grid[0]) dp [[0] * n for _ in range(m)] dp[0][0] 1 if grid[0][0] 0 else 0 for i in range(m): for j in range(n): if grid[i][j] 1: continue if i 0: dp[i][j] dp[i - 1][j] if j 0: dp[i][j] dp[i][j - 1] return dp[m - 1][n - 1]这个状态转移方程其实很简单就是每个格子只能从上面或者左边走过来障碍物的格子特殊处理为0即可。另一道题是经典的连续子数组最大和问题演变而来但题目加了一个限制选择的子数组长度不能超过k。这个问题不能直接用贪心或者简单遍历解决得用滑动窗口配合前缀和数组去处理时间复杂度要控制在O(n)。如果没用前缀和暴力解法在数据量大的时候必然超时。说一下我做题的思考过程吧。拿到一道编程题我一般先不看数据范围而是先把题目读懂看清它到底要解决什么问题。然后把题目简化为我们熟悉的算法模型比如看到“连续”“最大”“最小”就联想到滑动窗口或动态规划看到“路径”“方案数”就联想到DP了。确定模型之后再根据数据范围决定用什么复杂度级别的算法最后才动手写代码。这个流程在笔试时非常重要能帮你快速进入状态。3.3 做题顺序和时间分配编程题的分值重但也不要一上来就死磕最难的题。我当时的策略是先快速浏览三道题的题干对难度有个大致判断然后从自己最有把握的题开始做。先把能拿的分全拿到手再回头啃难题。这样做的好处是不会因为纠结一道题耽误太多时间导致后面会的题也没时间写。每道编程题的时间控制在20到25分钟左右如果超过这个时间还没有清晰的思路就先放下做完其他题再回来想。做题时先把暴力解写出来保底再想办法优化能优化就优化不能优化就算了。毕竟暴力解可以通过一部分测试用例写不出来优化方案也不至于拿零分。注意在线编程环境一般支持多种语言选自己最熟练的那个。笔试时我身边的同学普遍选java、cpp或者python没有哪个有绝对优势关键在于熟练度和边界处理能力。选一个你最不容易写错的语言就好。4. 笔试中的细节技巧与常见问题4.1 在线笔试系统使用技巧京东的笔试用的是第三方在线笔试平台网页会有一个代码编辑器、一个答题区、一个题目切换区。正式开考前会有一个模拟测试环节一定要利用好这段时间来熟悉页面操作特别是代码编辑器的用法和测试用例的运行逻辑。几个实用的操作技巧第一代码编辑器一般支持自动补全但不同平台的补全能力不一样平时练习就别太依赖自动补全考试时才能快速适应。第二选择题部分可以直接在页面上做标记对拿不准的题先标记好做完其他题回来再核实不要在一道选择题上纠结太久。第三编程题部分提前搞清楚是从标准输入读取数据还是从函数参数传入数据这两种模式下代码的写法差别很大搞错了会浪费大量调试时间。我当时就吃过这个亏有一次把需要从标准输入读取数据的题目用了函数传参的方式去写结果运行直接报错多花了十分钟才反应过来问题出在哪。现在想想这个错其实很好避免开考前认真看示例代码就行。4.2 选择题的蒙题策略和常见陷阱选择题遇到完全不会的题怎么办我的原则是先从确定性最高的答案入手优先排除明显错误的选项再结合单选题和多选题特点进行判断。京东的笔试选择题以单选为主部分可能是多选大家一定要仔细看题干说明不要白白丢分。常见的陷阱主要有这几类第一类是把条件偷换比如问TCP可靠传输时把“确认号是下一个期望接收的序号”偷换成“确认号是最后一个已接收的序号”。第二类是混淆两个相近概念比如“进程”和“线程”的区别“NAT”和“代理”的区别。第三类是数值计算陷阱例如子网划分中可用的主机数要减掉网络地址和广播地址很多人忘了减2。比较实用的一个技巧是对于不会的知识点可以根据选项之间的关系反推。如果四个选项里有两个明显意思相近正确答案很可能就是它们中的某一个如果有一个选项和其他三个风格完全不同那它通常是用来凑数的干扰项。当然这个技巧只能在完全不会的时候用会做的题还是老老实实按知识点判断。4.3 编程题的边界条件和debug技巧编程题最容易翻车的点不是算法不会而是边界条件处理不周全。我自己在笔试时就遇到过这样一种情况题目说输入数组中可能有重复元素问某个指定元素第一次出现的位置。我当时没考虑数组为空的情况结果有一个测试用例直接越界报错了。这类错误哪怕算法完全正确也会因为边界问题扣分非常可惜。写代码时要注意检查的边界条件包括输入是否为空、数组长度是否为0或1、目标值是否存在、下标是否越界、整数溢出等。程序里稍微处理一下这些情况排错成本很低收益却很明显。debug技巧方面在线笔试环境一般没有断点调试功能只能在代码里加print来排查。如果你在本地IDE上能运行在笔试页面上却报错优先检查输入输出的读取方式是否正确特别是不是多了空格或者换行符。另外运行超时不一定是你算法复杂度太高也可能是因为你在循环里做了不必要的字符串拼接或重复计算。5. 从笔试复盘到面试准备5.1 笔试后应该做哪些事笔试结束并不意味着万事大吉。考完当天趁记忆还清晰赶紧把题目回忆一遍能记住多少记多少。然后对比牛客网上别人发的笔经看看哪些题做对了、哪些题做错了、哪些题是蒙的记录成文档。这看似麻烦但能让你清晰地知道自己的薄弱点在哪同时为后续其他公司的笔试积累题库。我在京东笔试结束后就整理了一份文档把错题涉及的知识点都标注了出来。后来集中复习时直接看这份文档效率比重新看一遍教科书高得多。这种习惯不是只针对京东有效整个秋招过程中都能用。5.2 从笔试看面试的重点方向京东技术岗的笔试考察范围和面试问的重点方向高度重合基本集中在计算机网络、操作系统、数据库和算法这几个核心领域。笔试中出错的知识点大概率会成为面试时考察的重点这是很多参加过秋招的人的共识。所以笔试复盘实际上就是在为面试做准备。举个例子如果笔试时TCP三次握手和四次挥手的题型做错了面试官可能就会追问time_wait状态的作用、为什么需要这个状态等问题。如果笔试时动态规划的题没做出来面试手撕算法时很可能会遇到同类题。因此笔试的错题、不会的题、蒙对的题都是后续复习的重要线索。建议按照面试常问清单重新梳理一遍各个知识点包括TCP和UDP的区别与应用场景、HTTP和HTTPS的区别与加密流程、进程与线程的区别与联系、数据库索引的底层数据结构、事务隔离级别与锁机制、HashMap的底层实现与扩容机制、垃圾回收算法的基本思路。这些既是笔试高频考点也是面试必问的题目。5.3 复盘时值得记录的知识清单把自己在准备过程中要重点记录的知识点整理成了一个清单分享给各位参考TCP的拥塞控制慢启动、拥塞避免、快重传、快恢复的具体行为和触发条件。IP地址分类与子网划分A/B/C类地址范围、CIDR表示法、可用地址数计算。HTTP状态码301与302的区别、403与404的区别、500与502的区别。操作系统的进程调度算法先来先服务、短作业优先、时间片轮转、多级反馈队列。死锁的必要条件与预防措施互斥、持有并等待、不可剥夺、循环等待。虚拟内存与页面置换LRU、FIFO、OPT算法及缺页率计算。数据库索引B树与哈希索引的区别、联合索引的最左前缀原则、索引失效场景。SQL语句多表连接、聚合函数、GROUP BY与HAVING的使用场景。数据结构二叉树遍历、数组和链表的时间复杂度对比、栈与队列的应用场景。算法模型动态规划、贪心、滑动窗口、双指针、回溯的经典题目和模板代码。我在实际秋招过程中发现把这些清单过完一遍后不管是京东的笔试还是其他公司的笔试都心里有底很多。基础扎实了题目再怎么变核心考点始终绕不开这些内容。提示不要以为这些只是校招笔试的内容社招跳槽时很多公司也会考类似的知识点只是难度和深度上会有所提升。准备一次受益多次这笔时间花得很值。以上就是我对2023年秋招京东技术通用岗位第二批笔试的全部复盘。整体看下来这场笔试的难度对科班学生来说处于中等水平对非科班同学来说需要额外补一些计算机基础但只要认真准备通过笔试并不难。编程题别太慌张选择题别纠结太久基础知识点吃透了这场笔试就没有想象中那么吓人。希望大家都能顺利通过笔试拿到心仪的面试机会。
返回列表