java基础面试题及答案

final、finally与finalize的区别
final可以修饰类,方法和变量,表示该类不能被其他类继承,该方法不能被被重写,该变量不能修改(即为常量)
finally是异常处理的一部分,表示这段语句一定会被执行,经常被用作释放资源的时候使用
每个对象都有finalize这个方法,该方法在对象被收回时调用,烦是new出来的对象,gc都能回收,使用super.finalize()调用,一个对象只会被调用一次。

int和Integer有什么区别?
integer是int的包装类型,int是java的一种基本类型;integer必须被实例化后才能使用,而int不需要;integer实际是对象的引用,而int是直接存储对象值;integer默认值是null,而int默认值是0.

抽象类和接口有什么区别?
抽象类可以做方法声明也可以做方法实现,而接口只能做方法声明;抽象类可以有具体的方法和属性,而接口只能有抽象方法和不可变常量。

反射的用途和实现?
反射最重要的用途就是开发各种通用框架。
获得class对象
使用Class类的forName静态方法,例如:Class.forName(“xxxx”);
直接获取某一个类的class,例如Object.class;
调用某个对象的getClass()方法,例如:new Object().getClass();
判断是否为某个类的实例
用intanceof关键字来判断是否为某个类的实例
创建实例
使用Class对象的newInstance()方法创建Class对象对应类的实例。
先通过Class对象获取指定的构造器Constructor,再调用ConStructor对象的newInstance()方法创建实例。
获取方法
getDeclareMethods()
获取构造器信息
getConstructors()
获取类的成员变量(字段)信息
getFields();访问共有的成员变量
getDeclareFields();得到所有的字段,包括公共,保护,默认(包)和私有变量,但不包括继承的字段。
调用方法
invoke();

spring自定义注解的场景及实现?
登陆、权限拦截、日志处理
java中有四种元注解:@Retention、@Inherited、@Documented、@Target
@Retention
注解的保留位置(枚举RetentionPolicy),RetentionPolicy可选值:
SOURCE:注解仅存在于源码中,在class字节码文件中不包含
CLASS:默认的保留策略,注解在class字节码文件中存在,但运行时无法获得
RUNTIME:注解在class字节码文件中存在,在运行时可以通过反射获取到
@Inherited
声明子类可以继承此注解,如果一个类A使用此注解,则类A的子类也继承此注解
@Documented
声明注解能够被javadoc等识别
@Target
用来声明注解范围(枚举ElementType),ElementType可选值:
TYPE:接口、类、枚举、注解
FIELD:字段、枚举的常量
METHOD:方法
PARAMETER:方法参数
CONSTRUCTOR:构造函数
LOCAL_VARIABLE:局部变量
ANNOTATION_TYPE:注解
PACKAGE:包

cookie和session的区别?
cookie数据存放在客户的浏览器上,session数据放在服务器上;
session比cookie安全;
session比较占有服务器资源,考虑到性能使用cookie;
session中保存的是对象,cookie中保存的是字符串;

ArrayList和LinkedList的区别?
ArrayList是实现了基于动态数组的数据结构,LinkedList是基于链表结构。
对于随机访问的get和set方法,ArrayList要优于LinkedList,因为LinkedList要移动指针。
对于新增和删除操作add和remove,LinkedList比较占优势,因为ArrayList要移动数据。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值