Java笔试错题集(三)

1.

下列语句正确的是( )

正确答案: A   你的答案: A (正确)

形式参数可被视为local variable
形式参数可被所有的字段修饰符修饰
形式参数为方法被调用时,是真正被传递的参数
形式参数不可以是对象

A:形式参数可被视为local variable。形参和局部变量一样都不能离开方法。都只有在方法内才会发生作用,也只有在方法中使用,不会在方法外可见。

B: 对于形式参数只能用final修饰符,其它任何修饰符都会引起编译器错误。但是用这个修饰符也有一定的限制,就是在方法中不能对参数做任何修改。 不过一般情况下,一个方法的形参不用final修饰。只有在特殊情况下,那就是:方法内部类。  一个方法内的内部类如果使用了这个方法的参数或者局部变量的话,这个参数或局部变量应该是final。 

C:形参的值在调用时根据调用者更改,实参则用自身的值更改形参的值(指针、引用皆在此列),也就是说真正被传递的是实参。

D:方法的参数列表指定要传递给方法什么样的信息,采用的都是对象的形式。因此,在参数列表中必须指定每个所传递对象的类型及名字。想JAVA中任何传递对象的场合一样,这里传递的实际上也是引用,并且引用的类型必须正确。--《Thinking in JAVA》

2.

实现或继承了Collection接口的是()

正确答案: B C E   你的答案: A B E (错误)

Map
List
Vector
Iterator
Set

3.

类的析构函数是一个对象被(    )时自动调用的。

正确答案: B   你的答案: B (正确)

建立
撤消
赋值
引用

java中有析构函数,但我们一般用不到它,因为java有自动内存回收机制,无需程序员来释放,也就不要担心内存泄露,只不过java中析构函数所采用的方式不是C++中的那样前加~号,在java中 对象析构时会调用void finalize()方法,因此你如果确实需要析构的话就可以为你写的类添加一个void finalize(){}方法,来完成你所需要的工作

4.

以下声明合法的是

正确答案: B   你的答案: 空 (错误)

default  String  s
public  final  static  native  int  w( )
abstract  double  d
abstract  final  double  hyperbolicCosine( )

A:java的访问权限有public、protected、private和default的,default不能修饰变量

C:普通变量不能用abstract修饰,abstract一般修饰方法和类

D:被定义为abstract的类需要被子类继承,但是被修饰为final的类是不能被继承和改写的

心存疑问可以实验一下,看是否能通过编译

5.

列哪种说法是正确的( )

正确答案: D   你的答案: A (错误)

实例方法可直接调用超类的实例方法
实例方法可直接调用超类的类方法
实例方法可直接调用其他类的实例方法
实例方法可直接调用本类的类方法

6.

程安全的map在JDK 1.5及其更高版本环境 有哪几种方法可以实现?

正确答案: C D   你的答案: C (错误)

Map map = new HashMap()
Map map = new TreeMap()
Map map = new ConcurrentHashMap();
Map map = Collections.synchronizedMap(new HashMap());

链接:https://www.nowcoder.com/questionTerminal/ac061529b516487b97cd35f61157d369
来源:牛客网
 

1. HashMap,TreeMap 未进行同步考虑,是线程不安全的。

2. HashTable 和 ConcurrentHashMap 都是线程安全的。区别在于他们对加锁的范围不同,HashTable 对整张Hash表进行加锁,而ConcurrentHashMap将Hash表分为16桶(segment),每次只对需要的桶进行加锁。

3. Collections 类提供了synchronizedXxx()方法,可以将指定的集合包装成线程同步的集合。比如,

List  list = Collections.synchronizedList(new ArrayList());

Set  set = Collections.synchronizedSet(new HashSet());

猜你喜欢

转载自blog.csdn.net/weixin_42173193/article/details/88379134