
本文首发于公众号:javaaduhtml
典型回答
这种问题比较笼统,若是我遇到这个问题,我会从下面几个点阐述个人观点:java
- Java经过JVM实现了“一次编写,处处运行”的特性,由JVM屏蔽掉了不一样平台的差别性,并建立了字节码语言来做为Java代码的“汇编语言”,JVM读取字节码文件、解析字节码文件来运行;
- JVM提供了垃圾收集器,大部分状况下,程序员不须要本身担忧内存的分配和回收;
- Java在企业级开发领域具有杀手级框架Spring全家桶,让Java在企业服务领域几无敌手;
- Java在客户端开发领域具有杀手级应用场景——Android开发;
- Java开发的生态很是丰富和完整,有无数成熟可靠的开源软件;
- Java是一门面向对象的静态类型语言,面向对象的特性有助于Java构建大型的、复杂的应用,静态类型语言使得Java在运行时的速度远胜于解释性语言,同时使得Java应用在编译期能够发现不少问题,是类型安全的;
- Java一直在发展和进化,Java 1.5补充了不少有用的特性、Java 1.8开始引入stream、lambda等特性来拥抱函数式编程范式、Java 1.9开始支持模块化等等
问题分析
这种问题属于开放式问题,能够考察不少方面的内容,例如面试者的基础知识是否扎实、知识体系是否完整。越是开放的问题,回答越不能发散,要给出系统性、结构性的回答,表现出本身是系统、全面得掌握了Java语言和其所运行的平台的。程序员
知识点扩展
一、Java知识地图
首先看一张图,是Oracle对Java核心概念的一些总结
面试
这张图看着密密麻麻的,不太好懂,我整理了一份脑图出来,看着更清晰一点(利用虚线框表示包含关系):
编程
- JVM虚拟机:按照虚拟化里面的概念,JVM虚拟机属于宿主型虚拟机,做为一个虚拟机,最核心的模块是:运行时内存管理、类加载、字节码系统、执行引擎、垃圾收集器等等;
- JRE(Java运行时环境):只有JVM,对于普通的Java开发者来讲难度过高了,所以Hotspot的开发者还为普通开发者提供了对应的Java SE API和其余开发者须要的类库,这些API、类库和JVM共同构成了Java运行时环境。
- Java语言:JVM之上不单单有Java语言长盛不衰,还培育出了丰富的语言生态,例如Scala、Groovy、Kotlin、等新生代的语言。
- JDK:JVM、JRE,在加上辅助工具、Java语言,共同构成了JDK。
二、应用场景
从Java语言的应用场景和生态看,分为以下几点:后端
- 企业级开发(J2EE):SSM框架、Spring Boot、Spring Cloud、JPA、缓存、批量处理、定时任务等等;
- 客户端开发(J2ME):安卓开发
- 大数据开发:Spark、Hadoop、Hbase、ES等等
三、新特性
在将上面的内容讲完后,面试官对你的知识体系的完整性应该会比较满意,接下来还能够谈下Java各个版本的发展,最好能提到某个版本比较重大的新特性,向面试官证实你不只掌握了基础,还随时跟进Java语言最新的发展。缓存
- Java 1.8
- Java 1.9
- Java 1.11
参考资料
- Description of Java Conceptual Diagram
本号专一于后端技术、JVM问题排查和优化、Java面试题、我的成长和自我管理等主题,为读者提供一线开发者的工做和成长经验,期待你能在这里有所收获。安全
