Java经典笔试题—day11

简介: Java经典笔试题—day11

🔎选择题

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

A.9HelloWorld

B._Hello World

C.Hello*World

D.Hello$World

D

Java中标识符由数字, 字母和下划线( _ ), 美元符号( $ )或人民币符号( ¥ )组成

规定标识符的开头不能是数字, 且标识符不能是关键字

(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

C

map 会将重复出现的 Key 值所对应的 Value 值进行更新

map.put(“name”,null), map 中存放的 Key 值为 name, Value 值为 null

map.put(“name”,“Jack”), map 中已经含有 name, 将其所对应的 Value 值进行更新为 Jack

此时 map 的大小仍然为 1

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

A.ArrayList和LinkedList均实现了List接口

B.ArrayList的访问速度比LinkedList快

C.添加和删除元素时,ArrayList的表现更佳

D.HashMap实现Map接口,它允许任何类型的键和值对象,并允许将null用作键或值

C

A.

图片来自网络

B.ArrayList 是顺序表(数组实现), LinkedList 是链表, 在给定下标的情况下, 顺序表的访问速度 > 链表的访问速度

C.

添加元素时, 如果不是在末尾添加元素, 顺序表需要将要添加元素的位置及其后面的位置挪开, 然后才能添加元素

删除元素时, 顺序表需要将要删除元素的后面的元素逐个向前挪动一位(覆盖前一位置的元素)

对于链表, 添加元素只需将前后两个节点之间断开, 并分别连接需要添加元素的节点即可

对于链表, 删除元素只需将要删除元素的前后节点与该节点断开连接, 再将前后节点进行连接即可

D.HashMap实现Map接口,允许将null用作键或值

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

A.CallableStatement是PreparedStatement的父接口

B.PreparedStatement是CallableStatement的父接口

C.CallableStatement是Statement的父接口

D.PreparedStatement是Statement的父接口

B

PreparedStatement是CallableStatement的父接口

Statement是PreparedStatement的父接口

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

A.重载函数必须具有不同的返回值类型

B.重载函数形参个数必须不同

C.重载函数必须有不同的形参列表

D.重载函数名可以不同

C

重载的特点

  • 方法名相同
  • 参数列表不同(参数类型, 顺序, 个数)

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

A.LinkedList继承自List

B.AbstractSet继承自Set

C.HashSet继承自AbstractSet

D.WeakMap继承自HashMap

C

图片来自网络

A. List 是接口, 接口是被实现, 不是继承

B. Set 是接口, 接口是被实现, 不是继承

C.

D.

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

A.0

B.1

C.2

D.3

A

此处写入的 20 表示初始化容量为 20

若什么都不写, 则使用系统默认的容量 10

参考 ArrayList 源码

初始化容量 > 0, new Object 数组, 该操作并未涉及到扩容

(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

B

change() 方法是引用传递

进入 change() 方法的形参 str 最初指向的是 “good” 的地址

当执行到 str = “test ok” 时, 形参 str 指向的是 “test ok” 的地址

而实参 str 仍然指向的是 “good” 的地址

ch[0] = ‘g’ 是将 ch 所指向地址的值进行了修改, 即 char[] ch = {‘g’, ‘b’, ‘c’}

但 ch 所指向的对象未发生改变

(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

D

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

A.java.sql

B.java.awt

C.java.lang

D.java.swing

A

B.包含用于创建用户界面和绘制图形图像的所有分类

C.提供了 Java 中的基础类, 包括基本Object类, Class类, String类, 基本类型的包装类, 基本的数学类等等最基本的类

D.是一个用于开发Java应用程序用户界面的开发工具包

🔎编程题


🥝最近公共祖先


题目描述

将一棵无穷大满二叉树的结点按根结点一层一层地从左往右编号,根结点编号为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


🔎结尾

创作不易,如果对您有帮助,希望您能点个免费的赞👍

大家有什么不太理解的,可以私信或者评论区留言,一起加油

相关文章
|
存储 安全 Java
冒死潜入某个外包公司获得的珍贵Java基础笔试题(附答案)
冒死潜入某个外包公司获得的珍贵Java基础笔试题(附答案)
492 0
|
3月前
|
搜索推荐 算法 Java
2025 年互联网大厂校园招聘 JAVA 工程师笔试题及备考要点解析
本文针对互联网大厂校招Java工程师笔试题进行解析,涵盖基础知识、面向对象编程、数据结构与算法、异常处理及集合框架等核心内容。从数据类型、运算符到流程控制语句,从类与对象、继承多态到数组链表、排序算法,再到异常捕获与集合框架应用,结合实际案例深入剖析,助你系统掌握考点,提升应试能力。资源链接:[点此获取](https://pan.quark.cn/s/14fcf913bae6)。
147 9
|
3月前
|
Java 数据库连接 API
互联网大厂校招 JAVA 工程师笔试题解析及常见考点分析
本文深入解析互联网大厂校招Java工程师笔试题,涵盖基础知识(数据类型、流程控制)、面向对象编程(类与对象、继承与多态)、数据结构与算法(数组、链表、排序算法)、异常处理、集合框架、Java 8+新特性(Lambda表达式、Stream API)、多线程与并发、IO与NIO、数据库操作(JDBC、ORM框架MyBatis)及Spring框架基础(IoC、DI、AOP)。通过技术方案讲解与实例演示,助你掌握核心考点,提升解题能力。
159 2
|
3月前
|
设计模式 算法 Java
2025 春季校招 Java 研发笔试题详细解析及高效学习指南
本指南专为2025春季校招Java研发岗位笔试设计,涵盖Java 17+新特性(如模式匹配、文本块、记录类和密封类)、现代技术栈(Spring Boot 3、响应式编程、Stream API增强)以及算法与数据结构实战。同时深入解析Spring Data JPA、事务管理、性能优化等内容,并结合实际案例讲解常见算法题解与设计模式应用。资源包含核心知识点、面试题及笔试技巧,助力高效备考。下载地址:[链接](https://pan.quark.cn/s/14fcf913bae6)。
85 1
|
3月前
|
存储 算法 NoSQL
2025 春季校招 java 研发岗位笔试题及相关内容
这份指南针对2025春季校招Java研发岗位,系统梳理了笔试核心知识点。内容涵盖Java基础(关键字、数据类型、循环与条件判断)、集合框架(List、Set、Map)、多线程(创建、同步、休眠与等待)以及异常处理(类型与机制)。通过典型例题解析与实践指导,帮助求职者掌握解题思路,提升编程能力,为成功通过校招笔试奠定基础。资源链接:[https://pan.quark.cn/s/14fcf913bae6](https://pan.quark.cn/s/14fcf913bae6)
124 0
|
存储 Java 编译器
刷完一千道java笔试题的常见题目分析
这篇文章是关于刷完一千道Java笔试题后的常见题目分析,涵盖了Java基础知识点,如标识符命名规则、抽象类与接口的区别、String类的equals方法、try-catch-finally块的执行逻辑、类与实例方法的区别、this与super关键字的用法、面向对象的基本概念、重写与重载的原则等,并建议结合JVM内存结构图加深理解。
刷完一千道java笔试题的常见题目分析
|
SQL 存储 数据管理
Java经典笔试题—day13
Java经典笔试题—day13
223 0
|
SQL Java 数据库连接
Java笔试题
Java笔试题
116 0
|
机器学习/深度学习 SQL 关系型数据库
Java经典笔试题—day14
Java经典笔试题—day14
198 0
Java经典笔试题—day12
Java经典笔试题—day12

热门文章

最新文章