2023年Java面试题入门篇和进阶篇总结【答案+解析】
- 入门篇
- 1.、下列代码输出结果是()
- 2.x为float类型,y为double类型,a为int类型,b为long类型,c为char类型,问x+y*a/x+b/a+c的值是什么类型
- 3.下列哪种说法是正确的
- 4.mysql表user已有索引:`idx_name_age` (`name`,`age`)。查询语句select * from user where name='jack'是否经过此索引
- 5.mysql表user已有索引:`idx_name_age` (`name`,`age`)。查询语句select * from user where name='jack' or age = 18 是否经过此索引
- 6.private static volatile Long num; 变量num在内存中是否线程安全
- 7.下面有关jdbc statement的说法错误的是?
- 8.下面有关java object默认的基本方法,说法错误的是?
- 9.下列关键字序列为堆的是______。
- 10.二分查找树里查询一个关键字的最坏时间复杂度是______
- 11.下列哪些属于引用数据类型
- 12.在Java接口中,下面哪些方法是有效的方法声明
- 13.List有哪些实现类
- 14.Java中哪些集合是Collection派生出来的?
- 15.下列代码输出结果为1的是
- 进阶篇
- 1.进程从运行状态进入就绪状态的原因可能是 。
- 2.在可变式分区分配方案中,将空白区在空白区表中按地址递增次序排列是( )。
- 3.在MySQL中Replace在相同的主键或者唯一键的时候相当于以下以下哪个操作?
- 4.在计算机操作系统中信号量可以用来保证两个或多个关键代码段不被并发调用,而在进入一个关键代码段之前,线程必须获取到一个信号量,现假设有4个进程共享同一程序段,而且每次最多允许3个进程进入该程序段,则信号量的变化范围是多少( )?
- 5.给定以下代码,输出的内容是()
- 6.下列java声明合法的是:
- 7.Java语言中,有以下这些接口,如果我们把接口中没有定义任何方法的归纳到A集合,其他的归纳到B集合,那么以下哪个选项不能归纳到A集合中
- 8.下面的输出语句会有编译错误的是()
- 9.代码片段:
- 10.主机A与主机B已建立TCP连接,A的cwnd(拥塞窗口)大小初始值为1KB,ssthresh (阈值)为16KB,B的rwnd (接收缓存窗口)初始值为8KB,一个最大报文段为1KB,假设数据传输过程中未出现超时,经过3个RTT(3轮传输)后,且B尚未从缓存中取出任何数据时候,主机A的发送窗口大小为()
- 11.借助队列采用非递归的方式对二叉树进行层次遍历,遍历方向为从左至右,在遍历过程中,队列中的元素最多为多少个()
- 12.在一颗普通的树上,a 与 b 互为兄弟节点。将树转为二叉树后,下列哪种情形不可能发生()。
- 13.这里有一张中国高校院士数目信息表(院士姓名,高校所在省区)(只展示了部分数据,其余大量数据形式相同)
- 14.二叉树的中序遍历为[5,4,1,2,3,6],后序遍历为[4,5,2,6,3,1],新建平衡二叉树,按二叉树的前序遍历顺序将元素插入到平衡二叉树中,对于得到的平衡二叉树说法不正确的是()
- 15.请你判断一下这段C++代码的实现的功能是什么样的?
- 16.以下主机可以和202.115.112.218/28直接通信的是( )。
- 17.网络协议之间有规定的层次关系,下面选项中层次关系正确的是,上一层的网络的底层应该有下一层( )。
- 18.某个有向图如下,从顶点v1出发对其进行深度优先遍历,可能得到的遍历序列是(1);从顶点v1出发对其进行广度优先遍历,可能的到的序列是(2)
- 19.有学生表如下:
- 20.请问以下序列中能构成最小堆的是
🏠个人主页:@编程ID
🧑个人简介:大家好,我是编程ID,一个想要与大家共同进步的程序员儿
🧑今年java太卷了,如果各位在准备面试,找工作,刷算法,刷选择题,可以使用我找工作前用的刷题神器哦![面试刷题神器🎁]
💕欢迎大家:这里是CSDN,我总结知识的地方,欢迎来到我的博客,望能帮到各位想要找工作或者提高自己的小伙伴儿们,如果有什么需要改进的地方,还请大佬不吝赐教🤞🤞
往期文章>>>
Java最全面试题【五分钟看完】
Java后端精选面试题分享
Java经典面试题 带答案(五)
Java经典面试题 带答案(四)
Java经典面试题 带答案(三)
2023年春招Java面试选择题及答案解析
2023java面试题47道选择题及答案,来看看你能做对多少!!!
… … …
入门篇
1.、下列代码输出结果是()
int index = 100;
while ( index > 0 ){
index++;
if ( index = =100 ){
break;
}
}
A、一次循环都不会执行
B、循环执行100次
C、循环执行一次
D、死循环
正确答案:D
官方解析:while循环终止条件
单选题
2.x为float类型,y为double类型,a为int类型,b为long类型,c为char类型,问x+y*a/x+b/a+c的值是什么类型
A、double
B、long
C、int
D、char
正确答案:A
单选题
3.下列哪种说法是正确的
A、实例方法可直接调用超类的实例方法
B、实例方法可直接调用超类的类方法
C、实例方法可直接调用其他类的实例方法
D、实例方法可直接调用本类的类方法
正确答案:D
单选题
4.mysql表user已有索引:idx_name_age
(name
,age
)。查询语句select * from user where name='jack’是否经过此索引
A、是
B、否
C、视具体情况而定
正确答案:A
官方解析:mysql组合索引,只能按照字段排列顺序查询
单选题
5.mysql表user已有索引:idx_name_age
(name
,age
)。查询语句select * from user where name=‘jack’ or age = 18 是否经过此索引
A、是
B、否
C、视具体情况而定
正确答案:B
官方解析:mysql组合索引,只能按照字段排列顺序查询
单选题
6.private static volatile Long num; 变量num在内存中是否线程安全
A、是
B、否
C、视具体情况而定
正确答案:B
官方解析:volatile为轻量锁,为非线程安全
单选题
7.下面有关jdbc statement的说法错误的是?
A、JDBC提供了Statement、PreparedStatement 和 CallableStatement三种方式来执行查询语句,其中 Statement 用于通用查询, PreparedStatement 用于执行参数化查询,而 CallableStatement则是用于存储过程
B、PreparedStatement可以阻止常见的SQL注入式攻击
C、PreparedStatement中,“?” 叫做占位符,有多少个占位符就需要有多少个对应的值
D、在执行速度上,Statement 对象快于PreparedStatement 对象
正确答案:D
单选题
8.下面有关java object默认的基本方法,说法错误的是?
A、copy() 创建并返回此对象的一个副本
B、wait() 导致当前的线程等待,直到其他线程调用此对象的 notify() 方法或 notifyAll() 方法
C、toString() 返回该对象的字符串表示
D、equals(Object obj) 指示某个其他对象是否与此对象“相等”
正确答案:A
单选题
9.下列关键字序列为堆的是______。
A、60,70,65,50,32,100
B、65,100,70,32,50,60
C、100,60,70,50,32,65
D、32,50,100,70,65,60
正确答案:C
单选题
10.二分查找树里查询一个关键字的最坏时间复杂度是______
A、O(n log n)
B、O(n)
C、O(n^3)
D、O(logn)
正确答案:B
多选题
11.下列哪些属于引用数据类型
A、float
B、String
C、用户自定义的User类
D、Float
正确答案:BCD
多选题
12.在Java接口中,下面哪些方法是有效的方法声明
A、protected void function1()
B、private void function1()
C、void function1()
D、public void function1()
正确答案:CD
多选题
13.List有哪些实现类
A、ArrayList
B、LinkedList
C、Vector
D、Arrays
正确答案:ABC
官方解析:List常用的实现类有ArrayList,LinkedList,Vector,Stack
多选题
14.Java中哪些集合是Collection派生出来的?
A、List
B、Queue
C、Set
D、Map
正确答案:ABC
多选题
15.下列代码输出结果为1的是
A、
int cestcCount=0;
new Thread(
()->{
cestcCount++;
}
).start();
B
Integer cestcCount=0;
new Thread(
()->{
System.out.println(cestcCount+1);
}
).start();
C
AtomicInteger cestcCount=new AtomicInteger();
new Thread(
()->{
System.out.println(cestcCount.addAndGet(1));
}
).start();
正确答案:BC
进阶篇
单选题
1.进程从运行状态进入就绪状态的原因可能是 。
A、时间片用完
B、被选中占有CPU
C、等待某一事件
D、等待的事件已经发生
正确答案:A
单选题
2.在可变式分区分配方案中,将空白区在空白区表中按地址递增次序排列是( )。
A、最佳适应算法
B、最差适应算法
C、最先适应算法
D、最迟适应算法
正确答案:C
单选题
3.在MySQL中Replace在相同的主键或者唯一键的时候相当于以下以下哪个操作?
A、INSERT
B、DELETE+INSERT
C、UPDATE
D、其他都不是
正确答案:B
官方解析:replace具备替换拥有唯一索引或者主键索引重复数据的能力,也就是如果使用replace
into插入的数据的唯一索引或者主键索引与之前的数据有重复的情况,将会删除原先的数据,然后再进行添加
单选题
4.在计算机操作系统中信号量可以用来保证两个或多个关键代码段不被并发调用,而在进入一个关键代码段之前,线程必须获取到一个信号量,现假设有4个进程共享同一程序段,而且每次最多允许3个进程进入该程序段,则信号量的变化范围是多少( )?
A、0~3
B、-1~3
C、0~4
D、-2~2
正确答案:B
官方解析:最多全部进入时,为-1,最多允许3个,为-1~3
单选题
5.给定以下代码,输出的内容是()
public class Test {
public static void main(String[] args) {
try {
test();
System.out.println("A");
} catch (ArrayIndexOutOfBoundsException e) {
System.out.println("B");
return;
} catch (Exception e) {
System.out.println("C");
} finally {
System.out.println("D");
}
}
private static void test() {
int[] a = {1, 2, 4};
System.out.println(a[3]);
}
}
A、ABD
B、BD
C、B
D、ACD
正确答案:B
官方解析:数组下标越界,肯定会输出B的,由于return执行之前会先去执行finally里面的语句,所以B选择正确。
单选题
6.下列java声明合法的是:
A、default final String s;
B、public static native int meo();
C、abstract void hello() {}
D、abstract final String say();
正确答案:B
单选题
7.Java语言中,有以下这些接口,如果我们把接口中没有定义任何方法的归纳到A集合,其他的归纳到B集合,那么以下哪个选项不能归纳到A集合中
A、java.util.RandomAccess
B、java.lang.Runnable
C、java.lang.Cloneable
D、java.io.Serializable
正确答案:B
官方解析:考察java语言中,有哪些接口是没有定义任何方法的,以上选项A、C、D都没有定义任何方法。
单选题
8.下面的输出语句会有编译错误的是()
public class NowCoder {
public static void main(String[] args) {
int a = 5, b = 5;
System.out.println("a + b = " + a + b);
System.out.println("a - b = " + a - b);
System.out.println("a * b = " + a * b);
System.out.println("a / i2 = " + a / b);
}
}
A、System.out.println("a + b = " + a + b);
B、System.out.println("a - b = " + a - b);
C、System.out.println("a * b = " + a * b);
D、System.out.println("a / i2 = " + a / b);
正确答案:B
单选题
9.代码片段:
import java.util.*;
public class TestSet {
enum Num {ONE, THREE, TWO}
public static void main(String[] args) {
Collection coll = new LinkedList();
coll.add(Num.THREE);
coll.add(Num.ONE);
coll.add(Num.THREE);
coll.add(Num.TWO);
coll.add(Num.TWO);
Set set = new HashSet(coll);
System.out.println(set);
}
}
关于set变量的描述哪个选项是正确的?
A、set变量只包含了coll集合中的3个变量,并且顺序与coll里的相同。
B、set变量只包含了coll集合中的3个变量,但顺序无法确定。
C、set变量包含了coll集合中的5个变量,但顺序无法确定。
D、set变量包含了coll集合中的5个变量,并且顺序与coll里的相同。
单选题
10.主机A与主机B已建立TCP连接,A的cwnd(拥塞窗口)大小初始值为1KB,ssthresh (阈值)为16KB,B的rwnd (接收缓存窗口)初始值为8KB,一个最大报文段为1KB,假设数据传输过程中未出现超时,经过3个RTT(3轮传输)后,且B尚未从缓存中取出任何数据时候,主机A的发送窗口大小为()
A、1 KB
B、2 KB
C、3 KB
D、4 KB
正确答案:A
官方解析:
A在发送数据的过程中,A的cwnd大小始终没有达到阈值(16KB),所以A每经过一轮传输,cwnd就翻倍,所以A一共发送了1KB+2KB+4KB=7KB的数据,但是题目中说明了B并未从接收缓存中取出数据,所以B的接收缓存为8KB-7KB=1KB。A的发送窗口同时受cwnd和rwnd限制,即A=min{cwnd,rwnd},所以A的发送窗口为1KB
单选题
11.借助队列采用非递归的方式对二叉树进行层次遍历,遍历方向为从左至右,在遍历过程中,队列中的元素最多为多少个()
二叉树的结构如图所示:
A、5个
B、6个
C、7个
D、8个
正确答案:A
官方解析:
要对二叉树进行层次遍历,需要借助一个队列,先将二叉树根节点入队,完成初始化。下面出队并访问该节点,若该节点有左子树,将左子树根节点入队,若该节点有右子树,将右子树根节点入队,如此反复直到队列为空。
具体遍历操作如下表所示:
单选题
12.在一颗普通的树上,a 与 b 互为兄弟节点。将树转为二叉树后,下列哪种情形不可能发生()。
注:在将普通的树转换为二叉树过程中,节点在删除与自身子节点的连线时,只保留与最左侧子节点之间的连线。
A、a 是 b 的右孩子
B、a 是 b 的左孩子
C、a 是 b 的祖先节点
D、b 是 a 的祖先节点
正确答案:B
官方解析: 将普通的树转为二叉树的步骤如下:
- 加线。在所有兄弟节点之间加一条连线
2.每个节点都删除与自身子节点的连线,只保留与最左侧子节点之间的连线(这一点题目中已经说明)。 转换过程如下图所示:
根据以上步骤可知,转换为二叉树后,b 可以为 a 的父节点,也可以为 a 的祖先节点。如果将 a 与 b
调换一下位置,不会破坏题目中的条件,即转换前 a 与 b 还是兄弟节点。此时 a 可以为 b 的父节点,也可以为 b 的祖先节点 所以
选项A、C、D 均有可能。根据转换规则,如果转换为 a 是 b 的左孩子,那么转换前 a 必须是 b 的最左侧的子节点。 转换过程如下图所示:
所以选项 B 不成立。
单选题
13.这里有一张中国高校院士数目信息表(院士姓名,高校所在省区)(只展示了部分数据,其余大量数据形式相同)
±----------±--------+
| name |province |
±----------±--------+
| ad | GD |
| ws | ZJ |
| ge | FJ |
| MO | SX |
| wi | ZJ |
±----------±--------+
查询出哪个省区,出生院士人数最多?
A、select province,count() as count from college group by province limit 1;
B、select province,count() as count from college group by province order by count desc limit 1;
C、select province,count() as count from college order by count desc limit 1;
D、select province,count() as count from college group by province order by count limit 1;
正确答案:B
官方解析:暂无官方题目解析,去讨论区看看吧!
单选题
14.二叉树的中序遍历为[5,4,1,2,3,6],后序遍历为[4,5,2,6,3,1],新建平衡二叉树,按二叉树的前序遍历顺序将元素插入到平衡二叉树中,对于得到的平衡二叉树说法不正确的是()
A、有3个叶子结点
B、度为1的结点只有结点5
C、前序遍历为[4,2,1,3,6,5]
D、后序遍历为[1,3,2,6,5,4]
正确答案:C
官方解析: 由中序遍历和后序遍历的得到二叉树如下图,其前序遍历为[1,5,4,3,2,6]
平衡二叉树构建如下图:其前序遍历为[4,2,1,3,5,6],所以选C
单选题
15.请你判断一下这段C++代码的实现的功能是什么样的?
int func(int n) {
n && (n += func(n-1));
return n;
}
A、没有递归出口,无法结束
B、实现了n+n-1+…2+1的功能
C、实现了n-(n-1)+(n-2)-…-2+1的功能
D、实现了求n的二进制里面1的个数的功能
E、实现了求n的二进制里面0的个数的功能
正确答案:B
官方解析:通常实现递归的时候我们都会利用条件判断语句来决定递归的出口,但由于题目的限制我们不能使用条件判断语句,那么我们是否能使用别的办法来确定递归出口呢?答案就是逻辑运算符的短路性质。
以逻辑运算符 && 为例,对于 A && B 这个表达式,如果 A 表达式返回 False ,那么 A && B 已经确定为 False
,此时不会去执行表达式 B。同理,对于逻辑运算符 ||, 对于 A || B 这个表达式,如果 A 表达式返回True ,那么 A || B
已经确定为 True ,此时不会去执行表达式 B。利用这一特性,我们可以将判断是否为递归的出口看作 A && B 表达式中的 A 部分,递归的主体函数看作 B
部分。如果不是递归出口,则返回True,并继续执行表达式 B 的部分,否则递归结束。
其实这里就看后面的n+=func(n-1)的功能,很明显是递归实现1+2+…n-1+n的功能
单选题
16.以下主机可以和202.115.112.218/28直接通信的是( )。
A、202.115.112.205/28
B、202.115.112.225/28
C、202.115.112.195/28
D、202.115.112.212/28
正确答案:D
官方解析:
本题考察IP地址掩码的计算,掩码与IP地址做与运算可知,能和202.115.112.218/28直接通信(在同一个网段)的IP地址为202.115.112.208
~ 202.115.112.223,因此只有D符合。
单选题
17.网络协议之间有规定的层次关系,下面选项中层次关系正确的是,上一层的网络的底层应该有下一层( )。
A、
B、
C、
D、
正确答案:B
官方解析: 题目中出现的各个协议层次如图所示,因此只有B是正确的。
18.某个有向图如下,从顶点v1出发对其进行深度优先遍历,可能得到的遍历序列是(1);从顶点v1出发对其进行广度优先遍历,可能的到的序列是(2)
①v1 v2 v3 v4 v5
②v1 v3 v2 v4 v5
③v1 v3 v4 v5 v2
④v1 v3 v4 v2 v5
A、(1)②③④ (2)①
B、(1)①③ (2)①②
C、(1)①③④ (2)①②
D、(1)①③ (2)②④
正确答案:C
官方解析: ①③④可由深度优先遍历得到,①②可由广度优先遍历得到,所以选C
单选题
19.有学生表如下:
CREATE TABLE students (
s_id VARCHAR(20) PRIMARY KEY,
s_name VARCHAR(20) NOT NULL DEFAULT '',
s_birth VARCHAR(20) NOT NULL DEFAULT '',
s_sex VARCHAR(10) NOT NULL DEFAULT ''
);
现要查询students表的第16~20条数据,正确的查询语句是
A、select * from students limit 15,5;
B、select * from students limit 16,5;
C、select * from students limit 16,20;
D、select * from students limit 15,20;
正确答案:A
官方解析: limit是mysql的分页函数,可以快速选中我们想要的数据 它的用法主要是两种 limit x,表示选中前x条数据 limit
x,y表示选中第x+1到x+y条数据,或者理解成从第x+1条数据开始(包括第x+1)往后的y条数据 因此只有limit
15,5表示第16到20的数据
单选题
20.请问以下序列中能构成最小堆的是
A、4, 5, 7, 7, 8, 10, 4
B、10, 9, 8, 7, 3, 2, 1
C、3, 4, 5, 5, 5, 9, 6
D、3, 14, 10, 20, 30, 9, 12
正确答案:C
官方解析:
可以根据四个答案的序列画出对应的完全二叉树。
答案A:
4
5 7
7 8 10 4
并不满足任一非终端节点的数据值均不大于其左子节点和右子节点的值。
答案B:
10
9 8
7 3 2 1
此为最大堆,并非最小堆。
答案C:
3
4 5
5 5 9 6
满足任一非终端节点的数据值均不大于其左子节点和右子节点的值。
答案D:
3
14 10
20 30 9 12
并不满足任一非终端节点的数据值均不大于其左子节点和右子节点的值。
综上,正确答案为C。
结束语 🥇🥇🥇
发现非常好用的一个刷题网站,可以检测大家的基础!大家一起努力!加油!!!
包含数据库、Java、C++、C、Python、前端等等题目,难度可以自行选择
在线编程出答案,(也可自行查看答案),也有选择题,非常方便
程序员刷题神器网站点击链接注册即可刷题
祝大家早日找到满意的工作!