2019年11月15日 java2

考点1

已知表达式int m[]={0,1,2,3,4,5,6};下面哪个表达式的值与数组下标量最大值相等?

  • A m. length()
  • B m. length-1
  • C m. length()+1
  • D m. length+1

解析

显示答案/隐藏答案正确答案: B
获取长度的方式 数据类型
length属性 数组
length() String`
size() 集合

考点2

与未加访问控制符的缺省情况相比,public和protected修饰符扩大了属性和方法的被访问范围,private修饰符则缩小了这种范围。

  • A 正确
  • B 错误

解析

显示答案/隐藏答案正确答案: A

考点3

区分类中重载方法的依据是( )。

  • A 不同的形参名称
  • B 不同的返回值类型
  • C 不同的形参列表
  • D 不同的访问权限

解析

显示答案/隐藏答案正确答案: C

考点4

字符界面下接受用户从键盘输入,需要import的包是:( )

  • A java.lang
  • B java.awt
  • C java.io
  • D java.applet

解析

显示答案/隐藏答案正确答案: C

考点5

下面哪个Set类是排序的?

  • A LinkedHashSet
  • B TreeSet
  • C HashSet
  • D AbstractSet

解析

显示答案/隐藏答案正确答案: B
  • TreeSet排序,
  • LinkedHashSet有序。

考点6

下列关于Java并发的说法中正确的是()

  • A CopyOnWriteArrayList适用于写多读少的并发场景
  • B ReadWriteLock适用于读多写少的并发场景
  • C ConcurrentHashMap的写操作不需要加锁,读操作需要加锁
  • D 只要在定义int类型的成员变量i的时候加上volatile关键字,那么多线程并发执行i++这样的操作的时候就是线程安全的了

解析

显示答案/隐藏答案正确答案: B

A,CopyOnWriteArrayList适用于写少读多的并发场景
B,ReadWriteLock即为读写锁,他要求写与写之间互斥,读与写之间互斥
读与读之间可以并发执行。在读多写少的情况下可以提高效率
C,ConcurrentHashMap是同步的HashMap,读写都加锁
D,volatile只保证多线程操作的可见性,不保证原子性

有空了解一下

CopyOnWrite指的是修改容器之前,先将原来的容器拷贝一份副本,在副本中进行修改,修改之后使用原来的容器指向修改好的容器,这样保证了两个容器可以同时读,用于读多于写的场景

volatile变量自身具有以下特性:1。可见性2.原子性:对任意单个volatile变量的读写具有原子性,但类似i++这种复合操作或者多个volatile操作不具有原子性

考点7

由3 个”1”和 5 个”0”组成的 8 位二进制补码,能表示的最小整数()

  • A -126
  • B -125
  • C -32
  • D -3

解析

显示答案/隐藏答案正确答案: B

一个1作为符号位,表示负数,剩下两个1,最大值是3,-(128-3)=-125

既然求最小整数,那肯定先想到负数,则最高位(符号位)一定为1,原码中肯定是1所在的位数越高,值越小,而补码是由原码取反加1得到的,则在补码中1所在的位数一定要越低,即补码为1000 0011;由补码求得原码:1111 1101=-(64+32+16+8+4+1)=-125;

考点8

下列Java代码中的变量a、b、c分别在内存的____存储区存放。

1
2
3
4
5
6
7
class A {
private String a = "aa";
public boolean methodB() {
String b = "bb";
final String c = "cc";
}
}
  • A 堆区、堆区、堆区
  • B 堆区、栈区、堆区
  • C 堆区、栈区、栈区
  • D 堆区、堆区、栈区
  • E 静态区、栈区、堆区
  • F 静态区、栈区、栈区

解析

显示答案/隐藏答案正确答案: C
  • a是类中的成员变量,存放在堆区
  • b、c都是方法中的局部变量,存放在栈区

堆区:只存放类对象,线程共享;
方法区:又叫静态存储区,存放class文件和静态数据,线程共享;
栈区:存放方法局部变量,基本类型变量区、执行环境上下文、操作指令区,线程不共享;

考点9

Consider the following code:
Integer s=new Integer(9);
Integer t=new Integer(9);
Long u=new Long(9);
Which test would return true?

  • A (s==u)
  • B (s==t)
  • C (s.equals(t))
  • D (s.equals(9))
  • E (s.equals(new Integer(9))

解析

显示答案/隐藏答案正确答案: CDE

B关于s==t,添加一点说明:
当Integer的值在-128~127之间时,使用拆箱方式创建Integer对象:

1
2
3
4
//自动拆箱
Integer i=9;
//手动拆箱
Integer j=Integer.valueOf(9);

得到的对象使用==会得到true。
而使用new Integer()方式创建的对象,使用==会得到false。
当Integer的值不在这个范围内时,无论以何种方式创建两个Integer对象,使用==都会是false。

考点10

判断一块内存空间是否符合垃圾收集器收集的标准有哪些?

  • A 给对象赋予了空值null,以下再没有调用过
  • B 对象重新分配了内存空间
  • C 给对象赋予了空值null
  • D 给对象赋予了新值

解析

显示答案/隐藏答案正确答案: ABD

在java语言中,判断一块内存空间是否符合垃圾收集器收集标准的标准只有两个:
1.给对象赋值为null,以下没有调用过。
2.给对象赋了新的值,重新分配了内存空间。

一块内存空间符合了垃圾收集器的收集标准,并不意味着这块内存空间就一定会被垃圾收集器收集。