前言
面试是类似演讲演说的过程,网上的资料都是文字的,没法让面试者直观的体验到面试过程,本人已经将相关内容制作成音频节目,简书我还不能上传音频,有兴趣的朋友可以去喜马拉雅搜索《2020年Java面试208题》收听音频版节目。
《2020年Java面试208题》整理了208个Java程序员的面试题,主要是针对三年以内开发经验的JAVA程序员提出的问题。
题目
今天要说的是《2020年Java面试208题》的第1题,面试官提问:请说一下JDK和JRE的区别。
知识点分析
这个问题比较简单,同时,这个问题其实我是存在真实性的疑问,因为我确实从来没听说哪个面试官提过这个问题的。不过不要紧,这可能不是一道真实的面试题,但一定是一个真实的问题,你可以当做一个Java冷知识来听,相信对你理解Java这个产品有所帮助。
下面我就演示回答一下这个问题:
演示面试
好的,面试官,我来说说JDK和JRE的区别,。
JRE:是英文Java Runtime Enviroment的缩写,中文是Java运行时环境,就是Java运行时需要的环境。
JDK:是英文Java Development Kit的缩写,中文是Java开发工具包。
从字面意思就可以理解JRE是JAVA程序在运行时候用的,也就是JAVA代码都编译好生成了class后缀的文件了,在生产环境下运行的时候需要的环境。因此,JRE是提供给最终使用者的。
而JDK是给开发者用的,其实JDK是完整包含JRE,也就是说JRE是JDK的子集,JDK相对于JRE多了一些编译和开发工具,比如编译器javac,监控工具jconsole,内存查看工具jps等,这些都是用于编译和辅助开发的。
对于应该安装JDK还是JRE,需要看具体的应用场景。在开发阶段一定要安装JDK,这个不需要讨论。而在生产环境,如果确信运行时不需要再执行编译的话是可以安装JRE的,因为一般来说生产环境下所有的java文件都被编译成最终的class文件。但也有特殊情况,比如项目中采用jsp文件作为前端页面,因为jsp是需要在运行的时候动态编译成class文件,这时候就必须存在编译环境,也就是需要安装JDK。当然,如果所有的jsp文件也已经完成了编译,那也是可以只安装JRE的,但其实真实项目是不会这么做的,因为jsp文件的编译普遍并不是采用maven编译生成class文件,而是在tomcat容器中运行的时候编译到work文件夹下面,因此不太可能有团队采用手动编译jsp的方式。
另外在项目运行中,有时候是需要监控查看生产环境下的内存、堆栈等,这个时候没有JDK会很不方便。反正我一般在服务器部署的时候也安装JDK,记忆中只曾经在一个客户那里部署JRE而没有安装JDK。
好了,以上就是我的演示面试,不知道是否让你满意。
我对自己答题的点评:
1 我说到JDK包含JRE的时候,用到了子集这个词,这个词儿是数学里面的,在面试的时候尽量用些能装逼的词儿。口语化的谈话让你的语言组织更容易流程,但高大上的词儿让你的逼格与众不同。类似的,假如你想要说一个x轴、y轴的坐标系的时候,你可以说笛卡尔坐标系,是否感觉自己都有点儿数学系大二学生的饱满感了?
2 核心问题答完了,能多说点儿就多说点儿,只要不是特别跑题,面试官不会觉得你偏题,而是觉得这家伙真的对这类问题游刃有余,又有实际经验。我在这个题目中就扩展了在开发时候和最终生产环境部署的时候应该安装JDK还是JRE的个人理解。
下期再见
本人技术有限,凭借热情希望给程序员面试提供一点帮助,必有不足之处,希望业内人士积极批评指正,在留言区留言就是对我的最大鼓励。希望批评中肯一些,不要存在人身攻击,更不要波及到家人,善意中肯的批评我都能够虚心接受。 我们下期再见。