众所周知,面试造火箭,工作拧螺丝。想要进入一个好公司就好像考一所好大学一样,要经过层层选拔,尽管面试官也知道你是在背八股文,但是他就是从八股文背的熟练而且能举一反三的人中选人才,所以今天开始一个系列的连载,主要内容是Java面试的高频问题讲解,过程中会讲一些笔者自己面试过程中遇到的困境,比如不知道如何下手,有些知识点背不住等等,首先就从大家最熟悉的Java基础开始帮大家复习复习吧,这部分面试问到的频率并不高,但是一旦问到没有答好就会让面试官心里对你大大的减分,所以打好基础真的很重要啊。
1. 谈谈你对Java平台的理解
这个题目不止可以这样问,也可以问**你觉得Java最大的特点是什么?**或者用一些更开发的问法,但是笔者认为核心就是两个点要答出来,一个是Java的跨平台能力(或者说虚拟机),另外一个是垃圾收集机制。不要被这个题目开放式的问法迷惑,答其它的答案都会让你在面试中显的平庸。
参考回答:
对于不同的平台,有不同的虚拟机,只有某平台提供了对应的java虚拟机,java程序才可在此平台运行,Java虚拟机机制屏蔽了底层运行平台的差别,程序由虚拟机编译为字节码指令,实现了“一次编译,到处运行”。
Java 语言消除了程序员回收无用内存空间的责任:它提供一种系统级线程跟踪存储空间的分配情况。并在JVM空闲时,检查并释放那些可被释放的存储空间。
2. 谈谈JDK/JRE/JVM的区别与联系
老生常谈的一个问题,很多人却答不全。首先看一下这张图。
最直观的来说:
- JDK = JRE + 开发工具集(例如Javac编译工具等)
- JRE = JVM + Java SE标准类库
详细解释一下JDK、JRE和JVM
JDK(Java Development Kit Java开发工具包)
JDK是提供给Java开发人员使用的,其中包含了java的开发工具,也包括了JRE。所以安装了JDK,就不用在单独安装JRE了。其中的开发工具:编译工具(javac.exe) 打包工具(jar.exe)等。
JRE(Java Runtime Environment Java运行环境)
包括Java虚拟机(JVM Java Virtual Machine)和Java程序所需的核心类库等,如果想要运行一个开发好的Java程序,计算机中只需要安装JRE即可。
JVM(Java Virtual Machine,虚拟机)
Java语言使用Java虚拟机屏蔽了与具体平台相关的信息,使得Java语言编译程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。JVM非常非常重要,关于JVM后续还会有很多相关的面试题分享。
3. 谈谈你对面向对象的理解,讲一讲多态
这个题也是老八股文了,但是多态很多人解释不好,大家可以参考我的答案。
答:面向对象三大特征分别为封装、继承、多态
所谓封装,也就是把客观事物封装成抽象的类,某些代码或某些数据可以是私有的,不能被外界访问。通过这种方式,对象对内部数据提供了不同级别的保护。
所谓继承,是指可以让某个类型的对象获得另一个类型的对象的属性的方法。继承实现方式有二种:
所谓多态,就是指一个类实例的相同方法在不同情形有不同表现形式。
Java实现多态有三个必要条件:
1、继承:在多态中必须存在有继承关系的子类和父类。
2、重写:子类对父类中某些方法进行重新定义,在调用这些方法时就会调用子类的方法。
3、向上转型:在多态中需要将子类的引用赋给父类对象,只有这样该引用才能够具备技能->调用父类的方法和子类的方法。
好处:提升代码的扩展性;同时使调用者不用太在意具体的实现而只需要知道方法本身存在即可。
4. 数据类型有哪些,八大基本数据类型、各自占空间大小
数据类型 | 占用空间 |
---|---|
byte | 1字节=8bit位 |
short | 2字节 |
int | 4字节 |
long | 8字节 |
float | 4字节 |
double | 8字节 |
char | 2字节 |
boolean | 1字节 |
double | 8字节 |
char | 2字节 |
boolean | 1字节 |
今天第一期各位小试牛刀,估计都能答个七七八八,我做这个专栏的目的就是大家茶余饭后做个积累,以后每做完一期会把文稿整理成markdown格式发给大家,供大家面试的时候复习背诵,欢迎关注公众号:代码背后的故事,会在公众号上最快发布新内容哦。