单选题
1.以下关于JAVA自动类型转换,描述错误的是哪一项?(B)
A.byte->short
B.char->short
C.char->int
D.float->double
2.请选择运行以下代码后,系统显示的内容什么?(B)
public class Test {
static {
int x=1;
}
static int x,y;
public static void main(String[] args) {
x--;
add();
System.out.println(x+y+ ++x);
}
public static void add() {
y=x++ + ++x;
}
}
A.2
B.3
C.7
D.8
解析:
静态代码块中的局部变量x仅在静态代码块内部有效,并不会影响后续的代码执行。
3.以下关于JAVA集合类,说法错误的是哪一项?(B)
A.Set存储的是不重复的数据,List存储的是可以重复的数据
B.Set检索效率高,删除和插入效率低。List检索效率低,删除和插入效率高
C.集合框架的类和接口均在java.util包中
D.任何对象加入集合类后,在取出的时候,需要进行强制类型转换
解析:
Set和List的效率与具体的实现类有关。
4.下列关于类和接口描述错误的是哪一项?(A)
A.接口和抽象类都不可以被实例化,都不能拥有构造函数
B.接口只可以包含抽象方法
C.抽象类可以包含抽象方法和非抽象方法
D.类只能继承一个父类,但是可以实现多个接口
注意:
从 Java 8 开始,接口可以包含默认方法 (default methods) 和静态方法 (static methods),Java 9 之后接口可以包含私有方法(private method)。
5.下面程序的运行结果是什么?(B)
public static void main(String[] args) {
Thread t=new Thread(){
public void run(){
pong();
}
};
t.run();
System.out.println("ping");
}
static void pong(){
System.out.println("pong");
}
A.
ping
pong
B.
pong
ping
C.
ping
pong
和
pong
ping
都有可能
D.都不输出
解析:
直接调用 run() 方法,实际上是在 当前主线程 中执行 run() 方法的代码,不会创建新的线程,pong() 方法会在主线程中执行,输出 “pong”,执行完run()方法,回到main线程,打印出"ping"。
6.在不考虑分区的内存容量的情况下,JDK1.8 进行大文件读写,采用哪种方式分配内存效率最好?(B)
A.ByteBuffer.allocate(size)
B.ByteBuffer.allocateDirect(size)
C.MappedByteBuffer.allocate(size)
D.new Byte[size]
7.以下关于spring描述,说法错误的是哪一项?©
A.ApplicationContext包含BeanFactory的全部功能,功能更全面
B.spring中的bean默认是单例模式,无状态、线程不安全的
C.当bean作用域为prototype时,创建容器的时候进行初始化
D.spring-core模块提供框架基础部分,包括loC和依赖注入
解析:
当bean的作用域为 prototype 时,bean是在每次请求(注入、显式调用 getBean 方法)时进行初始化,而不是在创建容器的时候进行初始化。
8.下列请求路径符合restful风格是哪一项?©
A.https://example.com/api/getallUsers GET
B.https://example.com/api/User/add POST
C.https://example.com/api/users/1 DELETE
D.https://example.com/api/user/delete/1 POST
解析:
RESTful 风格的核心原则:
-
使用 HTTP 方法 (GET, POST, PUT, DELETE 等) 来表示对资源的操作。
-
使用名词 (通常是复数) 来表示资源,而不是动词。
-
使用 URI (统一资源标识符) 来标识资源,而不是操作。
-
保持 URI 的简洁、一致和可预测。
9.下面说法错误的是哪一项?(D)
A.Delete删除表中数据,可以加where字句。
B.Truncate删除表中数据,再插入数据时自增长id又从1开始。
C.Drop直接删掉表。
D.Truncate删除表中数据,再插入数据时自增长id按原值递增。
10.在数据库设计中,下列哪个选项描述了第一范式(1NF)的原则?(D)
A.每个数据列都应该被赋予一个唯一的列名
B.所有数据都应该包含在单个表格中
C.所有数据都应该可以被正确存储和管理
D.所有数据都应该可以被分解成最小的数据单元
11.什么是分布式事务?©
A.将请求分发到多个后端服务器的过程
B.将数据存储在多个节点之间的过程
C.确保多个事务的一致性的过程
D.将计算任务分配给多个处理器的过程
12.Bloom Filter说法错误的是哪一项?©
A.可以用来检索一个元素是否在一个集合中
B.会出现误判情况
C.可以插入或删除集合中的元素
D.需要提供多个哈希函数
解析:
Bloom Filter 不支持直接删除元素。一旦元素被插入,就无法将其从过滤器中删除。要删除元素,需要创建一个新的 Bloom Filter。
13.下面关于Redis中事务和MySQL中事务的区别,说法错误的是哪一项?(D)
A.Redis不支持事务回滚,MySQL支持事务回滚
B.Redis以Multi开始事务,以Exec执行事务的commands队列;MySQL以Begin开启一个事务,以Commit提交事务
C.Redis实现事务基于commands队列;MySQL实现事务基于undo/redo日志
D.Redis默认开启事务;MySQL默认不开启事务
解析:
Redis 默认不开启事务。需要使用 MULTI 命令显式开启事务。
14.以下关于Zookeeper的Leader节点在收到数据变更请求后的读写流程说法正确的是哪一项?(D)
A.仅写入内存
B.同时写入磁盘和内存
C.先写入内存再写入磁盘
D.先写磁盘再写内存
注意:
Follower 先写入磁盘,然后收到 Quorum 之后,Leader 先写入内存,后写入磁盘。如果只看 Leader 写入,选项C是对的,但是整个流程的开始是Follower先写磁盘。
15.HBase依靠什么存储底层数据?(A)
A.HDFS
B.Hadoop
C.Memory
D.MapReduce
16.以下不能有效解决过拟合的方法是哪一项?©
A.增加样本数量
B.通过特征选择减少特征数量
C.训练更多的迭代次数
D.采用正则化方法
多选题
17.下列关于equals和hashCode描述哪些是正确的?(ABCD)
A.equals和hashCode都是Object类的方法
B.equals默认比较的是对象的引用是否相等,需要比较对象属性值是否相等时可以重写equals方法
C.重写equals的同时,通常也需要重写hashCode方法,以保证相等的对象具有相同的哈希码
D.在集合类中,如HashMap等,使用哈希码来确定对象在集合中的存储位置,以便快速查找和比较对象
18.下列有关finally语句块说法哪些是正确的?(AC)
A.不管发生异常,finally块都会被执行
B.finally块在会在try或者catch块中的return语句之前执行
C.finally块如果存在return语句会覆盖try块中的return返回值
D.finally块中不可以抛异常
解析:
finally块的语句在try或catch中的return语句执行之后返回之前执行,return表达式的结果会暂时保存起来。如果finally里也有return语句则覆盖try或catch中的return语句暂存的结果直接返回;若finally中没有return则返回try或者catch中暂存的return表达式的结果。
19.JAVA反射机制主要提供了以下哪些功能?(ABCD)
A.在运行时判断一个对象所属的类
B.在运行时构造一个类的对象
C.在运行时判断一个类所具有的成员变量和方法
D.在运行时调用一个对象的方法
20.在使用@Autowired注解时,如果一个类可以有多种类型,就会对Spring IoC 容器注入造成困扰,这种情况我们称之为歧义性,为解决这一问题,我们可以使用什么注解?(BD)
A.@Component
B.@Primary
C.@Resource
D.@Qualifier
21.常见的web攻击方式有哪些?(ABC)
A.SQL注入
B.XSS
C.CSRF
D.敏感信息泄露
解析:
敏感信息泄露本身并不算是一种“攻击方式”,而是由多种攻击方式(如SQL注入、XSS、CSRF等)或其他原因(如不安全的存储或传输方式、内部人员疏忽等)导致的严重安全风险。
22.下面哪些属于SQL常见约束?(BCD)
A.AUTO_INCREMENT
B.PRIMARY KEY
C.FOREIGN KEY
D.UNIQUE
解析:
AUTO_INCREMENT 不是一种独立的 SQL 约束类型。 它是一个列的属性或功能,通常与 PRIMARY KEY 或 UNIQUE 约束一起使用。
23.下列哪些情况需要建索引?(ABC)
A.经常用作查询条件的字段需要创建索引
B.经常需要排序、分组和统计的字段需要建立索引
C.查询中与其他表关联的字段,外键关系建立索引
D.数据重复且分布平均的字段建索引,如true, false之类
解析:
例如布尔类型字段 (true/false)、性别字段 (male/female) 等,不适合创建索引。因为这些字段的索引选择性很低,即使使用了索引,数据库仍然可能需要扫描大量的数据行,索引反而会降低查询效率。
24.消息队列有哪些使用场景?(ABCD)
A.应用解耦
B.流量削峰
C.异步处理
D.消息通讯
E.远程调用
25.下面哪些数据结构可以用于实现图的存储?(AB)
A.邻接矩阵
B.邻接表
C.哈希表
D.二叉树
26.关于Zookeeper集群容错性的说法,哪些是正确的?(AD)
A.3个节点的cluster可以挂掉1个节点
B.3个节点的cluster可以挂掉2个节点
C.4个节点的cluster可以挂掉2个节点
D.2个节点的cluster不能挂掉任何1个节点
解析:
Zookeeper 集群通过 Quorum 机制来保证数据的一致性和可用性。
Quorum 指的是集群中参与决策的节点数量。为了保证集群的正常运行,Zookeeper 需要保持大多数节点(即 Quorum)的正常运行。如果集群总共有 N 个节点,那么 Quorum 的大小至少为 ⌈N / 2⌉ + 1个节点(向上取整)。
判断题
27.泛型方法的声明和普通方法一样,类型参数可以使用引用型类型,也可以使用原始类型。(B)
A.正确
B.错误
解析:
在Java中,泛型方法的类型参数只能使用引用类型,不能使用原始类型(如int, char, boolean等)。引用类型包括自定义类、接口以及Java提供的封装类(如Integer, Character, Boolean等)都可以用作泛型类型参数。
28.MySQL数据库中,NULL与它本身的比较可以使用=,<>或!=。(B)
A.正确
B.错误
解析:
在 MySQL 中,NULL 值不能使用标准的比较运算符 =、<> 或 != 进行比较。必须使用 IS NULL 和 IS NOT NULL 运算符来进行 NULL 值的判断。
29.SAGA模式不需要事务有幂等性。(B)
A.正确
B.错误
解析:
SAGA 模式为了保证在分布式环境下最终数据的一致性,需要事务(包括正向事务和补偿事务)具有幂等性。
30.RPC可以实现像调用本地服务一样调用远程计算机上的服务,WebService就是一种基于 Http协议的RPC。(B)
A.正确
B.错误
解析:
WebServic可以使用RPC的机制来实现远程调用,但也可以采用其他机制(如 REST)。
31.在某些情况下,可以用位运算&,来代替%实现取模运算。(A)
A.正确
B.错误
解析:
在特定条件下(当被除数是 2 的幂次方时),可以使用位运算 & 来代替取模运算 %,并且可以提高计算效率。
编程题
1.题目描述
给定一个长度为n的非负数组,找出数组中所有满足条件的子数组的个数,条件是:子数组的元素的和大于等于k。
样例1
输入
[1,2,3,4]
5
输出
5
题解
class Solution {
public int countsubarrays(int[] arr, int k){
int len = arr.length;
int ans=0;
for(int left =0;left<len;left++){ int sum="0;" for(int right="left;right">=0;right--){
sum+=arr[right];
if(sum>=k){
ans++;
}
}
}
return ans;
}
}
2.题目描述
使用递归算法,倒序输出一个整数,如输入5678,则输出8765
样例1
输入
5978
输出
"8795"
题解
class Solution {
public String convert(int num){
if(num<10){
return String.valueOf(num);}
return String.valueOf(num%10)+convert(num/10);
}
}