2021年5月20日Java实习第一次面试记录
面试流程:过去之后,先做了一套笔试题,然后就被工作室老大问问题了。
笔试内容:一共有9道笔试题,好像是6道简答题,1道手写编程题,2两道程序题(就问最后输出了什么结果)
笔试的题目大概是(答案来源于网络):
- ArrayList、LinkedList、Vector的区别和实现原理
1.存储结构:ArrayList和Vector是按照顺序将元素存储(从下表为0开始),删除元素时,删除操作完成后,需要使部分元素移位,默认的初始容量都是10。ArrayList和Vector是基于数组实现的,LinkedList是基于双向链表实现的(含有头结点)。
2.线程安全:ArrayList不具有有线程安全性,在单线程的环境中,LinkedList也是线程不安全的,Vector实现线程安全的但是Vector的效率没有ArraykList和LinkedList高。
3.扩容机制:ArrayList扩容后的容量是之前的1.5倍,然后把之前的数据拷贝到新建的数组中去。而Vector默认情况下扩容后的容量是之前的2倍。
4.增删改查的效率:如果只是查找特定位置的元素或只在集合的末端增加移动元素,那么使用ArrayList或Vector都是一样的。如果是在指定位置的插入、删除元素,最好选择LinkedList。 - hashmap和hashtable的区别
- 接口是否可继承接口? 抽象类是否可实现(implements)接口? 抽象类是否可继承实体类(concrete class)?
Java语法中,接口可以继承接口,抽象类可以实现接口,抽象类可以继承实体类。
接口可以多继承接口,例如:Interface1 Extends Interface2, Interface3, Interface4……
抽象类实现接口时,可以完全重写或覆盖接口中的方法,也可只重写接口中的部分方法。
抽象类可以继承实体类,但前提是实体类必须有明确的构造函数。 - 接⼝和抽象类有什么区别?
1.实现:抽象类的⼦类使⽤ extends 来继承;接⼝必须使⽤ implements 来实现接⼝。
2.构造函数:抽象类可以有构造函数;接⼝不能有。
3.实现数量:类可以实现很多个接⼝;但是只能继承⼀个抽象类。
4.访问修饰符:接⼝中的⽅法默认使⽤ public 修饰;抽象类中的⽅法可以是任意访问修饰符。 - 请使用内部类实现线程设计4个线程,其中两个线程每次对j增加1,另外两个线程对j每次减少1。
public class ThreadTest1{
private int j;
public static void main(String args[]