1、创建线程有几种不同的方式?你喜欢哪一种?为什么? 3种:继承Thread类、实现Runnable接口、实现Callable接口 实现Runnable接口;因为这不需要继承Thread类。在应用设计中已经继承了别的对象的情况下,这需要 多继承(而Java不支持多继承),只能实现接口。同时,线程池也是非常高效的,很容易实现和使用。
2、String和StringBuffer,StringBuild有什么不一样,为什么不可变长,或者可以变长? 答:String长度不可变
而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类里的一个方法,它的作用就是用来想控制台输出信息的
|