在规定时间内做完就行,编程题最简单的一次,一共30min写完
单选
- 程序运行结果
val
是 实例变量。实例变量没有“重写”机制,只有“隐藏”。
编译器根据引用类型(
Base
)决定访问哪个变量。所以即使实际对象是
Sub
,但因为who
是Base
类型的引用,所以访问的是Base.val
→ 0。staticval
是 静态变量。静态变量属于类,而不是对象。
访问静态变量也是在 编译时 根据引用类型决定。
所以即使对象是
Sub
,但who
是Base
类型引用,访问的是Base.staticval
→ 0。staticMethod()
是一个 静态方法。静态方法属于类,不是对象,不能被重写。
静态方法的调用在 编译时 就确定了,取决于引用类型。
因为
who
是Base
类型的引用,所以调用的是Base.staticMethod()
。method()
是一个 非静态方法,并且在Sub
中被重写了。非静态方法是 运行时动态绑定 的。
运行时发现
who
实际指向的是Sub
对象,所以调用的是Sub.method()
。
1 | public class haoweilai { |
- SQL平均工资最高部门名称和平均工资
不用offset,因为offset是跳过结果集中的行,limit是限制返回的个数1
2
3
4
5
6
7
8
9
10
11
12
13
14SELECT
d.department_name,
AVG(s.amount) AS avg_salary
FROM
Employee e
JOIN
Department d ON e.department_id = d.department_id
JOIN
Salary s ON e.employee_id = s.employee_id
GROUP BY
d.department_name
ORDER BY
avg_salary DESC -- 按照平均工资降序排列,以获取最高平均工资的部门
LIMIT 1; -- 只取最高平均工资的那一行 - B+比B树最大优势是什么(更少IO)
- LRU采用什么结构(双向链表+哈希)
- 程序运行结果
- ZGC哪个JAVA版本提出的
JDK 11中作为实验性特性引入,从JDK15开始正式支持 int[] x = new int[10]
执行完后哪个是可能的
x[9] = 0
- 数据库范式,非主属性,直接依赖于候选键,无传递依赖,是哪个范式
无传递依赖是第三范式
BCNF:消除在3NF中仍可能存在的某些冗余情况和更新异常
不定项
- 子类方法覆盖父类方法的原则
- 子类方法不能比父类方法抛出更多的编译时异常
- 子类方法的访问权限 不能比父类更严格,父类是public,子类不能是public
- 子类只能重写父类非私有、非 final、非 static 方法
- 子类不能重写父类static方法,都定义static方法,子类会隐藏父类,即在调用这些静态方法时,编译器根据引用类型(即变量声明的类型)来决定调用哪个版本的方法,而不是根据对象的实际类型。
- 父类是抽象类(abstract class)时,子类也可以声明为抽象类,并可以选择性地实现部分抽象方法,将剩余的抽象方法留给更下层的子类继续实现。
- 索引
聚簇索引决定数据在磁盘上的存储顺序 - 堆排序
- 堆排序是基于比较的排序。
- 堆排序不是稳定的排序算法。
- 堆排序的最坏时间复杂度为O(n log n)。
- 堆排序可以通过大根堆或小根堆来实现,分别用于升序和降序排序。
- 哪些方法可以显示创建对象
new
是最直接、最常用的对象创建方式。clone()
方法适用于已有对象的浅复制或深复制,但要求类实现Cloneable
接口。- 反序列化 从流中恢复对象状态,适用于对象持久化场景,但要求类实现
Serializable
接口。 - 反射 提供了强大的动态创建对象的能力,常用于框架或工具库中。
- JVM加载类 可能伴随静态初始化过程中对象的创建,但这更多是作为一种副作用而非主要创建手段。
- 会创建新线程的写法
Thread、Runnable、Callable和Future
编程题
- 不重复的元素之和
- 数组中找两个数之和为目标值的两个下标