0%

好未来202506515笔试

在规定时间内做完就行,编程题最简单的一次,一共30min写完

单选

  1. 程序运行结果
  • val实例变量

  • 实例变量没有“重写”机制,只有“隐藏”。

  • 编译器根据引用类型(Base)决定访问哪个变量。

  • 所以即使实际对象是 Sub,但因为 whoBase 类型的引用,所以访问的是 Base.val0

  • staticval静态变量

  • 静态变量属于类,而不是对象。

  • 访问静态变量也是在 编译时 根据引用类型决定。

  • 所以即使对象是 Sub,但 whoBase 类型引用,访问的是 Base.staticval0

  • staticMethod() 是一个 静态方法

  • 静态方法属于类,不是对象,不能被重写。

  • 静态方法的调用在 编译时 就确定了,取决于引用类型。

  • 因为 whoBase 类型的引用,所以调用的是 Base.staticMethod()

  • method() 是一个 非静态方法,并且在 Sub 中被重写了。

  • 非静态方法是 运行时动态绑定 的。

  • 运行时发现 who 实际指向的是 Sub 对象,所以调用的是 Sub.method()

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
public class haoweilai {  
Base who = new Sub();

public static void main(String[] args) {
haoweilai test = new haoweilai();
System.out.println(test.who.val); // 0
System.out.println(test.who.staticval); // 0
test.who.staticMethod(); // Base staticMethod
test.who.method(); // Sub method
}
}

class Base{
public int val = 0;
public static int staticval = 0;
public static void staticMethod() {
System.out.println("Base staticMethod");
}
public void method() {
System.out.println("Base method");
}
}

class Sub extends Base {
public int val = 1;
public static int staticval = 1;
public static void staticMethod() {
System.out.println("Sub staticMethod");
}
public void method() {
System.out.println("Sub method");
}
}
  1. SQL平均工资最高部门名称和平均工资
    不用offset,因为offset是跳过结果集中的行,limit是限制返回的个数
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    SELECT 
    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; -- 只取最高平均工资的那一行
  2. B+比B树最大优势是什么(更少IO)
  3. LRU采用什么结构(双向链表+哈希)
  4. 程序运行结果
  5. ZGC哪个JAVA版本提出的
    JDK 11中作为实验性特性引入,从JDK15开始正式支持
  6. int[] x = new int[10] 执行完后哪个是可能的
    x[9] = 0
  7. 数据库范式,非主属性,直接依赖于候选键,无传递依赖,是哪个范式
    无传递依赖是第三范式
    BCNF:消除在3NF中仍可能存在的某些冗余情况和更新异常

不定项

  1. 子类方法覆盖父类方法的原则
    • 子类方法不能比父类方法抛出更多的编译时异常
    • 子类方法的访问权限 不能比父类更严格,父类是public,子类不能是public
    • 子类只能重写父类非私有、非 final、非 static 方法
    • 子类不能重写父类static方法,都定义static方法,子类会隐藏父类,即在调用这些静态方法时,编译器根据引用类型(即变量声明的类型)来决定调用哪个版本的方法,而不是根据对象的实际类型。
    • 父类是抽象类(abstract class)时,子类也可以声明为抽象类,并可以选择性地实现部分抽象方法,将剩余的抽象方法留给更下层的子类继续实现。
  2. 索引
    聚簇索引决定数据在磁盘上的存储顺序
  3. 堆排序
    • 堆排序是基于比较的排序。
    • 堆排序不是稳定的排序算法。
    • 堆排序的最坏时间复杂度为O(n log n)。
    • 堆排序可以通过大根堆或小根堆来实现,分别用于升序和降序排序。
  4. 哪些方法可以显示创建对象
    • new 是最直接、最常用的对象创建方式。
    • clone() 方法适用于已有对象的浅复制或深复制,但要求类实现Cloneable接口。
    • 反序列化 从流中恢复对象状态,适用于对象持久化场景,但要求类实现Serializable接口。
    • 反射 提供了强大的动态创建对象的能力,常用于框架或工具库中。
    • JVM加载类 可能伴随静态初始化过程中对象的创建,但这更多是作为一种副作用而非主要创建手段。
  5. 会创建新线程的写法
    Thread、Runnable、Callable和Future

编程题

  1. 不重复的元素之和
  2. 数组中找两个数之和为目标值的两个下标