java面试题基础收录了基本上被问到的基础题和大致感觉会问的题目,收集了java语法,java常识方面的问题,带有*号的可以忽略
(一)
1.反射是什么?
在运行时动态获得对象或者类的相关信息的技术叫反射
2.*序列化是什么
把对象转化为字节流的过程,通过实现Serializable接口
3.*注解是什么
元数据,标注在代码上的数据
4.*断言是什么?
判断一个条件,判断对了通过,不对抛异常。基本用于软件调试
5.*自动拆箱和装箱是什么
包装类与基本数据类型的自动转换
6.什么是泛型
类型参数化,编译时擦除泛型
7.重写和重载的区别
重写指和父类相同的方法(返回值除外),重载指名称相同参数不同的方法
(二)
1.*jdk和jre和jvm的区别
jdk是java开发工具集,jre是java运行环境,jvm是java虚拟机(用来运行java程序和执行字节码)。jdk包含jre包含jvm
2.抽象类是什么,接口又是什么(或者具有什么特征)
抽象类是特殊的类,是对类的抽象的模板。接口是对类的行为的抽象。抽象类方法可以有实现,子类只能继承且必须实现抽象方法,带抽象关键字的类必须是抽象类。接口方法不能有实现(defult关键字除外),子类只能实现且必须实现所有方法
3.*值传递和引用传递
这个传递是发生在方法传递参数时发生的。基础变量时,拷贝了这个变量的值进行传递,如果改变这个值则变量不会随着改变。传递对象时,传递的是这个对象的引用,对引用进行操作,则对象随着改变(操作对象的属性等)
4.==和equals()方法说一下
==当是两个基础类型变量进行比较时,比较的是值是否相等,对象时,比较的是对象地址是否相等。equals是对象的一个方法。默认与==相同,比较的是对象内存地址是否相等。但在string、Integer时,重写了equals方法,默认比较值是否相等
5.final关键字说下
类上是不可继承的不可变类,方法上是不可重写,变量上是值或者引用不可变6.
6.异常和错误的区别,说下几个常见的异常
异常是约定俗成的关于程序设计和运行发生问题的一般处理方式,异常分为受检查异常和运行时异常。错误是指系统级的问题,一般发生在环境、jvm等
OutofIndexException数组下标越界、RuntimeException运行时异常
7.*深克隆和浅克隆
前者指拷贝对象时包括对象所有属性都拷贝,后者指只拷贝对象引用
8.说一下Integer的缓存(为什么Integer在-127-128之间比较时会相等)
缓存在-127-128之间,可以通过jvm参数设置
9.如何实现对象的克隆
对象实现Cloneable,重写object中的clone方法或序列化或者使用工具类如BeanUtil等
10.catch中写exit(0),finally会执行吗?catch中写return,finally会执行吗
前者不会,因为程序已经关闭了。后者会,程序只要还在执行就会执行finally
11.try和catch必须写在一起吗
不是,try可以跟finally,不用写catch即可
12.switch可以使用String作为判断吗
可以,在jdk1.6以后
13.jdk1.7有哪些新特性
可以直接表示二进制常量,可以try-with-resources自动关闭资源,可以只写一个catch,异常以“|”分隔,同时捕捉多个异常
14.jdk1.7中关闭流有哪几种方式
一是直接在finally中关闭,二是把流创建对象语句写在try上(条件语句),例如try(创建流语句),原因是流实现了AutoCloseable接口
String
1.string常用的方法和作用
substring截取字符串、split分隔字符串、(start)endwith是否以什么为结尾、length返回字符数(长度)、indexof判断字符串在哪个下标、trim去除首尾空格
2.string为什么是不可变类(可以继承String吗?)
因为:1.是final修饰的2.常量池中方便缓存
3.String s = new String(“xyz”)创建了几个对象
如果字符串常量池中有“xyz”,1个。在堆中创建一个对象,持有对“xyz”的引用
如果没有,2个,常量池需再创建一个
4.String、StringBuffer、StringBuilder作用和区别
第一个是不可变字符串,后两个是可变的。第二个是线程安全的,因为全部方法加了同步关键字
5.
其他问题:
1.如何读取一个Excel文件,说一下你做过的
第一种是poi,一次读取全部进内存进行解析。创建HSSFWORKBOOK对象
2.如果使用poi,如何处理日期格式乱码的问题(前提你说了你用过)
3.如何读取xml文件,这几种方式有什么区别
IO/反射/
待完善