java最新基础知识面试题
java最新基础知识面试题
1、static关键字什么意思?java中是否可以覆盖一个private或者是static的方法?
“static”表明一个成员变量或者是成员方法可以在没有所属类的实例变量的情况下访问。
java中static方法不能被覆盖,因为方法覆盖是基于运行时动态绑定的,而static方法是编译时静态绑定的。static方法与类的任何实例都不相关。
java中不可以覆盖private方法。因为private修饰的变量和方法只能在当前类中使用,如果是其他类继承当前类,继承类中是不能访问到private变量和方法的
2、能否在static环境中访问访问非static变量?
不能。static变量是属于类的。当类被虚拟机载入时,会对static变量进行初始化。非static变量是属于实例的,这个时候实例还没有被创建,编译器会报错
3、java基本类型,什么是自动拆装箱?
基本类型:byte,short,int,float,long,double,boolean,char
自动装箱:是java编译器在基本类型和对应的对象包装类型之间做一个转化。比如把int转化为Integer等等。反之为自动拆箱
4、java的方法覆盖overriding和方法重载overloading是什么意思?
java中方法重载发生在同一个类中有两个或者多个方法名字相同但是参数不同的情况。方法覆盖是子类重新定义父类的方法。方法覆盖必须有相同的方法名,参数列表和返回类型
5、java中,什么是构造方法?什么是构造方法重载?什么是复制构造方法?
当新对象被创建时,构造方法会被调用。每一个类都有一个构造方法,在没有给类提供构造函数时,编译器会自动创建一个默认的构造方法
java中构造方法重载和方法重载很相似。可以为一个类创建多个构造方法,每一个构造方法必须有它自己唯一的参数列表
6、java支持多继承吗?
不支持。只能支持单继承,即一个类只有一个父类。可以用implements实现多个接口扩展
7、接口与抽象类的区别
1.接口中所有方法隐含都是抽象的。而抽象类则可以同时包含抽象和非抽象的方法
2.接口中声明的变量默认都是final,而抽象类可以包含非final的变量
3.接口中成员函数默认都会public。抽象类的成员函数可以是private,protected或者public
4.类可以不实现抽象类和接口声明中的所有方法,这种情况下,类也必须声明为抽象的
8、jdk与jre区别是什么?
java运行时环境(jre)是将要执行的java程序的java虚拟机,同时也包含了执行applet需要的浏览器插件。java开发工具包(jdk)是完整的java软件开发包,包含了jre,编译器和其他工具(比如:javadoc,java调试器),可以让开发者开发,编译,执行java应用程序
9、什么是值传递和引用传递
值传递是对基本类型变量而言,传递是该变量的一个副本,改变副本不会影响原变量
引用传递一般是对于对象型变量而言,传递的是该对象地址的一个副本,改变副本,会影响原变量
10、进程和线程的区别?
进程是执行着的应用程序,线程是进程内部的一个执行序列。一个进程可以有多个线程
区别:
1.地址空间和其他资源:进程之间相互独立。同一个进程的各个线程间共享。某进程内的线程在其他进程不可见
2。通信:进程之间通信ipc,线程间可以直接读写进程数据段(如全局变量)来进行通信--需要进程同步和互斥手段的辅助,以保证数据的一致性
3.调度和切换:线程之间上下文切换比进程上下文切换快的多
4.在多线程os中,进程不是一个可执行的实体
11、同步方法和同步代码块的区别
同步方法默认是用this或当前类对象作为锁
同步代码块可以选择以什么来加锁,比同步方法更细粒度。我们可以选择只同步会发生同步问题的部分代码而不是整个方法
12、死锁
死锁是值多个线程因资源竞争而造成的一种僵局,若无外力作用,这些线程都无法向前推进。产生死锁的4个必要条件
1.互斥条件
2.不剥夺条件
3.请求和保持条件
4.循环等待
13、如何确保N个线程可以访问N个资源同时又不导致死锁?
一种非常简单的避免死锁的方式:指定获取锁的顺序,并强制线程按照指定的顺序获取锁。因此如果所有的线程都是以同样的顺序加锁和释放锁,就不会出现死锁
14、java集合类框架的基本接口有哪些?
Collection,Set,List,Map
15、HashMap工作原理
hashMap是以键值对的形式存储。hashmap需要一个hash函数,它使用hashCode和equals方法来向集合/从集合添加和检索元素。当调用put时,HashMap会计算key的hash值,然后把键值对存储在集合中合适的索引上。如果key已经存在,value会被更新成新值。hashMap的一些重要的特性是它的容量,负载因子和扩容极限
16、hashcode和equals重要性体现在什么地方
hashmap通过hashcode和equals确定键值对索引
17、hashmap和hashtable区别?
hashmap允许键和值是null,hashtable不允许键或值为null
hashtable同步,而hashmap不是