Java后台面试

1、 创建线程有几种不同的方式?你喜欢哪一种?为什么?
    3种: 继承Thread类、 实现Runnable接口、实现Callable接口
    实现Runnable接口;因为这不需要继承Thread类。在应用设计中已经继承了别的对象的情况下, 这需
    多 继承(而Java不支持多继承),只能实现接口。同时,线程池也是非常高效的,很容易实现和使用。

2、String和StringBuffer,StringBuild有什么不一样,为什么不可变长,或者可以变长?
     答:String 长度不可变

Java后台面试_第1张图片      

而StringBuffer对象的底层也是一个char[]数组, 但是并没有用final修饰,所以数组的值是可变的。    

3、SQL语言优化,SQL注入,预编译是怎么实现的,为什么可以防止SQL注入?
4、反射,反射怎么实现的,反射有什么作用?
5、动态代理怎么实现的,Spring的动态代理和原生的Spring动态代理?
6、动态代理和反射的不同之处?
7、有什么线程池,用过什么线程池?怎么实现的?
8、Spring怎么实现注入的(反射和动态代理,IOC和AOP)?
9、HashMap是不是线程安全的,为什么,底层怎么实现?
10、Spring和JFinal相同和不同之处?
11、HTTP IP协议,TCP协议,三次握手,四次挥手
12、项目里的角色,作用,使用的技术栈
13、你遇到的最大困难时什么?怎么解决的?
        答:不敢尝试,勇气,敢于去尝试硬着头皮去做

1、System.out.println()中的System、out、 println()分别代表什么?
    答:System是java.lang里面的一个类
            out是System里的一个数据成员(也称为字段),但它不是基本类,而是java.io.PrintStream类的对象
            println()就是java.io.PrintStream类里的一个方法,它的作用就是用来想控制台输出信息的


你可能感兴趣的:(Java)