这些基础的java面试题,你都知道吗?
最近收到好多正在找工作的同学的诉苦,辛辛苦苦准备了十多天,终于有了一个面试的机会,却折在了“八大基本数据类型都有什么?”这种最基础的问题上,因而痛失offer,错失机会,真是太可惜了。

面试官的心思难以捉摸,鬼知道会问什么奇葩问题,可能很多同学都把精力用在了IOC,AOP,数据库调优以及各种框架原理的准备上,而忽略了那些最简单,最基础的问题。
有了前车之鉴,为了避免其他同学也遇到这种情况。UP特意整理了一些在面试中出现频率比较高的Java基础的问题,希望能帮助各位同学快速回忆起Java中基础的知识点,顺利拿到offer,找到自己满意的工作。

以下总结的问题,全都来自Java300集,基础不太扎实的同学,一定要再好好学一下哦~
1、什么是JVM?什么是JDK? 什么是JRE?
JVM :JVM是Java Virtual Machine(Java虚拟机)的缩写,它是整个java实现跨平台的最核心的部分,所有的java程序会首先被编译为.class的类文件,这种类文件可以在虚拟机上执行。
JRE:JRE是java runtime environment(java运行环境)的缩写。光有JVM还不能让class文件执行,因为在解释class的时候JVM需要调用解释所需要的类库lib。在JDK的安装目录里你可以找到jre目录,里面有两个文件夹bin和lib,在这里可以认为bin里的就是jvm,lib中则是jvm工作所需要的类库,而jvm和lib和起来就称为jre。
JDK:JDK是java development kit(java开发工具包)的缩写。每个学java的人都会先在机器上装一个JDK,那 让我们看一下JDK的安装目录。在目录下面有六个文件夹、一个src类库源码压缩包、和其他几个声明文件。其中,真正在运行java时起作用的是以下四个文件夹:bin、include、lib、jre。
现在我们可以看出这样一个关系,JDK包含JRE,而JRE包含JVM。
JDK,JRE,JVM三者关系概括如下:
jdk是JAVA程序开发时用的开发工具包,其内部也有JRE运行环境JRE。JRE是JAVA程序运行时需要的运行环境,就是说如果你光是运行JAVA程序而不是去搞开发的话,只安装JRE就能运行已经存在的JAVA程序了。JDk、JRE内部都包含JAVA虚拟机JVM,JAVA虚拟机内部包含许多应用程序的类的解释器和类加载器等等。
2、Java三种注释类型
1)单行注释,采用“//”方式.只能注释一行代码。
2)多行注释,采用“/*...*/”方式,可注释多行代码,其中不允许出现嵌套。
3)文档注释,采用“/**...*/”方式。
3、8种基本数据类型及其字节数

4、i++和++i的异同之处
共同点:
i++和++i都是变量自增1,都等价于i=i+1
如果i++,++i是一条单独的语句,两者没有任何区别
i++和++i的使用仅仅针对变量。 5++和++5会报错,因为5不是变量。
不同点:
如果i++,++i不是一条单独的语句,他们就有区别。
i++ :先运算后增1。如:
++i : 先增1后运算。如:
5、if多分支语句和switch多分支语句的异同之处
相同之处:
都是分支语句,对超过一种的情况进行判断处理。
不同之处:
switch更适合用于多分支情况,就是有很多种情况需要判断处理,判断条件类型单一,只有一个入口,在分支执行完后(如果没有break跳出),不加判断地执行下去;
而if—elseif---else多分枝主要适用于分支较少的分支结构,判断类型不是单一,只要一个分支被执行后,后边的分支不再执行。
switch为等值判断(不允许比如>= <=),而if为等值和区间都可以,if的使用范围大。
6、while和do-while循环的区别
while先判断后执行,第一次判断为false,循环体一次都不执行
do while先执行 后判断,最少执行1次。
如果while循环第一次判断为true, 则两种循环没有区别。
7、break和continue的作用
break: 结束当前循环并退出当前循环体。
break还可以退出switch语句
continue: 循环体中后续的语句不执行,但是循环没有结束,继续进行循环条件的判断(for循环还会i++)。continue只是结束本次循环。
8、类和对象的关系
类是对象的抽象,而对象是类的具体实例。类是抽象的,不占用内存,而对象是具体的,占用存储空间。类是用于创建对象的蓝图,它是一个定义包括在特定类型的对象中的方法和变量的软件模板。
类和对象好比图纸和实物的关系,模具和铸件的关系。
比如人类就是一个概念,人类具有身高,体重等属性。人类可以做吃饭、说话等方法。
小明就是一个具体的人,也就是实例,他的属性是具体的身高200cm,体重180kg,他做的方法是具体的吃了一碗白米饭,说了“12345”这样一句话。
9、面向过程和面向对象的区别

比喻
面向过程是蛋炒饭,面向对象是盖浇饭。盖浇饭的好处就是“饭”“菜”分离,从而提高了制作盖浇饭的灵活性。饭不满意就换饭,菜不满意换菜。用软件工程的专业术语就是“可维护性”比较好,“饭” 和“菜”的耦合度比较低。
区别
编程思路不同:面向过程以实现功能的函数开发为主,而面向对象要首先抽象出类、属性及其方法,然后通过实例化类、执行方法来完成功能。
封装性:都具有封装性,但是面向过程是封装的是功能,而面向对象封装的是数据和功能。
面向对象具有继承性和多态性,而面向过程没有继承性和多态性,所以面向对象优势是明显。
10、方法重载和方法重写(覆盖)的区别

以上这十道面试题UP认为还是很重要的,UP一共整理了600多道面试题,包括java的各个方面。光基础部分就有300多,占了一半。所以,基础很重要啊同学们。把基础部分再好好学一下吧。
