1.下列关于管道(Pipe)通信的叙述中,正确的是(A)
A.进程对管道进行读操作和写操作都可能被阻塞
B.一个管道只能有一个进程或一个写进程对其操作
C.一个管道可实现双向数据传输
D.管道的容量仅受磁盘容量大小限制
笔记:
A.正确,因为管道为空,读操作会被阻塞;管道满了,写操作会被阻塞
B.可以有多个进程对其读;也可以有多个进程写,只不过不能同时写。并且题目没有说“同时”,B不对
C.匿名管道只能单向;命名管道可以双向;所以C过于绝对
D.管道是内存中的,所以D不对
2.以下描述错误的一项是(C)
A.程序计数器是一个比较小的内存区域,用于指示当前线程所执行的字节码执行 到了第几行,是线程隔离的
B.原则上讲,所有的对象都是在堆区上分配内存,是线程之间共享的
C.方法区用于存储JVM加载的类信息、常量、静态变量,即使编译器编译后的代码等数据,是线程隔离的
D.Java方法执行内存模型,用于存储局部变量,操作数栈,动态链接,方法出口等信息,是线程隔离的
笔记:
方法区和堆内存是线程共享的。
程序计数器、虚拟机栈是线程隔离的。
3.字符串s为null,因此只要调用了s.length()都会抛出空指针异常NullPointerException
4.一般情况下,以下哪个选项不是关系数据模型与对象模型之间匹配关系 (D)
A.表对应类
B.记录对应对象
C.表的字段对应类的属性
D.表之间的参考关系对应类之间的依赖关系
5.静态内部类可以访问外围类的静态数据,包括私有数据,但不能访问非静态数据;
非静态内部类可以直接访问外围类的数据,包括私有数据
6.在异常处理中,如释放资源,关闭数据库、关闭文件应由( finally)语句来完成。
7.CopyOnWriteArrayList适合使用在读操作远远大于写操作的场景里,比如缓存。
ReadWriteLock 当写操作时,其他线程无法读取或写入数据,而当读操作时,其它线程无法写入数据,但却可以读取数据 。适用于 读取远远大于写入的操作。
ConcurrentHashMap是一个线程安全的Hash Table,它的主要功能是提供了一组和HashTable功能相同但是线程安全的方法。ConcurrentHashMap可以做到读取数据不加锁,并且其内部的结构可以让其在进行写操作的时候能够将锁的粒度保持地尽量地小,不用对整个ConcurrentHashMap加锁。
8.下列说法错误的有( A C D)
A.在类方法中可用this来调用本类的类方法
B.在类方法中调用本类的类方法时可直接调用
C.在类方法中只能调用本类中的类方法
D.在类方法中绝对不能调用实例方法
笔记:
A:类方法是指类中被static修饰的方法,无this指针。
C:类方法是可以调用其他类的static方法的。
D:可以在类方法中生成实例对象再调用实例方法。
9.下列哪种说法是正确的( D)
A.实例方法可直接调用超类的实例方法
B.实例方法可直接调用超类的类方法
C.实例方法可直接调用其他类的实例方法
D.实例方法可直接调用本类的类方法
笔记:
类方法就是静态方法。其它的就是实例方法
实例方法可以对当前对象的实例变量进行操作,也可以对类变量进行操作,但类方法不能访问实例变量。实例方法必须由实例对象来调用,而类方法除了可由实例对象调用外,还可以由类名直接调用。
另外,在类方法中不能使用 this 或 super。
关于类方法的使用,有如下一些限制:
- 在类方法中不能引用对象变量。
- 在类方法中不能使用super、this关键字。
- 类方法不能调用类中的对象方法。
与类方法相比,实例方法几乎没有什么限制:
- 实例方法可以引用对象变量(这是显然的),也可以引用类变量。
- 实例方法中可以使用super、this关键字。
- 实例方法中可以调用类方法。
10.有关finally语句块说法正确的是(A B C D)
A.不管catch是否捕获异常,finally语句块都是要被执行的
B.在try语句块或catch语句块中执行到System.exit(0)直接退出程序
C.finally块中的return语句会覆盖try块中的return返回
D.finally 语句块在 catch语句块中的return语句之前执行
笔记:
- 不管有没有出现异常,finally块中代码都会执行;
- 当try和catch中有return时,finally仍然会执行;
- finally是在return后面的表达式运算后执行的(此时并没有返回运算后的值,而是先把要返回的值保存起来,管finally中的代码怎么样,返回的值都不会改变,仍然是之前保存的值),所以函数返回值是在finally执行前确定的;
- finally中最好不要包含return,否则程序会提前退出,返回值不是try或catch中保存的返回值。
- finally中return语句会覆盖try-catch中的return语句
11. 初始化过程是这样的:
- 首先,初始化父类中的静态成员变量和静态代码块,按照在程序中出现的顺序初始化;
- 然后,初始化子类中的静态成员变量和静态代码块,按照在程序中出现的顺序初始化;
- 其次,初始化父类的普通成员变量和代码块,在执行父类的构造方法;
- 最后,初始化子类的普通成员变量和代码块,在执行子类的构造方法;
12. 名称含义:
java.exe是java虚拟机
javadoc.exe用来制作java文档
jdb.exe是java的调试器
javaprof.exe是剖析工具