简答题
1、当我们将对象放入HashSet集合中时,equals与hashcode方法的相关问题。
问1:当equals方法返回true时,hashcode方法的返回值是否要求相等?(C等级)并说明理由。(B等级)
问2:HashSet维护元素时使用的数据结构是什么?Equals与hashcode方法如何参与其中?(A等级)
2、异常的相关问题
问1:请说明异常的分类与继承关系。(C等级)
问2:请说明throw与throws关键字的区别。(B等级)
问3:假设有一try……catch……finally代码片段,如果finally中有代码会抛出checked异常,那么需要如何处理?并说明理由。(A等级)
3、关于方法重载与重写的相关问题
问1:请分别说明,当方法声明满足什么条件时,能够构成重写、重载。(C等级)
问2:请说明静态方法是否能发生重写、重载,如果不能,请给出理由。(A等级)
4、关于对象初始化的相关问题
问1:请说明类定义中都有哪些位置可以用来初始化成员变量?(C等级)
问2:如果成员变量由final关键字修饰,final是如何影响初始化的?(B等级)
问3:请解释“饿汉”单例模式的原理与特性。(A等级)
编程题
1、假设有一个byte数组名为data,存放编码为GBK的字符串数据,现要将这些数据写入编码为UTF-8的D:\taget.txt空白文件。请使用纯JDK自带API续写代码。(C等级)
byte data = …; // 数组长度为1024
// 请在答题纸上实现后续功能。注意流的关闭。
2、假设有一Student类,代表学生。其定义如下:(B等级)
class Student {
privateLong id; // 学号,唯一,值不为null。
privateString name; // 姓名,值不为null。
privateInteger age; // 年龄,值不为null。
//相关getter、setter方法省略
…
}
现假设有一List集合stus包含若干Student对象,请按要求完成目标。
List< Student> stus = …;
a) 按id去重。
b) 基于a小问的结果,统计并打印每个姓名的重复出现次数。
c) 基于a小问的结果,按年龄排序并打印,正序、倒序均可。
3、请使用多线程模拟英雄联盟各个玩家等待开始游戏的逻辑。
首先,假设英雄联盟主线程调用如下方法开始一盘游戏:
public voidstartGame(){
。。。
// 主线程等待各个玩家就绪,只有所有玩家都准备好才继续走下去。
xxx // 阻塞的等待逻辑
。。。
}
然后,假设玩家线程调用如下方法通知英雄联盟主线程本玩家已经准备好:
public voidjoinGame(){
。。。
// 其中某步:玩家线程通知主线程本玩家线程已就绪,等待其他玩家。
xxx // 阻塞的等待逻辑
。。。
}
请实现线程相互等待。