Java后端3面,本科校招进来的,挺优秀的小伙子。
JDK 和 JRE 有什么区别?
答:具体来说 JDK 其实包含了 JRE,同时还包含了编译 Java 源码的编译器 Javac,还包含了很多 Java 程序调试和分析的工具。简单来说:如果你需要运行 Java 程序,只需安装 JRE 就可以了,如果你需要编写 Java 程序,需要安装 JDK。
再问:除了javac你还了解些什么命令行工具,它们的用途是什么?
Jcmd:综合工具
jps:虚拟机进程状况工具
jinfo jstat:虚拟机统计信息监视工具
jinfo:Java配置信息工具
jmap:Java内存映像工具
jhat:虚拟机堆转储快照分析工具
jstack:Java堆栈跟踪工具
追问:用过jstat吗?你了解哪些参数?
……
其实这些问题单独拎出来并不难,主要是要对技术栈和原理有深入的理解,成体系、成架构,在面对面试官的层层深入盘问才能有条不紊的回答。
到这个程度,差不多就能过了。
Java 二面,工作3年的老兵,技术不是很扎实
这位小哥答得不是很好,我直接给大家放“参考答案”。
问:== 和 equals 的区别是什么?
**答案要点:**两个方法都是比较等价性。它们的区别要从“基本类型”和“引用类型”来看,作为基本类型来说,它们比较的都是值,作为引用类型——对象来说,它们比较的是双方是否是同一个对象。
**考察点:**基本类型&引用类型
基本类型:比较的是值是否相同
引用类型:比较的是引用是否相同
equals()的原生实现可以直接的定义它们之间的关系:
加分Tips:
当然,我们可以通过重载Oblect中的equals方法来实现自定义的等价计算方法。比如在String类型中,由于源码中重新实现了该方法,所以会产生下面的结果:
Tips:用字符串常量实例化的String的内容其实是保留在常量区
String x = “string”;
String y = “string”;
x==y ——> true
引用的都是常量区的同一个数据项,所以有上面的结果
**考察点:**equals()的概念
**实际要求:**平时对源码的深挖意识即技术钻研和批判性思维
上面这些题目有这样的特点:
1、都是教科书级的题目
2、都是工程实践中常用的
3、都是习以为常,不容易去主动深究的
考察目的:
1、基础知识的扎实程度
2、候选人对技术的热情