大纲:
① JDK、JRE、JVM的区别和联系有哪些?
三者的概念如下:
JDK(Java Development Kit)是一个开发工具包,是Java开发环境的核心组件,并且提供编译、调试和运行一个Java程序所需要的所有工具 ;
JRE(Java Runtime Environment)是指Java运行时环境,是JVM的实现,提供了运行Java程序的平台。JRE包含了JVM,但是不包含Java编译器/调试器之类的开发工具 ;
JVM(Java Virtual Machine)是指Java虚拟机,当我们运行一个程序时,JVM负责将字节码转换为特定机器代码,JVM提供了内存管理/垃圾回收和安全机制等 ;
区别与联系:
②基本数据类型及其包装类、装箱拆箱 (待补充)
问题1 :Java中的8种基本数据类型及其取值范围
Java种的8种基本数据类型分别是:byte,short,int,long,float,double,char以及boolean。boolean类型的取值为true和false两种,其余每一种基本类型都占有一定的字节, 其余每一种基本类型都占有一定的字节,并且拥有着最大值和最小值。比如int的取值范围为 Integer.MIN_VALUE 到 Integer.MAX_VALUE。 这里给出每种基本类型所占用的字节数:
解析:
这是一个特别基础的题目,面试时候基本会考察各个基本类型所占的字节数,需要准确记忆与理解。关于取值范围,如果实在记忆有点缺失,可以和面试官说通过哪个字段可以获取到其取值范围也算尚可。
问题2 :int和integer的区别?(原始数据类型和包装类的区别)
问题3:什么是自动拆装箱?
③ java中的值传递和引用传递
值传递,意味着传递了对象的一个副本,即使副本被改变,也不会影响源对象 。
引用传递,意味着传递的并不是实际的对象,而是对象的引用。因此,外部对引用对象的改变会反映到所有的对象上。
一般而言,java内的传递都是值传递。
说明:
如果传递的是基本数据类型,那么是属于值传递的范畴,传递的其实是源对象的一个copy副本,不会影响源对象的值。
如果传递的是引用数据类型,传递的实际是地址值。
④ hashcode、equals和== (待补充 2 )
1 == 与 equals的区别
2 hashcode与equals(涉及到集合的底层源码)
这两个方法都是Object类中的方法:
hashcode()方法:该方法直接返回对象的内存地址( 它的实现是根据本地机器相关的 )。
equals()方法:上面已经介绍过。
联系:
-------------------------------------------------------------------
问题:请你解释下为什么重写equals还有重写hashcode?
答:待补充,学到集合的时候
⑤ java中的元注解与注解 (待补充)
元注解:
Java中提供了4个元注解,元注解的作用是负责注解其它注解。
: 说明注解所修饰的对象范围
@Retention:(保留策略) 保留策略定义了该注解被保留的时间长短
其中,SOURCE:表示在源文件中有效(即源文件保留);CLASS:表示在class文件中有效(即class保留);RUNTIME:表示在运行时有效(即运行时保留)。例如,@Retention(RetentionPolicy.RUNTIME)标注表示该注解在运行时有效。
@Documented: 该注解用于描述其它类型的annotation应该被作为被标注的程序成员的公共API,因此可以被javadoc此类的工具文档化。Documented是一个标记注解,没有成员
@Inherited: 该注解是一个标记注解,@Inherited阐述了某个被标注的类型是被继承的。如果一个使用了@Inherited修饰的annotation类型被用于一个class,则这个annotation将被用于该class的子类
注解:
⑥ java基础语法
q1:java如何跳出当前的多重嵌套循环?
在最外层循环前加一个标记如A,然后用break A,可以填出多重循环;
注:实际上这种方式不怎么用,实际效果不好;
q2:&和&&的区别
&(逻辑与):会计算&两边的表达式,只有都是true时,整体才会返回true;
&&(短路与):如果&&左边的表达式为false,右边的表达式就会直接短路掉,不会进行运算,返回false;
案例:例如在验证用户登录时判定用户名既不是null也不是空字符串,应当写为:username != null && username.equals(""),二者顺序不能交换,更不能用&运算符,
因为第一个条件如果不成立,根本不能进行字符串的equals比较,否则会出现NullPointerException异常。
⑦ java8 新特性 (待补充)
⑧ 数组和集合的联系
问题:数组(Array)和列表(ArrayList)的区别?什么时候该使用Array而不是ArrayList?
区别:
1 Array可以包含基本数据类型和对象类型,ArrayList只能包含对象类型;
2 Array大小是固定的,ArrayList大小是动态变化的;
3 ArrayList提供了更多的方法和特性,比如:addAll(),removeAll(),iterator()等等;
Array使用情形:
对于基本数据类型,集合使用自动装箱来减少编码工作量。但是,当处理固定大小的基本数据类型的时候,这种方式相对较慢。