1、list、map和set什么时候用?彼此间 的区别和联系?
(1) list集合:是顺序存放的,可以重复存储,获取时通过索引值获取。
(2) set集合:存放是无序的,不能重复存储,只能遍历次数存取。
(3) map映射:存放的是键与值的映射,其中键是唯一的,而值可以有重复的对象,存的时候,需要指定键和 对应的值,取的时候可以根据键名取到值。
2、java常见的数据类型是什么和对应的包装类是什么?java的隐式类型?assert什么时候用?
(1)int ,double ,float ,long ,short ,boolean ,byte ,char
(2)Integer ,Double ,Float ,Long ,Short ,Boolean ,Byte ,Characher
(3)java的隐式类型是int ,byte ,short ,char 都可以隐含转换为int
3、谈谈个人对面向对象编程的理解?
(1)java语言是纯粹的面向对象的程序设计语言,这主要表现为java完全会吃面向对象的三种基本特征:封装、继承和多态。java语言完全以对象为中心,java程序的最小程序单位是类,整个java程序由一个一个的类组成;而面向对象的方式实际上由OOA(面向对象分析)、OOD(面向对象设计)和OOP(面向对象编程)三个部分有机组成。
4、重写和重载的区别?
重载:表示同一个类中可以有多个名称相同的方法,但参数个数或类型不同。
重写:表示子类中的方法可以与父类中的某个方法的名称和参数完全相同
(1)异常方面:抛出父类抛出的异常的子异常;
(2)访问权限:子类方法的访问权限只能比父类的更大,不能更小
(3)如果父类的方法是private类型,那么,子类则不存在覆盖的限制,相当于子类中增加了一个全新的方法
5、sleep&wait区别和联系?
来自不同的类:sleep来自Thread类,而wait来自Object类;sleep是Thread的静态类方法,谁调用谁睡觉。
是否释放锁:
(1)sleep方法没有释放锁,而wait方法释放了锁,使得线程可以使用同步代码块或者方法。
(2)sleep不出让系统资源;wait是进入线程等待池等待,出让系统资源,其他线程可以占用CPU。
(3)一般wait不会加时间限制,因为如果wait线程的运行资源不够,再出来也没有用,要等待其他线程调用notify/notifyAll唤醒等待池中的所偶有线程,才会进入就绪队列等待OS分配系统资源。
(4)sleep可以用时间指定使它自动唤醒过来,如果时间不到只能调用interrupt()强行打断。