JAVA常见面试题目汇总及答案

一、String,StringBuffer, StringBuilder 的区别是什么?String为什么是不可变的?

1、String是字符串常量,StringBuffer和StringBuilder都是字符串变量。后两者的字符内容可变,而前者创建后内容不可变。

2、StringBuffer是线程安全的,而StringBuilder是非线程安全的。

3、String不可变是因为在JDK中String类被声明为一个final类。

ps:线程安全会带来额外的系统开销,所以StringBuilder的效率比StringBuffer高。如果对系统中的线程是否安全很掌握,可用StringBuffer,在线程不安全处加上关键字Synchronize。

二、Vector,ArrayList, LinkedList的区别是什么?

  1、Vector、ArrayList都是以类似数组的形式存储在内存中,LinkedList则以链表的形式进行存储。

  2、Vector线程同步,ArrayList、LinkedList线程不同步。

六、GET,POST区别?

1、Get是从服务器端获取数据,Post则是向服务器端发送数据。

2、在客户端,Get方式通过URL提交数据,在URL地址栏可以看到请求消息,该消息被编码过;Post数据则是放在Html header内提交。

4、Get方式提交的数据最多1024字节,而Post则没有限制。

5、Get方式提交的参数及参数值会在地址栏显示,不安全,而Post不会,比较安全。

七、Session, Cookie区别

 https://www.cnblogs.com/Archer-Fang/p/9032034.html

十六、对IOC、和AOP的理解及实现原理

 1.IOC:许多应用都是通过彼此间的相互合作来实现业务逻辑的,如类A要调用类B的方法,以前我们都是在类A中,通过自身new一个类B,然后在调用类B的方法,现在我们把new类B的事情交给spring来做,在我们调用的时候,容器会为我们实例化。

2.AOP:在我们开发中,都会有一条业务主线(即客户的需求)。而我们要做的就是实现这个主线上的需求。我们在实现这些功能的时候,经常要干一些额外的不可避免的事情,比如事务的管理,日志的记录等,就很繁杂且代码量增多。所以 Spring 提供了另一种角度来思考程序结构,也就是把这一些事情剥离出来,然后适时适地的把它们加入到我们的代码中。

 

posted @ 2019-02-01 16:15  Archer-Fang  阅读(100)  评论(0编辑  收藏  举报