京东秋招笔试 – 20220924

单选题

1. 在MySQL的test表中有字段(a,b,c),并且涉及到以下三条SQL:
select * from test where a = 1 and b = 2;
select * from test where b = 2;
select * from test where b = 2 order by c desc;
请问在只建立一个联合索引的情況下,如何提高以上三条SQL的查询效率
A. INDEX ab(a, b)
B. INDEX ba(b, a)
C. INDEX bc(b, c)
D. INDEX abc(a, b, c)

2. 下列代码的执行结果是什么

public static void main(String[] args) {
	int d = test();
	System.out.println(d);
}

public static int test() {
	int a = 1;
	try {
		a = 2/0;
		return a;
	} catch(Exception e) {
		a = 3;
		return a;
	} finally {
		a = 4;
		System.out.print("+nowcoder");
		return a;
	}
}

A. 3+nowcoder
B. +nowcoder3
C. +nowcoder4
D. 4+nowcoder

3. 一个数据长度为4000B,首部长度为20B,MTU为1500B,问总共需要划分为()组,第()组的片偏移为370
A. 3, 3
B. 2, 1
C. 1, 1
D. 4, 3

4. 假设demo.c文件的初始权限为rw-rw-rw-,执行chmod go-w demo.c后,demo.c文件的权限将变为()
A. rwxrwxrwx
B. r–r–r–
C. rw-rw-r–
D. rw-r–r–

5. 下图为一个带权无向图,下列选项中,哪一个是它的最小代价生成树

A.
B.
C.
D.

6. 关于Java IO,下列说法错误的是
A. IO流按照流对象主要分为字节流和字符流。
B. IO流按照流向不同,分为输入流、输出流。
C. InputStream和OutputStream是字节流的基类,Reader和Writer是字符流的基类。
D. 字节流和字符流都可以处理任何的数据,包括图片和视频等。

7. 假如一个序列的输入序列为1234,当输出序列变为3241(在进的过程中允许出栈),则经过的栈操作具体为
A. push push push pop push pop pop pop
B. push push push push pop pop pop pop
C. push push push pop pop push pop pop
D. push push push pop pop pop push pop

8. 以下关于CMS说法正确的是
A. CMS垃圾回收过程中只会发生一次STW事件
B. 有一些对象,在并发标记阶段是新生代,而在预清理阶段变成老年代对象,他们会被漏标,下一次清理时需要重新扫描老年代
C. 重新标记阶段会发生STW事件
D. 在初始标记阶段,标记目标是年轻代中的活着的对象

9. 设无向图的邻接矩阵A如下所示,使用Kruskal算法求解它的最小生成树,最小生成树的大小为

A. 20
B. 23
C. 26
D. 22

10. 下列选项不是Java线程状态的是
A. NEW
B. BLOCKED
C. WAITING
D. RUNNING

11. 在MySQL中进行查询,若只扫描索引不考虑回表能够带来诸多优势,下列不属于索引扫描带来的优势是
A. 针对读写密集的范围查询来说读写资源损耗会降低
B. 降低数据访问量,降低数据库表的负载
C. 能够使得查询更加精准
D. 能够帮助一些只依赖索引的存储引擎进行操作

12. 某计算机采用二级页表的分页存储管理方式,按字节编址,页大小为2^11B,页表项大小为4B,逻辑地址结构为:
页目录号 | 页号 | 页内偏移量
逻辑地址空间大小为2^16页,则表示整个逻辑地址空间的页目录表中包含表项的个数至少是
A. 64
B. 128
C. 256
D. 512

13. 给定一递归算法的程序段如下,则该算法的时间复杂度为

void f(int l, int r)
{
	for (int i = 1; i <= r; i++)
		for (int j = 1; j <= n; i *= 2)
			a[i] *= j;
	if(l == r) return ;
	int mid = (l + r) / 2;
	f(l, mid);
	f(mid + 1, r);
	return ;
}

int main()
{
	n = r - l + 1;
	f(l, r);
}

A. O(nlogn)
B. O(n^2)
C. O(n^2(logn)^2)
D. O(n(logn)^2)

14. 在Linux中,以下哪个环境变量表示当前环境中历史命令的数量
A. $HISTSIZE
B. $HISTORYSIZE
C. $HSIZE
D. $HISSIZE

15. 根据传输技术,网络又分为广播式网络和点对点网络,下面说法错误的是
A. 广播式网络没有路由选择问题
B. 点对点网络不存在信道共享与复用的情况
C. 点对点网络不存在中央服务器
D. 广播式网络不用服务访问结点

16. Java9版本中有如下代码,运行程序,后两行代码输出结果是什么

import java.util.ArrayList;
import java.util.List;

