天梯180417
1. 抽象类方法的访问权限默认都是public。( )
A. 正确
B. 错误
2. 在一个基于分布式的游戏服务器系统中,不同的服务器之间,哪种通信方式是不可行的()?
A. 管道
B. 消息队列
C. 高速缓存数据库
D. 套接字
3. 下面哪种情况会导致持久区jvm堆内存溢出?
A. 循环上万次的字符串处理
B. 在一段代码内申请上百M甚至上G的内存
C. 使用CGLib技术直接操作字节码运行,生成大量的动态类
D. 不断创建对象
4. (不定项)以下为 java 语法保留不能作为类名和方法名使用的是
A. default
B. int
C. implements
D. throws
5. 经过强制类型转换以后,变量a,b的值分别为多少?
short a =128;
byte b =(byte) a;
A. 128 127
B. 128 - 128
C. 128 128
D. 编译错误
//----------------------分割线--------------------------------
B
A
C
ABCD
B
答案解析:
1.
关于抽象类
JDK 1.8以前,抽象类的方法默认访问权限为protected
JDK 1.8时,抽象类的方法默认访问权限变为default
关于接口
JDK 1.8以前,接口中的方法必须是public的
JDK 1.8时,接口中的方法可以是public的,也可以是default的
JDK 1.9时,接口中的方法可以是private的
2.
管道通信和通信中的半双工信道的进程通信机制相似,一个管道虽然可以实现双向的数据传输,但是同一时刻最多只能存在一个方向的传输,不能两个方向同时进行。
3.
简单的来说 java的堆内存分为两块:permantspace(持久带) 和 heap space。
持久带中主要存放用于存放静态类型数据,如 Java Class, Method 等, 与垃圾收集器要收集的Java对象关系不大。
而heapspace分为年轻带和年老带
年轻代的垃圾回收叫 Young GC, 年老代的垃圾回收叫 Full GC。
在年轻代中经历了N次(可配置)垃圾回收后仍然存活的对象,就会被复制到年老代中。因此,可以认为年老代中存放的都是一些生命周期较长的对象
年老代溢出原因有 循环上万次的字符串处理、创建上千万个对象、在一段代码内申请上百M甚至上G的内存,既A B D选项
持久代溢出原因 动态加载了大量Java类而导致溢出
4. Java8关键字default也被使用了,所以正确答案应该全选
5. 1000 0000 是补码,大小为-128