中级Java面试题及答案汇总

时间:2025-04-09 09:41:51

一、简述对HTTP协议的理解

答:http协议是超文本传输协议,是客户端与服务器进行数据通信的一种协议,协议规定请求以及响应的格式(Request请求:请求行+请求首部+请求体;Response响应;响应行+响应首部+响应体)。

二、Java字符串拼接有几种方式?

答:1.“+”方式,直接进行拼接;

       方法“concat”方式:理论上效率最高,但两个参数都必须是string类型字符串并且都不能为null;

         String a="a";

         String b="b";

         String c= (b);

       3.“append”方式

 StringBuffer buf=new StringBuffer()

 ("a");

 ("c");

 String d=();

**注意:(1)StringBuffer是线程安全的,StringBuilder是线程不安全的(但效率更高,单线程建议使用);

             (2)为提高多个字符串拼接效率,可以事先设置StringBuffer估算好的容量长度

                       StringBuffer buf=new StringBuffer(()+()+());

总结:三种方式各有优点,结合实际情况使用。

三、Exception和Error的区别

答:都继承与Throwable

异常):是java程序运行中不可预见的异常情况,jvm将不可处理和不可恢复。应快速处理异常(捕获/抛出),使程序恢复正常运行;

(错误):是java程序代码系统的错误,需要程序员修改程序代码才能够解决;

四、IOC,AOP

答:Spring是一个轻量级的控制反转(IOC)和面向切面编程(AOP)的容器框架;

:控制反转,将创建对象(new对象)的控制权反转到了spring框架上

**IOC容器:具有依赖注入功能的容器,可以创建对象的容器,负责实例化,定位,配置应用程序中的对象并建立起依赖关系;

       **Spring依赖注入的方式:注解注入(常用方式)、set注入,构造器注入,静态工厂注入;

            依赖注入注解:@Service+@Autowired/@Resource

:面向切面编程,将相同的操作代码剥离出来,单独放到一个类中集中起来,通过AOP动态织入这些公共代码;

       **主要用于:日志记录,权限控制,性能统计,异常处理,事务控制,参数校验,签名验签等;

     切面:@Aspect;切点:@Poincut;等注解;

五、使用equals方法前提需要满足哪几个特性条件?

答:1.自反性:对任何非null的x变量,(x)返回值必须为true;

       2.对称性:对任何非null的x,y变量,(y)和(x),两者返回值必须一样;

       3.传递性:对任何非null的x,y,z变量,(y),(z),(x),三者的返回值必须一样;

       4.一致性:对任何非null的x,y变量,只要他们再程序中没有被更改,则多次调用(y)的返回值必须一样;

      **==和equals区别:==基本数据类型比较的是“值”,引用数据类型比较的是地址值;

                                      equals不能比较基本数据类型,引用数据类型比较的是地址值,但是如果重写equals,则比较的是内容;

六、线程安全和非线程安全

答:1.多个线程运行同一段代码片段得到的结果,跟单个线程得到的结果一致,其他变量也和预期的一样,则线程是安全的,例如:StrungBuffer,ArrayList,HashMap等;

      非线程安全是指:一个数据被一个线程读取并且修改,但还没有保存或进一步处理,同时另外一个线程也读取此数据进行操作,从而造成了脏数据;如:StringBuilder,Vector,HashTable

      2.根本原因:存在两个或两个以上的线程共用同一个数据资源

      3.解决办法:同步代码块,同步方法:synchronized关键字用来控制线程同步;

                          Lock:lock锁机制,lock()加锁,unlock()解锁;

七、Java8新特性

答:1.接口默认方法(接口扩展方法),关键字:default;可以在接口中添加一个非抽象的方法,在实现类当中可以直接使用;

interface demo{

    int inDemo();

   default int inDemo(){

        return 1;

   }

}

2.Lambda表达式