秋招季战火重燃,各大厂的笔试题如约而至。京东作为电商巨头,其技术岗位的竞争向来激烈。今年的后端开发笔试题考察了哪些知识点?难度如何?
今天,我们就为大家独家带来新鲜出炉的2024京东秋招后端开发岗第1批笔试真题,并附上深度解析,希望能为正在求职路上的你提供一些参考和帮助!
想挑战一下原题?点击这里直达:2024京东秋招后端开发岗笔试真题(第一批)
一、精选选择题解析
选择题是考察候选人基础知识扎实程度的试金石。我们精选了三道覆盖不同领域的题目,来看看你是否能轻松应对。
1. (算法-时间复杂度) 以下函数的时间复杂度是多少?
void foo(int n, int x, int y) {
int z = 0;
if (n <= 0) {
z = x + y;
} else {
foo(n - 1, x + 1, y);
foo(n - 1, x, y + 1);
}
}
A. O(2^n)
B. O(n)
C. O(logn)
D. O(n^2)
正确答案:A
考点解析:
这是一道典型的递归函数时间复杂度分析题。
- 递推关系:函数
foo(n)会调用两次foo(n-1)。因此,其执行次数的递推关系可以表示为T(n) = 2T(n-1) + c(c为常数时间操作)。 - 递归树:我们可以将调用过程想象成一棵二叉树。根节点是
foo(n),它有两个子节点foo(n-1),每个foo(n-1)又有两个子节点foo(n-2),以此类推,树的深度为n。 - 复杂度计算:这棵近似完全二叉树的节点总数约为
2^n。因此,函数调用的总次数是指数级的。时间复杂度为 O(2^n)。
2. (数据库-SQL) 某网站的数据库有一个成绩表myscore,希望找出成绩表中平均分小于90的所有试卷。
A. select paper_id from myscore where sum(score) < 90 group by paper_id
B. select paper_id from myscore group by paper_id having avg(score) < 90
C. select paper_id from myscore where avg(score) < 90
D. select paper_id from myscore where avg(score) < 90 group by paper_id
正确答案:B
考点解析:
这道题考察SQL查询中 WHERE 和 HAVING 子句的关键区别。
GROUP BY:题目要求计算"平均分",这是针对每个"试卷"的,所以必须先用GROUP BY paper_id对数据进行分组。HAVINGvsWHERE:WHERE子句用于在分组前过滤原始的行数据,它不能作用于聚合函数(如AVG(),SUM())。HAVING子句则用于在分组后过滤这些分组,它可以(也通常是)作用于聚合函数。- 分析选项:
- A, C, D 选项都在
WHERE子句中使用了聚合函数,这是错误的。 - B 选项正确地先进行
GROUP BY分组,然后使用HAVING子句对分组后的结果(每个试卷的平均分)进行筛选。
- A, C, D 选项都在
3. (操作系统-Linux) 在 Linux 中,将文件 xyz 中的单词 “AAA” 全部替换为 “BBB”,正确的命令为?
A. sed 's/AAA/BBB' xyz > xyz
B. sed 's/AAA/BBB/g' xyz > xyz
C. replace 's/AAA/BBB/p' xyz > xyz
D. replace 's/AAA/BBB/d' xyz > xyz
正确答案:B (有陷阱)
考点解析:
本题考察 sed (Stream Editor) 命令,但包含一个非常常见的陷阱。
- 替换语法:
sed的替换语法是s/旧内容/新内容/标志。要替换行内"全部"匹配项,需要使用g(global) 标志。因此,从语法上看,s/AAA/BBB/g是正确的意图。 - 重定向陷阱:所有选项都使用了
> xyz的方式来尝试将输出写回原文件。这是一个严重错误!Shell在执行命令前会先处理I/O重定向,> xyz会立刻将xyz文件清空。然后sed再尝试从这个已经被清空的文件中读取,结果自然是什么也读不到,最终xyz变成一个空文件。 - 正确做法:安全的、用于原地修改文件的
sed命令是使用-i选项,例如:sed -i 's/AAA/BBB/g' xyz。 - 结论:虽然所有选项在实际操作中都是错误的,但本题很可能意在考察
sed的g标志。在给出的选项中,B 是唯一一个表达了"全局替换"意图的。考生需要识别出重定向的陷阱,并理解g标志的作用。
二、压轴编程题详解
编程题是评估候选人代码能力和问题解决能力的核心环节。今年的三道题分别考察了前缀和、自定义排序和树的深度优先搜索,都是面试中的高频考点。
1. 牛牛与切割机
知识点:前缀和, 枚举
题目描述
有一个长度为 n 的序列 a,牛牛想对这个序列切割一刀,把它划分成两个非空序列。一个序列为 a[1...p],另一个为 a[p+1...n]。切割的代价为两个序列元素和的乘积。牛牛想知道切割代价最小是多少。
题目分析
这是一个典型的最优化问题。

最低0.47元/天 解锁文章
1303

被折叠的 条评论
为什么被折叠?



