java面试题

本文详细总结了Java面试中常见的知识点,包括HashMap与Hashtable的区别、String与StringBuilder的对比、抽象类与接口的区别、异常处理、多线程、反射机制、集合类特性、数据库操作、JVM内存管理、类加载、线程池核心参数、数据库索引等,是Java开发者面试复习的重要参考资料。
摘要由CSDN通过智能技术生成

1:hashmap,hashtable的区别

1.继承不同,HashMap继承自AbstractMap,Hashtable继承自Dictionary

2.HashMap是线程不安全的,Hashtable是线程安全的

3.HashMap键key和值value都可以为null,但是key只能有一个为null,value可以有多个为null,Hashtable键key和值value都不能为null

4.哈希值的使用不同,Hashtable直接使用对象的hashcode值,而HashMap重新计算hash值

5.Hashtable、HashMap都使用了 Iterator进行遍历。而由于历史原因,Hashtable还使用了Enumeration的方式

6.HashMap的初始数组长度是16,扩容方式是2n,Hashtable的初始长度是11,扩容方式是2n+1

2:String,StringBuffer,Stringbuilder的区别

1.String是不可变的,对String的任何改变都会返回一个新的对象

2.StringBuffer是可变的,对StringBuffer中内容的修改都是当前这个对象

3.String创建的字符串是在字符串常量池中的,创建的字符串初始换一次,对字符串的任何改变都会产生一个新的字符串地址

4.StringBuffer是在堆中创建对象,对字符串改变不会产生新的字符串地址

5.StringBuffer是线程安全的,StringBuilder是线程不安全的,不考虑并发问题的情况下使用StringBudiler

3:抽象类和接口的区别

1.抽象类继承自Object类,而接口不是

2.抽象类有构造器,而接口没有

3.抽象类中可以有普通成员变量和常量,而接口中只能有常量,而且修饰符只能是public static final,不写默认

4.抽象类中可以有抽象方法,也可以有普通方法,接口中只能有抽象方法,而且修饰符只能是public abstract,不写默认,jdk1.8以后有static和default方法,jdk1.9以后可以有private方法

5.抽象类中可以有final方法(非抽象),接口中不能有final方法

6.抽象类只能是单继承多实现,接口可以多继承其他接口,但不能实现其他接口,也不能继承其他类

4:final,finally,finalize关键字的用法

1.final修饰类,方法,属性,修饰类不能被继承,修饰方法不能被重写,修饰属性值不能被修改

2.finally是异常处理结构的一部分,表示总是执行

3.finalize是Object类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法,可以覆盖此方法提供垃圾收集的其他资源回收,但JVM不保证此方法总被调用

5:什么是封装、继承、多态

1.封装是把数据和过程包围起来,对数据的访问只能通过已定义的界面

2.继承是子类拥有父类一切非私有的属性方法

3.多态是同一种事物的不同种表现形式

6:jvm为什么能跨平台

java程序编译后生成.class字节码文件,不是能被硬件系统直接执行的代码,不同的硬件平台上安装有不同的java虚拟机JVM,由JVM来把字节码文件翻译成对应平台所能够执行的代码

7:作用域public,private,protected,以及不写时的区别?

1.public所有类都可以进行访问

2.protected只有当前类,同包类,子类可以进行访问

3.default(不写)只有当前类和同包类可以进行访问

4.private只有当前类可以进行访问

8:ArrayList和LinkedList的区别

1.ArrayList底层是数组,查找快,增删慢

2.LinkList底层是双向链表,查找慢,增删快

9:==和equals的区别

1.==比较的是两个变量值和地址是否都相等,如果要比较两个基本数据类型用==

2.equals如果没有重写,和==意义一样,如果重写了按照重写的规则进行比较

3.重写了equals必须重写hashcode方法,否则可能出现同一个对象存储了两次

10:HashMap的底层数据结构,加载因子,初始容量,put过程

1.HashMap底层数据结构是数组+链表+红黑树(jdk1.8以后)

2.加载因子是0.75

3.初始容量是16

4.put过程

(1)首先确认数据存储在HashMap中数组的位置

计算key的hash值,然后用key的hash值与数组长度-1按位与得到在数组中的存储位置

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值