public class ArrayListTest {
	public static void main(String[] args) {
		List allElements = List.of("a", "b", "c", "d", "e", "f");
		List allList = new ArrayList<>(allElements);
		System.out.println(allList);
		List subList = allList.subList(1, 3);
		System.out.println(subList);
		subList.set(0, "sub");
		System.out.println("sub list : " + subList);
		System.out.println("all list : " + allList);
	}
}

A.
sub list : [sub, c]
all list : [a, sub, c, d, e, f]
B.
sub list : [sub, c]
all list : [a, b, c, d, e, f]
C.
sub list : [sub, c]
all list : [sub, b, c, d, e, f]
D.
sub list : [b, c]
all list : [sub, b, c, d, e, f]

17. 关于线程的生命周期,下列说法中错误的是
A. 线程的生命周期主要有初始状态、运行状态、就绪状态、等待状态、阻塞状态、超时等待状态、终止状态,
B. 运行状态和就绪状态可以相互转化
C. 等待状态不可以和阻塞状态相互转化
D. 等待状态和超时等待状态可以相互转化

18. 下列选项中,不在核心态执行的是
A. 命令解释程序
B. 进程调度程序
C. 时钟中断处理程序
D. 缺页处理程序

19. MySQL中删除student_table表的组合(联合)索引index_name_birth_age,以下SQL正确的是
A. ALTER TABLE student table DROP index_name_birth_age
B. ALTER TABLE student table DROP combine index index_name_birth_age
C. ALTER TABLE student table DROP combine index_name_birth_age
D. ALTER TABLE student table DROP index index_name_birth_age

20. 下面Java代码的运行结果为

class test
{
	public static void main (String[] args)
	{
		String s1 = new String("a") + new String("b");
		String s2 = "ab";
		String s3 = s1.intern();
		System.out.println(s1.hashCode() == s2.hashCode());
		System.out.println(s1 == s3);
	}
}

A.
false
false
B.
true
true
C.
true
false
D.
false
true

算法题

1. 小红吃糖果

题目描述:
小红拿到了许多糖果,她希望吃掉一些糖果,但每种糖果至少需要留下一个作为收藏(每种糖果都不能吃光),小红想知道,自己最多可以吃多少糖果?

输入描述:
第一行输入一个正整数n,代表糖果的数量。
第二行输入几个正整数ai,代表每个糖果的种类。
1≤n,ai≤100

输出描述:
输出一个整数,代表小红可以吃掉糖果的最大数量。

示例1:
输入:
1
1 2 3 4 5
输出:
0
说明:
每种糖果都只有一个,因此无法吃任何糖果。

示例2:
输入:
4
2 1 1 2
输出:
2
说明:
类型1的糖果和类型2的糖果各吃一个,这样每个都留下了一个。

2. 小红的子序列划分

题目描述:
小红拿到了一个数组,她想把该数组划分成k个不相交的非空子序列(在原数组中可以不连续),使得所有子序列的极差之和尽可能大。你能帮帮她吗?
子序列极差的定义:最大值减去最小值。

输入描述:
第一行输入两个正整数n和k,代表数组长度和子序列划分的数量。
第二行输入n个正整数ai,代表小红拿到的数组。
1≤k≤n≤10^5
1≤ai≤10^9

输出描述:
一个整数,代表最大的极差之和。

示例1:
输入:
5 3
1 2 3 4 5
输出:
6
说明:
划分成3个子序列:{1,5}, {2,4}, {3},极差之和为4+2+0=6
可以证明,这样划分的极差之和是最大的。

示例2:
输入:
5 3
2 2 2 2 2
输出:
0

3. 小红的乘加操作

题目描述:
小红和小紫拿到了两个正整数x和y。她们轮流可以对x进行以下操作中的一个:
1. 使x乘以2。
2. 使x加上1。
谁先使得x≥y,谁就可以获得游戏的胜利。
小红先手进行操作,她想知道在双方足够聪明的情况下,自己能否保证必胜?共有t组询问。

输入描述:
第一行输入一个正整数t,代表询问的次数。
接下来的t行,每行输入两个正整数x,y,代表一次询问。
1≤t≤20
1≤x,y≤10^4
保证x<y

输出描述:
输出k行,如果小红必胜则输出”kou”,否则输出”yukari”。

示例1:
输入:
3
15 17
4 9
2 9
输出:
kou
yukari
kou
说明:
第一组询问,小红直接进行乘2操作即可获胜。
第二组询问,小红无论进行加1还是乘2操作,小紫进行一次乘2操作都可以使得x≥y
第三组询问,小红先进行乘2操作,使得x变成4,这样无论小紫如何操作,小红都可以取得胜利。

发表评论

您的电子邮箱地址不会被公开。 必填项已用 * 标注