一、背景
本人2018届本科计算机毕业,前面2家待的都是小公司(对于找工作来说可以说是十分不利的),技术水平一般,历经一个月大概面了大概10家公司,其中大中小厂都有(包含蚂蚁、阿里新零售和字节。PS:无奈水平不济深度和算法都太薄弱都挂了)。最终去了个中厂公司,在此记录下面试中碰到的知识点,以便后续复习总结使用,并分享给还在面试中有需要的小伙伴参考。
二、面试
JAVA基础相关
- 重写和重载的区别?重写的话返回值可以变吗?
- 什么时候需要重写hashCode和equals方法?如果不重写的话hashCode和equals比较的是什么值呢?hashCode一样equals一定一样吗?反过来呢?(频繁)
- java8新特性有哪些了解吗?lambda原理是什么?那你知道steam流的工作机制吗?
- 抽象类和接口的关系和区别,以及你在时间开发过程中是怎么使用到的?
- 基本数据类型转换为String时你有几种方法,分别是什么?
集合相关
- java里的集合有哪些?
- arrayList和LinkedList的内部数据结构了解吗?两则之间的区别和使用场景能说下吗?arrayList扩容流程说下?(频繁)
- 你说arrayList用get方法查找时间复杂度是O(1),能说下为什么吗?
- hashMap有了解吗?底层采用什么数据结构?1.8做了哪些优化?能说下调用put方法的大致流程吗?计算哈希时为什么要用key进行高16位异或运算?为什么说hashMap的容量总是2的倍数呢?什么时候节点会转化成红黑树?(频繁)
- linkedHashMap和hashMap有什么区别?链表的特点是什么?linkedHashMap里的元素能保证是有序的吗?(频繁)
- ConcurrentHashMap有使用过吗?能说下1.8的时候他执行put方法的流程吗?什么时候进行锁优化呢?(频繁)
- hashSet和TreeSet有了解过吗?彼此的底层数据结构是怎样的?他是怎么判断去重的呢?(频繁)
并发相关
- 线程池有使用过吗?