1、在java中,要使某个类能被同一个包中的其他类访问,但不能被这个包以外的类访问,可以(A
A.让该类不使用任何关键字
B.使用private关键字
C.使用protected关键字
D.使用public关键字
解析:
public > protected > default > private
1、包访问权限(default):
默认访问权限没有任何关键字,但通常指包访问权限。这意味着当前包中所有类对这个成员都有访问权限,但对于这个包之外的所有类,这个成员却是private。
2、public:公共访问权限,接口访问权限
所修饰的类、变量、方法,在内外包均具有访问权限。
3、private:私有权限
只有本类的方法可以访问,其他任何类都无法访问这个成员。
4、protected:继承访问权限
子类可以访问,同一个包的类也能访问。
区分protected和default:分protected和default权限:
注意区分区分protected和default权限:
当某个成员能被所有的子类继承,但不能被外包的非子类访问,就是用protected;
当某个成员的访问权限只对同包的类开放,包括不能让外包的类继承这个成员,就用default。

2、有关java静态初始化块说法正确的是?(A B C
A.无法直接调用静态初始化块 B.在创建第一个实例前,将自动调用静态初始化块来初始化 C.静态初始化块没有访问修饰符和参数 D.用户可以控制何时执行静态初始化块

3、以下对结构化程序设计的说法错误的是( C
A.对于一个复杂的问题先用抽象程序表示,再对抽象程序进一步分解,继续精化
B.结构化程序设计方法自顶向下,先整体后局部,可以提高软件开发效率
C.通过引入模块间的继承性和多态性等机制,增加了模块的可重用性,提高了软件开发效率
D.在软件详细设计阶段,采用结构化程序设计方法,可以把一个模块的功能逐步分解细化为某种程序语言的语句
解析:通过引入模块间的继承性和多态性等机制:这里应该是继承和封装才对。结构化程序设计不是面向对象程序设计
参考

4、下列哪个可以存储重复的数据元素?(A
A.List
B.Set
C.HashMap
D.Collection

5、面向对象的特征有哪些方面?(ABCD
A.抽象
B.继承:基于基类创建新类。
C.封装:将数据隐藏起来,对数据的访问只能通过特定接口。
D.多态性:不同子类型对象对相同消息作出不同响应。

6、以下关于读屏障、写屏障、通用屏障和优化屏障说法正确的是( ABD
A.读屏障用于保证读操作有序。屏障之前的读操作一定会先于屏障之后的读操作完成,写操作不受影响
B.优化屏障则用于限制编译器的指令重排
C.写屏障可用于限制读、写操作顺序
D.通用屏障则对读写操作都有作用
解析:内存屏障主要有:读屏障、写屏障、通用屏障、优化屏障
读屏障:屏障之前的读操作一定会先于屏障之后的读操作完成,写操作不受影响,同属于屏障的某一侧的读操作也不受影响
写屏障:屏障之前的写操作一定会先于屏障之后的写操作完成,读操作不受影响,同属于屏障的某一侧的写操作也不受影响
通用屏障:对读写操作都有作用
优化屏障:限制编译器的指令重排,不区分读写

7、要创建一个文件,你可用如下哪些类的实例?(AD)
A.File
B.RandomAccessFile
C.FileOutputStream
D.FileWrite

8、下列哪些类不能被继承?(ABD
A.String
B.Integer
C.ArrayList
D.Double
E.Thread
解析:①对于java中的类,如果是使用final修饰的话,那么这个类就不能够被继承
②因为jdk的开发者认为,有一些最基本的类没要必要对开发者开放,如果用户继承时操作有误,很可能引入很多问题。为了防止用户对基本类进行相应的扩展,也体现了java设计过程中的开闭原则,最终将这些类设计成为final的
java中常见的不能被继承的类有如下:String,StringBuffer,StringBuilder,基本类型的包装类如Double,Integer,Long等等。

9、对比String,StringBuilder,StringBuffer的适用场景分别是什么?为什么?
解析:1.使用String类的场景:在字符串不经常变化的场景中可以使用String类,例如常量的声明、少量的变量运算。
2.使用StringBuffer类的场景:在频繁进行字符串运算(如拼接、替换、删除等),并且运行在多线程环境中,则可以考虑使用StringBuffer,例如XML解析、HTTP参数解析和封装。
3.使用StringBuilder类的场景:在频繁进行字符串运算(如拼接、替换、和删除等),并且运行在单线程的环境中,则可以考虑使用StringBuilder,如SQL语句的拼装、JSON封装等.

10、Java工具类Arrays.asList()方法把数组转换成集合时,对该集合进行以下函数操作不会出错的是:(A

A.size

B.add

C.remove

D.clear

解析:Arrays.asList(arr) 转为的实例化对象为Arrays中的静态内部类ArrayList,该类没有重写add() 、remove() 、clear()方法,不能对List增删,只能查改;


Java没有默认使用偏向锁 java不鼓励使用默认包_System


11、String s = new String(“xyz”);创建了几个StringObject(A)

A.两个或一个都有可能

B.两个

C.一个

D.三个

当常量池中没有"xyz"时,在堆中创建一个object,在常量池中创建一个object,共两个object

当常量池中存在"xyz"时,仅在堆中创建一个object

12、在下列4条语句的前提下:
Integer i01 = -128;
int i02 = -128;
Integer i03 =Integer.valueOf(-128);
Integer i04 = new Integer(-128);
以下输出结果为false的是:(D)
A.System.out.println(i01 == i02);
B.System.out.println(i01 == i03);
C.System.out.println(i02 == i04);
D.System.out.println(i03 == i04);

解析:Integer i01=-128的时候,会调用Integer的valueOf方法,
这个方法就是返回一个Integer对象,只是在返回之前,看作了一个判断,判断当前i的值是否在[-128,127]区别,且IntegerCache中是否存在此对象,如果存在,则直接返回引用,否则,创建一个新的对象。
在这里的话,因为程序初次运行,没有-128,所以,直接创建了一个新的对象。
int i02=-128,这是一个基本类型,存储在栈中。
Integer i03 =Integer.valueOf(-128);因为IntegerCache中已经存在此对象,所以,直接返回引用。
Integer i04 = new Integer(-128);直接创建一个新的对象。
System.out.println(i01== i02); i01是Integer对象,i02是int,这里比较的不是地址,而是值。Integer会自动拆箱成int,然后进行值的比较。所以,为真。
System.out.println(i01== i03);因为i03返回的是i01的引用,所以,为真
System.out.println(i03 == i04);因为i04是重新创建的对象,所以i03,i04是指向不同的对象,因此比较结果为假。
System.out.println(i02== i04);因为i02是基本类型,所以此时i04会自动拆箱,进行值比较,所以,结果为真。

13、在Java中类型ArrayList中,添加一个元素(add方法)的时间复杂度是
A.O(1)
B.O(logN)
C.O(n)
D.O(NLogN)
解析:尾部添加O(1),其余部位添加O(n)