0
点赞
收藏
分享

微信扫一扫

基于apache paimon实时数仓全增量一体实时入湖

juneyale 2023-05-24 阅读 48

Java经典笔试题—day11

🔎选择题

(1)下面哪个标识符是合法的?

A.9HelloWorld
B._Hello World
C.Hello*World
D.Hello$World

(2)以下java程序代码,执行后的结果是()

java.util.*
HashMap<String, String> map = new HashMap<>();	
map.put("name",null);		
map.put("name","Jack");	
System.out.println(map.size());

A.0
B.null
C.1
D.2

(3)Java中的集合类包括ArrayList、LinkedList、HashMap等类,下列关于集合类描述错误的是()

A.ArrayList和LinkedList均实现了List接口
B.ArrayList的访问速度比LinkedList快
C.添加和删除元素时,ArrayList的表现更佳
D.HashMap实现Map接口,它允许任何类型的键和值对象,并允许将null用作键或值

(4)以下描述正确的是 ( )

A.CallableStatement是PreparedStatement的父接口
B.PreparedStatement是CallableStatement的父接口
C.CallableStatement是Statement的父接口
D.PreparedStatement是Statement的父接口

(5)下面有关重载函数的说法中正确的是()

A.重载函数必须具有不同的返回值类型
B.重载函数形参个数必须不同
C.重载函数必须有不同的形参列表
D.重载函数名可以不同

(6)下列关于容器集合类的说法正确的是?

A.LinkedList继承自List
B.AbstractSet继承自Set
C.HashSet继承自AbstractSet
D.WeakMap继承自HashMap

(7)ArrayList list = new ArrayList(20);中的list扩充几次 ( )

A.0
B.1
C.2
D.3

(8)以下程序的输出结果是?

public class Example {
    String str = new String("good");
    char[] ch = { 'a', 'b', 'c' };

    public static void main(String args[]) {
        Example ex = new Example();
        ex.change(ex.str, ex.ch);
        System.out.print(ex.str + " and ");
        System.out.print(ex.ch);
    }

   public static void change(String str, char ch[]) {
        str = "test ok";
        ch[0] = 'g';
    }
}

A.good and abc
B.good and gbc
C.test ok and abc
D.test ok and gbc

(9)下面的方法,当输入为2的时候返回值是多少?

public static int getValue(int i) {
        int result = 0;
        switch (i) {
        case 1:
            result = result + i;
        case 2:
            result = result + i * 2;
        case 3:
            result = result + i * 3;
        }
        return result;
}

A.0
B.2
C.4
D.10

(10)提供Java存取数据库能力的包是( )

A.java.sql
B.java.awt
C.java.lang
D.java.swing

🔎编程题


🥝最近公共祖先


题目描述

将一棵无穷大满二叉树的结点按根结点一层一层地从左往右编号,根结点编号为1。现给定a,b为两个结点。设计一个算法,返回a、b最近的公共祖先的编号。注意其祖先也可能是结点本身

在这里插入图片描述

解题思路

在这里插入图片描述
以该图为例

  • 因为根节点为 1, 所以子节点 = 父节点 / 2
  • 当a, b 为同一节点时, 其最近公共祖先就是自己
  • 当a, b 在同一侧时
    • a = 2,b = 4, 最近公共祖先为2
    • a = 4, b = 5, 最近公共祖先为2
  • 当a, b 不在同一侧时
    • a = 2, b = 3, 最近公共祖先为1

根据上面的信息, 我们需要判断a, b 节点中较大的节点
通过较大的节点 / 2, 得到该节点的父节点, 并判断父节点是否与a, b 中较小的节点相等
如果相等, 则该节点即为最近公共祖先
如果不等, 则继续下一轮循环

public static int getLCA(int a, int b) {
      // write code here
      while(a != b) {
          if(a > b) {
              a /= 2;
          } else {
              b /= 2;
          }
      }
      return a;
}

📢题目链接
链接: link


🥝最大连续bit数


题目描述

求一个int类型数字对应的二进制数字中1的最大连续数,例如3的二进制为00000011,最大连续2个1

数据范围:数据组数:1≤t≤5 ,1≤n≤500000

进阶:时间复杂度:O(logn) ,空间复杂度:O(1)

输入描述

输入一个int类型数字

输出描述

输出转成二进制之后连续1的个数

在这里插入图片描述

解题思路

枚举

枚举输入数字的连续1的个数, 记录为 count
当前位的数字不是1时, 比较 count 和 maxCount 中的较大值赋值给 maxCount

//最大连续bit数
import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        int num = scan.nextInt();

        int maxCount = getMAX(num);
        System.out.println(maxCount);
    }

    private static int getMAX(int num) {
        int maxCount = 0,count = 0;
        for (int i = 31; i >= 0; i--) {
            if((num & (1 << i)) != 0) {
                count++;
            } else {
                maxCount = Math.max(maxCount,count);
                count = 0;
            }
        }
        return Math.max(maxCount, count);
    }
}

📢题目链接
链接: link


🔎结尾

举报

相关推荐

0 条评论