美团面试:你了解JDK版本相关特性吗?结果令人尴尬!
回复“000”获取程序员必备电子书
大家好,我是田维常,十年码农给你分享后端开发技术,记得关注我。
前面分享11篇,关于2017年,我去上海美团面试遇到的技术问题。
美团面试:String s = new String("111")会创建几个对象?
美团面试:为什么就能直接调用userMapper接口的方法?
关于版本意识,尤其是初学者,很少有人会关注(很多三五年了,照样没怎么关注)。
为什么不关注呢?因为他们关注都是功能点或者知识点。
后来,逐渐的,一部分人在开发中就会遇到各种各样的问题,于是就开始关注版本了,而另外一部分人完全就是为了应付面试。
接下来,我们就来聊聊JDK版本和相关特性。
JDK版本变更历史
下面我呢来整体预览一下JDK版本变更情况:
JDK版本 | 发布时间 |
---|---|
1.0 | 1996-01-23 |
1.1 | 1997-02-19 |
1.2 | 1998-12-04 |
1.3 | 2000-05-08 |
1.4.0 | 2002-02-13 |
Java SE 5.0 / 1.5 |
2004-09-30 |
Java SE 6.0 / 1.6 |
2006-04 |
Java SE 7.0 / 1.7 |
2011-07-28 |
Java SE 8.0 |
2014-03-18 |
Java SE 9.0 |
2017-09-21 |
Java SE 10.0 |
2018-03-21 |
Java SE 11.0 |
2018-09-25 |
Java SE 12.0 |
2019-02-07 |
Java SE 13.0 |
2019-09-26 |
Java SE 14.0 |
2020-03-17 |
Java SE 15.0 |
2020-09-15 |
Java 8发布于2014年3月14号,从Java 8开始开发代号已经弃用了,所以从Java 8之后已经没有官方的开发代号了。Java 8u201/202
是最后一个免费的 Oracle JDK 8
版本,Oracle于 2019-01-15 停止免费商用更新。
很多人,你的是不是年龄还没有JDK大?羡慕
JDK版本功能增强
JDK1.0
:初代版本,纯解释运行,使用外挂JIT,性能比较差,运行速度慢。JDK1.1
:JDBC(Java DataBase Connectivity)
、支持内部类、RMI、反射、Java Bean。JDK1.2
:集合框架 、JIT
、JFC
、Java插件 、JDBC中引入可滚动结果集 、Applet中添加声音支持。JDK1.3
:Java Sound API
、jar文件索引、对Java的各个方面都做了大量优化和增强 。JDK1.4
:正则表达式,异常链,NIO
,日志类,XML解析器,XLST
转换器。JDK1.5
:自动装箱、泛型、动态注解、枚举、可变长参数、遍历循环。JDK1.6
:提供动态语言支持、提供编译API和卫星HTTP服务器API,改进JVM的锁,同步垃圾回收,类加载。JDK1.7
:提供GI收集器、加强对非Java语言的调用支持(JSR-292,升级类加载架构)。JDK8
:Lambda
表达式、方法引用、默认方法、新工具、Stream API
、Date Time API
、Optional
类、Nashorn
,JavaScript
引擎。JDK9
:1、集合加强;2、私有接口方法;3、垃圾收集机制;4、I/O流加强;5、JShell
工具。JDK10
:1、局部变量类型推断;2、线程本地握手;3、GC改进
和内存管理。JDK11
:1、字符串加强;2、HttClient Api
;3、用于 Lambda 参数的局部变量语法;4、ZGC
JDK12
:1、Switch Expressions
;2、Shenandoah GC
。JDK13
:1、switch优化更新;2、文本块升级;3、重新实现旧版套接字API;4、核心库/java.util
中:I18N;5、取消使用未使用的内存。JDK14
:1、switch优化变更为最终版;2、垃圾回收相关;3、instanceof
的模式匹配(预览版);4、删除了安全库java.security.acl API
;5、货币格式(优化)。JDK15
:将RMI
标记为Deprecate,还有Hidden Classes 、Pattern Matching 、Text Blocks 等特性。
尽管JDK
版本已经更新到15了,但,据统计目前在开发和线上环境中,使用最多的是JDK8
。
在此,想问问大家,你用的是哪个版本?
帮忙转发起来,看看到底哪个JDK版本最受欢迎!
两类问题
关于JDK版本的问题,可以归纳为两类:
在开发中,其实遇到的也不算多,主要问题出现大部分在于本地开发环境的JDK版本和线上版本存在着差异,或者就是别人编译使用的JDK版本和咱们的不同导致的。
在面试中,一般都是重点考察范围:JDK5/6/7/8/9
这5个版本。另外,JDK版本不同,在JVM中也有一些细微调整。比如:方法区由之前的永久代转变成元空间,常量、字面量等存放位置变化,这些都得有所了解,不然只是背上面的,不然会显得很肤浅。
关于JVM相关内容,推荐:
部分参考:blog.csdn.net/qq_26264237/
好了,今天就分享到这里了。
知识在于一点一滴的积累,滴水穿石!
加我微信,拉你进群,和大家一起聊技术、谈人生!
推荐阅读