A.如果两个对象的hashcode相同,那么它们作为同一个HashMap的key时,必然返回同样的值
B.如果a,b的hashcode相同,那么a.equals(b)必须返回true
C.对于一个类,其所有对象的hashcode必须不同
D.如果a.equals(b)返回true,那么a,b两个对象的hashcode必须相同
答案:
D
解析:
hashcode和equals的约定关系如下:
1、如果两个对象相等,那么他们一定有相同的哈希值(hash code)。
2、如果两个对象的哈希值相等,那么这两个对象有可能相等也有可能不相等。(需要再通过equals来判断)
6.如果int x=20, y=5,则语句System.out.println(x+y +“”+(x+y)+y); 的输出结果是()
A.2530
B.55
C.2052055
D.25255
答案:
D
解析:
1)不论有什么运算,小括号的优先级都是最高的,先计算小括号中的运算,得到x+y +“”+25+y
2)任何字符与字符串相加都是字符串,但是是有顺序的,字符串前面的按原来的格式相加,字符串后面的都按字符串相加,得到25+“”+25+5
3)上面的结果按字符串相加得到25255
A.int x( ){ char ch=’a’; return (int)ch; }
B.void x( ){ …return true; }
C.int x( ){ …return true; }
D.int x( int a, b){ return a+b; }
答案:
A
解析:
A.Java中涉及到byte、short和char类型都可以强制转化为int,符合返回类型 A正确
B.方法中定义为void 应该没有返回值,但返回值为boolean类型 B错
C. 方法中类型为int,应该返回int类型值,但是 返回值为boolean类型 C错
D.方法应该定义为int(int a,int b),所以D错
8.设一组权值集合W={2,3,4,5,6},则由该权值集合构造的哈夫曼树中带权路径长度之和为()。
A.20
B.30
C.40
D.45
答案:
D
解析:
9.枚举(enum)属于原始数据类型(primitive type)。
A.正确
B.错误
答案:
B
解析:
枚举类是一种特殊对的类,既然是类。那他就不是原始数据类型了
10.在Java中,以下关于方法重载和方法重写描述正确的是?
A.方法重载和方法的重写实现的功能相同
B.方法重载出现在父子关系中,方法重写是在同一类中
C.方法重载的返回值类型必须一致,参数项必须不同
D.方法重写的返回值类型必须相同或相容。
答案:
D
解析:
重载(overload):只要方法名 一致 ,其他(参数列表、返回值)怎么折腾随便。
重写(overriding):只有实现的功能代码 不一致 ,其他的(函数名、参数列表、返回值类型)必须都一致。
A.eden区
B.from区
C.元数据区
D.to区
答案:
C
解析:
eden : from : to =8:1:1,用于新生代垃圾回收。 元数据区是用来替换永久代的,大概那个意思。 引入元数据区的意义: JDK8引入了一个新的native的内存区块,Metaspace(也就是题主所说的“元数据”区域)。也就是说,之后你在调优或者调查JVM问题的时候就不用和PermGen区域打交道了,也不会有java.lang.OutOfMemoryError: PermGen 这种内存不足的问题来骚扰你。
A.abstract修饰符可修饰字段、方法和类
B.抽象方法的body部分必须用一对大括号{ }包住
C.声明抽象方法,大括号可有可无
D.声明抽象方法不可写出大括号
答案:
D
解析:
abstract修饰符可修饰字段、方法和类. × abstract只能用来修饰类、方法,不修饰字段(属性)。
抽象方法的body部分必须用一对大括号{ }包住. × 抽象方法用“;”结束。
声明抽象方法,大括号可有可无. × 抽象方法没有方法体,也不用大括号。
A.JVM GC能管理的内存
B.JVM进程管理的内存
C.在JVM老年代内存区
D.在JVM新生代内存
答案:
B
解析:
off-heap叫做堆外内存,将你的对象从堆中脱离出来序列化,然后存储在一大块内存中,这就像它存储到磁盘上一样,但它仍然在RAM中。对象在这种状态下不能直接使用,它们必须首先反序列化,也不受垃圾收集。序列化和反序列化将会影响部分性能(所以可以考虑使用FST-serialization)使用堆外内存能够降低GC导致的暂停。堆外内存不受垃圾收集器管理,也不属于老年代,新生代。
14.非抽象类实现接口后,必须实现接口中的所有抽象方法,除了abstract外,方法头必须完全一致.
A.正确
B.错误
答案:
B
解析:
略
public class Test2
{
public void add(Byte b)
{
b = b++;
}
public void test()
{
Byte a = 127;
Byte b = 127;
add(++a);
System.out.print(a + " ");
add(b);
System.out.print(b + “”);
}
}
A.127 127
B.128 127
C.129 128
D.以上都不对
答案:
D
解析:
add()方法里面的修改值并不会起作用,而add(++a)会使a数值越界成-128,所以输出为-128 127
A.8
B.37
C.36
D.9
答案:
B
解析:
字串: n(n+1)/2 + 1
非空子串:n(n+1)/2
非空真子串:n(n+1)/2 - 1
以下关于final关键字说法错误的是()
A.final是java中的修饰符,可以修饰类、接口、抽象类、方法和属性
B.final修饰的类肯定不能被继承
C.final修饰的方法不能被重载
D.final修饰的变量不允许被再次赋值
答案:
AC
解析:
1.final修饰变量,则等同于常量
2.final修饰方法中的参数,称为最终参数。
3.final修饰类,则类不能被继承
4.final修饰方法,则方法不能被重写。
5.final 不能修饰抽象类
6.final修饰的方法可以被重载 但不能被重写
18.下面代码在main()方法中第八行后可以正常使用的是( )
public class Test
{
private int a=10;
int b=20;
static int c=1;
public static void main(String arg[])
{
Test t = new Test();
}
最后希望可以帮助到大家!
千千万万要记得:多刷题!!多刷题!!
之前算法是我的硬伤,后面硬啃了好长一段时间才补回来,算法才是程序员的灵魂!!!!
篇幅有限,以下只能截图分享部分的资源!!
(1)多线程(这里以多线程为代表,其实整理了一本JAVA核心架构笔记集)
(2)刷的算法题(还有左神的算法笔记)
(3)面经+真题解析+对应的相关笔记(很全面)
(4)视频学习(部分)
ps:当你觉得学不进或者累了的时候,视频是个不错的选择
在这里,最后只一句话:祝大家offer拿到手软!!
public static void main(String arg[])
{
Test t = new Test();
}
最后希望可以帮助到大家!
千千万万要记得:多刷题!!多刷题!!
之前算法是我的硬伤,后面硬啃了好长一段时间才补回来,算法才是程序员的灵魂!!!!
篇幅有限,以下只能截图分享部分的资源!!
(1)多线程(这里以多线程为代表,其实整理了一本JAVA核心架构笔记集)
[外链图片转存中…(img-OvJb7IPv-1714352879397)]
(2)刷的算法题(还有左神的算法笔记)
[外链图片转存中…(img-cG1VKF1d-1714352879397)]
(3)面经+真题解析+对应的相关笔记(很全面)
[外链图片转存中…(img-d6qTn8NN-1714352879398)]
(4)视频学习(部分)
ps:当你觉得学不进或者累了的时候,视频是个不错的选择
在这里,最后只一句话:祝大家offer拿到手软!!