1.如何理解面向对象和面向过程
【面向过程】:完成某件事的过程,性能高于【面向对象】
优点:但是因为类调用时需要实例化,开销比较大,比较消耗资源;比如单片机、嵌入式开发、Linux/Unix等一般采用面向过程开发,性能是最重要的因素。
缺点:没有面向对象易维护、易复用、易扩展
【面向对象】:把要完成的某件事,分成对象然后再完成
优点:易维护、易复用、易扩展,由于面向对象有封装、继承、多态性的特性,可以设计出低耦合的系统,使系统更加灵活、更加易于维护
缺点:性能比面向过程低
2.Java特性
【封装】【继承】【多态(使用方法重载和重写可以实现多态)】当然一般还添加【抽象】
3.访问修饰符public,private,protected,以及不写(默认)时的区别?
修饰符 | 当前类 | 当前包 | 子类 | 其他包 |
public | √ | √ | √ | √ |
protected | √ | √ | √ | × |
default | √ | √ | × | × |
private | √ | × | × | × |
4.构造器
构造器不能被继承,所以不能被重写【实现运行时多态性,发生在一个类中】,但可以被重载【实现编译时多态性,发生在子类和分类之间】
5.HashMap和HashTable区别
1、HashMap是非线程安全的,HashTable是线程安全的。
2、HashMap的键和值都允许有null值存在,而HashTable则不行。
3、因为线程安全的问题,HashMap效率比HashTable的要高。
6.事务的隔离性
隔离性级别越低,并发性越好,但数据库的一致性就越差。
隔离级别越高,并发性越差,但数据库的一致性高。
注意:由低到高 读未提交<读提交<可重复读(默认)<序列化读
错误的级别由低到高:
脏读、不可重复读、幻读
脏读:两个事物,一个事务先修改,另一个事务读,结果是修改前的结果。
不可重复读:两个事物,一个先读是一个结果,一个后修改,再读,又是一个结果。
幻读:第一个事务表中有10、20、30、40几个部门,第二个事务插入表中50的部门,然后提交,第一个事务插入50部门,主键冲突。复制代码