多选题
1.下面哪些语句能够正确地生成5个空字符串?(AD)
A.String a[]={"","","","",""};
B.String a[5];
C.String[5] a;
D.String a[]=new String[5]; for(int i=0;i<5; a[i++]="");
E.String []a=new String[5]; for(int i=0;i<5; a[i++]=null);
解析:
BC语法错误,E创建了5个null对象。
2.在Java中,关于JVM(Java虚拟机)的描述,以下哪些是正确的(ACD)
A JVM负责将Java字节码转换为机器码
B.JVM平台是独立的,与操作系统无关
C.JVM是Java跨平台特性的关键
D.JVM是Java程序的运行环境
解析:
虽然 Java 代码可以在不同的 JVM 上运行,但 JVM 本身是依赖于操作系统的。
3.关于递归法的说法不正确的是( C )
A.占用CPU的处理时间更多
B.要消耗大量的内存空间,程序执行慢,甚至无法执行
C.递归法比递推法的执行效率更高
D.程序结构更简洁
4.以下哪些属于JVM判定对象是否需要回收的方法(BD)
A.进程死亡
B.对象引用遍历
C.对象长时间没有使用
D.引用计数
5.
java
String s=new String("hello");
String t =new String("hello");
char c[]={'h','e','l','l','o'};
下列哪些表达式返回true?( CD )
A.t.equals( c )
B.s==t
C.t.equals (new String("hello"))
D.s.equals(t)
6.在Java应用中实现安全的会话管理时,以下哪些做法是有益的( BC )
A.将会话令牌存储在客户端的本地存储中
B.使用HTTPS保护会话令牌的传输
C.定期更换会话令牌
D.使用长期有效的会话令牌(session token)
解析:
将会话令牌存储在客户端的本地存储中容易被跨站脚本(XSS)攻击获取。使用长期有效的会话令牌增加了会话被劫持和滥用的风险。
7.关系数据模型的三个组成部分包括( BCD )
A.恢复
B.数据结构
C.完整性约束
D.数据操作
E.值域定义
8.在编写单元测试时,以下哪些做法是值得推荐的(ABD)
A.尽量避免使用硬编码的数据和预期结果
B.使用Mock对象来模拟依赖项的行为
C.连接真实的数据库进行测试,提升数据有效性
D.每个测试方法应该只测试一个功能点
解析:
单元测试应该尽可能地避免外部依赖,以提高测试速度和可靠性。连接真实数据库会引入外部依赖增加测试的复杂性,降低测试速度,并且可能会对数据库产生副作用。
9.以下哪些try语句块是合法的( BC )
A.try { // do something } catch (Exception e) { //handle exception } finally { // do something } finally { // do something }
B.try { // do something } catch (Error e){ //handle error }
C.try { // do something } finally { // do something }
D.try { // do something } finally { // do something } catch (Exception e) { //handle exception }
解析:
合法的 try 语句块必须包含 try 块,并且至少包含一个 catch 块或一个 finally 块。 catch 块必须在 finally 块之前,且 finally 块只能有一个。
10.常见的几种约束有(ABCDE)
A.检查约束
B.唯一约束
C.非空约束
D.外键约束
E.主键约束
F.完整性约束
11.以下哪些Java设计模式属于创建型模式( ABD )
A.工厂模式
B.原型模式
C.观察者模式
D.单例模式
解析:
观察者模式属于行为型模式。
12.MVC模式适用于以下哪些情况( BC )
A.几个页面拥有大量公共的处理过程
B.要为同样的数据提供多个视图的应用程序
C.实现了数据层与表示层的分离,特别适用于开发与用户图形界面有关的应用程序
D.单次提交会产生多个基本外观
13.在软件设计过程中,以下哪些活动或工具通常用于需求分析阶段( CD )
A.E-R图
B.类图(Class Diagram)
C.用例图(Use Case Diagram)
D.用户访谈与调查
解析:
E-R 图和类图则属于后续的设计阶段,用于对数据和系统结构进行更详细的描述。
14.下列哪些情况可以终止当前线程的运行?( D )
A.当该线程调用sleep()方法时
B.当创建一个新线程时
C.当一个优先级高的线程进入就绪状态时
D.抛出一个异常
解析:
调用 sleep() 方法、创建新线程、高优先级线程进入就绪状态只会暂停或抢占线程的执行,而不会终止线程的运行。
15.JDK1.8中,下面有关java抽象类和接口的区别,说法错误的是?( C )
A.抽象类中可以包含非抽象的普通方法,接口中的方法必须是抽象的,不能有非抽象的普通方法
B.一个类可以实现多个接口,但只能继承一个抽象类
C.接口中可以有普通成员变量,抽象类中没有普通成员变量
D.抽象类可以有构造方法,接口中不能有构造方法
解析:
接口中的成员变量必须是常量(static final),而抽象类可以有普通成员变量。
16.下面哪些是对称加密算法( AD )
A.AES
B.DSA
C.RSA
D.DES
17.下面关键字中,哪几项是用于异常处理语句( BCD )
A.break
B.catch
C.finally
D.try
编程题
给定一个长度为n的数组,数组中的每个元素,表示一根水管的长度,水管可以在任意位置锯开。如果要从这些水管中切割出至少k个长度都为m的水管,请问m最大是多少?
示例1
输入
[1,2,3,4,5],3
输出
3
示例2
输入
[1,2,3,4,5],5
输出
2
示例3
输入
[1,2,3,4,5],7
输出
1
题解
java
class Solution {
public int maxLength(int[] nums, int k) {
// 1. 边界条件检查
if (nums == null || nums.length == 0 || k <= 0) {
return 0;
}
// 2. 初始化二分查找的左右边界
int left = 1;
int right = 0;
// 3. 确定右边界
for (int num : nums) {
right = Math.max(right, num);
}
// 4. 二分查找循环
while (left <= right) {
// 5. 计算中间值
int mid = left + (right - left) / 2;
// 6. 统计切割数量
int count = 0;
for (int num : nums) {
count += num / mid;
}
// 7. 判断切割数量是否满足要求
if (count >= k) {
left = mid + 1;
} else {
right = mid - 1;
}
}
// 8. right 存储的是满足条件的最大长度
return right;
}
}