1.面向对象的特征
(1)封装 (2)继承 (3)多态
2.final finally finalize的区别
(1)final : 被final修饰的类,就意味着不能再派生出新的子类,不能作为父类而被子类继承。因此一个类不能既被abstract声明,又被final声明。将变量或方法声明为final,可以保证他们在使用的过程中不被修改。被声明为final的变量必须在声明时给出变量的初始值,而在以后的引用中只能读取。被final声明的方法也同样只能使用,不能重载。
(2)finally : 在异常处理时提供finally块来执行任何清除操作。不管有没有异常被抛出、捕获,finally块都会被执行。try块中的内容是在无异常时执行到结束。catch块中的内容,是在try块内容发生catch所声明的异常时,跳转到catch块中执行。finally块则是无论异常是否发生,都会执行finally块的内容,所以在代码逻辑中有需要无论发生什么都必须执行的代码,就可以放在finally块中。
(3)finalize : finalize是方法名。java技术允许使用finalize()方法在垃圾收集器将对象从内存中清除出去之前做必要的清理工作。这个方法是由垃圾收集器在确定这个对象没有被引用时对这个对象调用的。它是在object类中定义的,因此所有的类都继承了它。子类覆盖finalize()方法以整理系统资源或者被执行其他清理工作。finalize()方法是在垃圾收集器删除对象之前对这个对象调用的。
3.int 和 Integer有什么区别
(1)int属于原始基本数据类型,而Integer是对应的包装类
因为Java为每个原始类型提供了封装类:为了能够将这些基本数据类型当成对象操作,Java为每 一个基本数据类型都引入了对应的包装类型,int的包装类就是Integer,从Java 5开始引入了自动装箱/拆箱机制,使得二者可以相互转换。
原始类型: boolean,char,byte,short,int,long,float,double
封装类类型:Boolean,Character,Byte,Short,Integer,Long,Float,Double
(2)Integer变量必须实例化后才能使用
因为Integer是对象的引用,new Integer(xxx),实际上是生成一个指针指向此对象;而int是直接存储数据值
(3)Integer是对象(对象的引用),int是基本类型,直接存储数值。
(4)Integer默认值是null,而int默认值是0;
4.重载和重写的区别
重载:发生在同一个类里有两个或多个方法方法名相同但参数不同的情况
重写/覆盖:子类重新定义了父类的方法
5.抽象类和接口有什么区别
抽象类:
(1)抽象类中可以有构造方法,但不能创建抽象类的实例,只能创建一个抽象类的变量,让它指向具体子类的一个实例。
(2)抽象类中可以存在普通属性、方法,静态属性和方法,但不能有抽象构造函数或者抽象静态方法
(3)抽象类中不一定包含抽象方法,但包含抽象方法的类一定要被声明为抽象类
(4)抽象类中的抽象方法,需要被子类实现,如果子类不实现,则子类也要被定义为抽象类
接口:
(1)接口中没有构造方法,所以也不能实例化接口的对象
(2)在接口中只有方法的声明,没有方法体
(3)在接口中只有常量,被定义的变量也会在编译的时候默认加上public static final
(4)在接口中的方法,都是被public修饰的
(5)接口可以实现多继承
(6)接口中定义的方法都需要被实现咧实现,如果实现类不能实现接口中的所有方法,则实现类要被定义为抽象类(abstract)
6.访问修饰符public private,protected以及不写(默认时的区别)
7.是否可以继承String类
String类是final类,不可以被继承
8.HTTP请求的GET 、POST方式的区别
GET:
a.一般只用于查询请求
b.可以被收藏,以及缓存
c.请求参数放在URL中
d.请求数据大小受限于url长度(1024字节)
e.安全性比较低,不应该处理敏感数据的请求
POST:
a.不能缓存以及收藏
b.请求数据放在body中,长度不限制
c.安全性比较高
9.session与cookie的区别
1、cookie数据存放在客户的浏览器上,session数据放在服务器上.
2、cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗,考虑到安全应当使用session。
3、session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能考虑到减轻服务器性能方面,应当使用COOKIE。
4、单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie。(Session对象没有对存储的数据量的限制,其中可以保存更为复杂的数据类型)
注意:
a.session很容易失效,用户体验很差;
b.虽然cookie不安全,但是可以加密 ;
c.cookie也分为永久 和暂时 存在的;
d.浏览器 有禁止cookie功能 ,但一般用户都不会设置;
e.一定要设置失效时间,要不然浏览器关闭就消失了;
f.两者最大的区别在于生存周期,一个是IE启动到IE关闭.(浏览器页面一关 ,session就消失了)
一个是预先设置的生存周期,或永久的保存于本地的文件。(cookie)
10.session分布式处理
11.JDBC流程
(1)注册驱动
Class.forName("com.mysql.cj.jdbc.Driver");
(2)连接数据库
Connection connection = DriverManager.getConnection("jdbc:
mysql://localhost/Contacts?serverTimezone=UTC", "root", "Cc229654512");
(3).创建语句
Statement state = conn.createStatement();
(4).执行SQL语句
ResultSet resultSet=state.executeQuery("select Name, PhoneNumber, Email, QQ, Note from Contacts");
(5).处理结果集
while(resultSet.next())
{
System.out.println(resultSet.getString(1)+"\t"+resultSet.getString(2)+"\t"+resultSet.getString(3));
}
(6).关闭连接
rs.close();
state.close();
conn.close();
12.MVC设计模式
13.equals 与 == 的区别
(1)基本数据类型(也称原始数据类型):byte,short,char,int,long,float,double,boolean,他们之间的比较,应用双等号(==),比较的是他们的值。
(2)复合数据类型(类):当他们用(==)进行比较的时候,比较的是他们在内存中的存放地址。所以,除非是同一个new出来的对象,他们的比较后的结果为true,否则比较后结果为false。
JAVA当中所有的类都是继承于Object这个基类的,在Object中的基类中定义了一个equals的方法,这个方法的初始行为是比较对象的内存地 址,但在一些类库当中这个方法被覆盖掉了,如String,Integer,Date在这些类当中equals有其自身的实现,而不再是比较类在堆内存中的存放地址了。【对于复合数据类型之间进行equals比较,在没有覆写equals方法的情况下,他们之间的比较还是基于他们在内存中的存放位置的地址值的,因为Object的equals方法也是用双等号(==)进行比较的,所以比较后的结果跟双等号(==)的结果相同。】
值类型是存储在内存中的堆栈(简称栈),而引用类型的变量在栈中仅仅是存储引用类型变量的地址,而其本身则存储在堆中。所以,==比较的是栈里的地址,而equals比较的是栈里面地址所指向的堆里面的内容。
14.自动装箱与自动拆箱
15.设计模式的六大原则
(1)单一职责原则
(2)开放封闭原则
(3)里氏替换原则
(4)依赖倒置原则
(5)接口隔离原则
(6)迪米特法则
详解参考此文章设计模式之六大原则(转载) - chenxiangxiang - 博客园
16.说说反射的用途及实现
17.说说自定义注解的场景及实现
查漏补缺,未完待续