独家首发 | 2024京东秋招后端开发笔试真题深度解析!

2024京东秋招后端开发笔试真题解析

秋招季战火重燃,各大厂的笔试题如约而至。京东作为电商巨头,其技术岗位的竞争向来激烈。今年的后端开发笔试题考察了哪些知识点?难度如何?

今天,我们就为大家独家带来新鲜出炉的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

考点解析:
这是一道典型的递归函数时间复杂度分析题。

  1. 递推关系:函数 foo(n) 会调用两次 foo(n-1)。因此,其执行次数的递推关系可以表示为 T(n) = 2T(n-1) + c (c为常数时间操作)。
  2. 递归树:我们可以将调用过程想象成一棵二叉树。根节点是 foo(n),它有两个子节点 foo(n-1),每个 foo(n-1) 又有两个子节点 foo(n-2),以此类推,树的深度为 n
  3. 复杂度计算:这棵近似完全二叉树的节点总数约为 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查询中 WHEREHAVING 子句的关键区别。

  • GROUP BY:题目要求计算"平均分",这是针对每个"试卷"的,所以必须先用 GROUP BY paper_id 对数据进行分组。
  • HAVING vs WHEREWHERE 子句用于在分组前过滤原始的行数据,它不能作用于聚合函数(如 AVG(), SUM())。HAVING 子句则用于在分组后过滤这些分组,它可以(也通常是)作用于聚合函数。
  • 分析选项
    • A, C, D 选项都在 WHERE 子句中使用了聚合函数,这是错误的。
    • B 选项正确地先进行 GROUP BY 分组,然后使用 HAVING 子句对分组后的结果(每个试卷的平均分)进行筛选。

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
  • 结论:虽然所有选项在实际操作中都是错误的,但本题很可能意在考察 sedg 标志。在给出的选项中,B 是唯一一个表达了"全局替换"意图的。考生需要识别出重定向的陷阱,并理解 g 标志的作用。

二、压轴编程题详解

编程题是评估候选人代码能力和问题解决能力的核心环节。今年的三道题分别考察了前缀和、自定义排序和树的深度优先搜索,都是面试中的高频考点。

1. 牛牛与切割机

知识点:前缀和, 枚举

题目描述
有一个长度为 n 的序列 a,牛牛想对这个序列切割一刀,把它划分成两个非空序列。一个序列为 a[1...p],另一个为 a[p+1...n]。切割的代价为两个序列元素和的乘积。牛牛想知道切割代价最小是多少。

题目分析
这是一个典型的最优化问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值