java基础知识点题库_Java基础知识点+高频面试题

前言:

Java的基础知识点有很多,我把面试中高频面试点列出来和大家一起探讨,如果有什么不对的地方也请您指正,如果觉得不错请您帮忙分享和订阅,您的一份订阅是作者最大的动力,感谢!

1:常用的集合有哪些,谈谈你对他们的理解?

Collection接口:单列接口,有两个子接口;

List接口有三个实现类:

LinkedList:基于链表实现,每个元素存储本身内存地址之外还存储下一个元 素的地址,链表增删快,查找慢;

ArrayList:基于数组;每次增删都要创建新的数组,但是数组有索引,数组增删慢,查找快;

Vector:基于数组,线程安全,效率低;

Set接口有两个实现类:

HashSet:存储的元素无序,不可重复,底层是哈希表;

LinkedHashSet:存储的元素有序,不可重复,底层是Hash表和链表的结合;

Map接口:双列接口,有三个实现(HashMap,HashTable,TreeMap);

hashMap:非线程安全,高效,支持null;

LinkedHashMap:是HashMap的一个子类,保存了记录的插入顺序;

HashTable:线程安全,低效,不支持null;

TreeMap:能够把它保存的记录根据键进行排序,默认的是键值的升序排序;

2:线程和进程的区别?

进程:具有一定独立功能的程序关于某个数据集合上的一次运行活动,是操作系统进行资源分配和调度的一个独立单位;

线程:是进程的一个实体,是CPU调度和分派的基本单位,是比进程更小的可以独立运行的基本单位;

特点:线程的划分尺度小于进程,这使多线程的程序拥有高并发性;

3:启动一个线程是调用run()还是start()方法?

启动一个线程是调用start()的方法,使线程所代表的虚拟处理机处于一个可运行状态,这意味着它可以由JVM进行调度并执行,这并不意味着线程就会立即运行;

4:编写多线程程序的几种实现方法(换个问法:创建多线程的方法)?

1)通过继承Thread类;

2) 通过实现Runnable接口(建议使用这个方法,因为java中是单继承,一个类只有一个父类,若继承了Tread类,就无法再继承其他的类了,显然实现Runnable接口更加的灵活)

3)通过实现Callable接口

5:解决多线程安全问题的几种方式?

1)同步代码块:

在代码块上加上synchronized,例如:

注意:同步代码块中的锁对象可以是任意的对象;但多个线程时,要使用同一个 锁对象才能保证线程安全

2)同步方法:

在方法声明上加上synchronized,例如:

注意:同步方法中的锁对象是this,静态同步方法在方法的声明上加上static synchronized.静态同步方法的锁对象是类名.class

3)同步锁:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值