刷了牛客网1000道题挑选出75道典型题,大家可以看看自己都会吗,博主在群里面有很多的我整理的内部资源:Java题库,大厂面试题,学习大纲,自学课程大纲,简历模板等还有欢迎大家加入博主组建的Java学习技术交流群呀!群号:853665602,有什么问题都可以在里面询问交流,希望欢迎到很多一起学习Java的小伙伴,感谢你们的支持!
正文
A ConcurrentHashMap使用synchronized关键字保证线程安全
B HashMap实现了Collction接口
C Array.asList方法返回java.util.ArrayList对象
D SimpleDateFormat是线程不安全的
D
ConcurrentHashMap 使用segment来分段和管理锁使用ReentrantLock来保证线程安全。
这个是HashMap的源码:
public class HashMap<K,V>
extends AbstractMap<K,V>
implements Map<K,V>, Cloneable, Serializable
复制Error复制成功
Arrays.asList() 返回 java.util.Arrays.ArrayList 对象,这里的 ArrayList 是 Arrays 私有的内部类;并不是java.util.ArrayList。
SimpleDateFormat没有加同步锁,故不安全。
public static void main(String[] args){
String s;
System.out.println("s="+s);
}
复制Error复制成功
A 代码编程成功,并输出”s=”
B 代码编译成功,并输出”s=null”
C 由于String s没有初始化,代码不能编译通过。
D 代码编译成功,但捕获到NullPointException异常
C
局部变量没有默认值
3、JDK1.8版本之前,抽象类和接口的区别,以下说法错误的是()
A 接口是公开的,里面不能有私有的方法或变量,是用于让别人使用的,而抽象类是可以有私有方法或私有变量的。
B abstract class 在 Java 语言中表示的是一种继承关系,一个类只能使用一次继承关系。但是,一个类却可以实现多个interface,实现多重继承。接口还有标识(里面没有任何方法,如Remote接口)和数据共享(里面的变量全是常量)的作用。
C 在abstract class 中可以有自己的数据成员,也可以有非abstarct的成员方法,而在interface中,只能够有静态的不能被修改的数据成员(也就是必须是 static final的,不过在 interface中一般不定义数据成员),所有的成员方法默认都是 public abstract 类型的。
D abstract class和interface所反映出的设计理念不同。其实abstract class表示的是"has-a"关系,interface表示的是"is-a"关系。
D
abstract class表示的是"is-a"关系,interface表示的是"like-a"关系。
接口中:
如果是Java 7以及以前的版本,那么接口中可以包含的内容有:1. 常量;2. 抽象方法 如果是Java 8,还可以额外包含有:3. 默认方法;4. 静态方法 如果是Java 9,还可以额外包含有:5. 私有方法
final变量在使用前必须先赋值
A 程序计数器是一块较小的内存空间,它的作用可以看做是当前线程所执行的字节码的信号指示器,每个线程都需要一个独立的程序计数器.
B Java虚拟机栈描述的是java方法执行的内存模型,每个方法被执行的时候都会创建一个栈帧,用于存储局部变量表、类信息、动态链接等信息
C Java堆是java虚拟机所管理的内存中最大的一块,每个线程都拥有一块内存区域,所有的对象实例以及数组都在这里分配内存。
D 方法区是各个线程共享的内存区域,它用于存储已经被虚拟机加载的常量、即时编译器编译后的代码、静态变量等数据。
B C
java虚拟机栈:线程私有,没有类信息,类信息是在方法区中
java堆是被所有线程共享的一块内存区域,而不是每个线程都拥有一块内存区域。
A 访问修饰符的限制一定要大于被重写方法的访问修饰符
B 可以有不同的访问修饰符
C 参数列表必须完全与被重写的方法相同
D 必须具有不同的参数列表
B C
方法重写要注意的事项: 1.方法重写时, 方法名与形参列表必须一致。 2.方法重写时,子类的权限修饰符必须要大于或者等于父类的权限修饰符。 3.方法重写时,子类的返回值类型必须要小于或者等于父类的返回值类型。 4.方法重写时, 子类抛出的异常类型要小于或者等于父类抛出的异常类型。 Exception(大) RuntimeException(小)
A选项的一定要大于错误,而是子类重写方法的访问权限不能低于父类重写方法的访问权限
D 是重载要求
7、要使某个类能被同一个包中的其他类访问,但不能被这个包以外的类访问,可以( )
A 让该类不使用任何关键字
B 使用private关键字
C 使用protected关键字
D 使用void关键字
A
总结:default拒绝一切包外访问;protected接受包外的子类访问
public>protected>default>private
8、枚举(enum)属于原始数据类型(primitive type)?
错误
在Java中,变量有两种类型,一种是原始类型,一种是引用类型。
原始类型一共有8种,它们分别是char,boolean,byte,short,int,long,float,double。