一、Java基础(概念)
- 面向对象的特性有哪些:封装、继承和多态。
- Object类中的方法:https://www.cnblogs.com/NoPeach/p/8460810.html
- 为什么Object会有wait方法:https://www.cnblogs.com/lirenzhujiu/p/5927241.html
- 为什么Object会有clone方法:https://blog.csdn.net/chosen0ne/article/details/6290186
- 深克隆与浅克隆:https://blog.csdn.net/jeffleo/article/details/76737560
- Java的传值方式:https://blog.csdn.net/wb_snail/article/details/78643770
- 谈谈Java中的volatile:http://www.cnblogs.com/chengxiao/p/6528109.html
- 接口和抽象类的区别:http://www.importnew.com/12399.html
- Java对象的序列化及反序列化:https://www.cnblogs.com/xdp-gacl/p/3777987.html
- String类为什么是final的1:https://blog.csdn.net/qq_27093465/article/details/52190915
- String类为什么是final的2:https://blog.csdn.net/u013905744/article/details/52414111
- Class.forName和classloader的区别:https://blog.csdn.net/qq_27093465/article/details/52262340
- Java反射性能问题:https://blog.csdn.net/f641385712/article/details/81225239
- Java反射性能优化:1). m.setAccessible(true); 由于JDK的安全检查耗时较多.所以通过setAccessible(true)的方式关闭安全检查就可以达到提升反射速度的目的。2)用缓存,比如redis, 这个方法提高效率是显而易见的。 将反射得到元数据保存起来,使用时,只需从内存中调用即可。3)利用一些高性能的反射库,如ReflectASM ReflectASM 使用字节码生成的方式实现了更为高效的反射机制。执行时会生成一个存取类来 set/get 字段,访问方法或创建实例。一看到 ASM 就能领悟到 ReflectASM 会用字节码生成的方式,而不是依赖于 Java 本身的反射机制来实现的,所以它更快,并且避免了访问原始类型因自动装箱而产生的问题。https://blog.csdn.net/sjtu_chenchen/article/details/51315297
- Arrays.sort和Collections.sort实现原理:不论是Collections.sort方法或者是Arrays.sort方法,底层实现都是TimSort实现的,这是jdk1.7新增的,以前是归并排序。TimSort算法就是找到已经排好序数据的子序列,然后对剩余部分排序,然后合并起来。:https://blog.csdn.net/u011410529/article/details/56668545
- java中Comparable和Comparator两种比较器的区别:https://www.cnblogs.com/szlbm/p/5504634.html
- 2
- 23
二、Java基础(特殊面试题)
- 一个ArrayList在循环过程中删除,会不会出问题,为什么:https://www.cnblogs.com/androidsuperman/p/9012320.html
- @transactional注解在什么情况下会失效,为什么:http://www.cnblogs.com/androidsuperman/p/9013094.html
- 为什么要重写hashcode()和equals:
- 比较两个对象是否相等equals,比较两个对象是否相同==。
- Integer,Short,Long 中有个Cache存放-128到128的值,Integer i1,i2=120,直接i1=i2返回true,但是Integer i3,i4=129(以后的值),直接i3=i4返回false。原因是Integer生成时直接返回Cache中120的对象,所有i1=i2返回true,而i3,i4初始时,Integer中Cache不含有他们对应的对象,i3,i4初始时直接新生成了两个对象,所有i3=i4返回false。因为-128到128数据经常使用,包装类自身便把他们初始化在Cache当中,方便使用,效率更快。(但是Float和Double没有Cache初始化)
- 为什么不能根据返回类型来区分重载:https://blog.csdn.net/sinat_32176267/article/details/70568756
三、Java基础
- 1
四、1.7新特性
- 网址:https://blog.csdn.net/u014209205/article/details/79718689
- 网址2:1)switch中使用String。2)try-with-resources。3)捕获多个异常。4)泛型实例化类型自动推断。5)增加二进制表示。6)数字中可添加分隔符。
五、Java8新特性
- 网址:https://blog.csdn.net/shuaicihai/article/details/72615495
- 网址2:http://www.runoob.com/java/java8-new-features.html
- 新特性:1)Lambda 表达式。2)方法引用与构造器引用。3)默认方法。4)新工具(Nashorn引擎 jjs)5)Stream API。6)Date Time API。7)Optional 类。8)Nashorn, JavaScript 引擎。
六、Java9新特性
- 网址:http://www.importnew.com/24528.html
- 新特性:1)Java 平台级模块系统。2)Linking(jlink 工具)。3)JShell : 交互式 Java REPL。4)改进的 Javadoc。5)集合工厂方法。6)改进的 Stream API。7)私有接口方法。8)HTTP/2。9)多版本兼容 JAR。
- 23
七、Java10新特性