Java基础面试题,分享一波阿里、字节、腾讯、美团等精选大厂面试题

  • 底层为数组
  • 搜索速度快,增删慢java

  • 线程安全,效率低(synchronized锁)git

  • 容量不足时,扩展一倍容量

LinkList(链表)

  • 有序,可重复程序员

  • 底层为双向链表面试

  • 搜索速度慢,增删块算法

  • 线程不安全,效率低

并发下 ArrayList 不安全如何解决?

/**

 * 解决方案;

 * 一、List<String> list = new Vector<>();

 * 二、List<String> list = Collections.synchronizedList(new ArrayList<>());

 * 三、List<String> list = new CopyOnWriteArrayList<>();

 * CopyOnWriteArrayList 使用的lock锁的机制

 */

Set

Set 注重独一无二的性质,该体系集合用于存储无序元素(存入和取出的顺序不必定相同),值不能重复。对象的相等性本质是对象 hashCode 值判断的,若是想要让两个不一样的对象视为相等的,就必须覆盖 Object 的 hashCode 方法和 equals 方法。设计模式

HashSet

  • HashSet 存储元素的顺序是无序的,是按照哈希值来存的因此取数据也是按照哈希值取得。数组

  • HashSet 首先判断两个元素的哈希值,若是哈希值同样,接着会比较 equals 方法 若是 equls 结果为 true ,HashSet 就视为同一个元素。若是 equals 为 false 就不是 同一个元素安全

  • HashSet 经过 hashCode 值来肯定元素在内存中的位置。一个 hashCode 位置上能够存放多个元素markdown

  • HashSet 容许有 null 值。数据结构

  • HashSet 不是线程安全的

    白嫖资料

TreeSet

  • 一个有序的集合,它的做用是提供有序的Set集合,支持add、remove、get等方法

  • 比较此对象与指定对象的顺序。若是该对象小于、等于或大于指定对象,则分别返回负整 数、零或正整数

  • 非线程安全的集合

LinkHashSet(HashSet+LinkedHashMap)

  • 非线程安全的集合

并发下 Set不安全如何解决?

/**

* 同理可证 : ConcurrentModificationException

* //一、Set<String> set = Collections.synchronizedSet(new HashSet<>());

* //二、Set<String> set = new CopyOnWriteArraySet<>();

*/

Map

HashMap(数组+链表+红黑树)

  • HashMap 最多只容许一条记录的键为 null,容许多条记 录的值为 null。

  • HashMap 非线程安全

  • 当链表中的元素超过了 8 个之后, 会将链表转换为红黑树,在这些位置进行查找的时候能够下降时间复杂度为 O(logN)。

HashTable(线程安全)

白嫖资料

  • 效率低使用synchronized锁住整个put方法

全部访问HashTable的线程都必须竞争同一把锁

ConcurrentHashMap(线程安全)

  • 效率较高使用synchronized分段锁

数据分红一段一段地存储,而后给每一段数据配一把锁,当一个线程占用锁访问其中一个段数据的时候,其余段的数据也能被其余线程访问。

TreeMap(可排序)

  • 实现 SortedMap 接口,可以把它保存的记录根据键排序,默认是按键值的升序排序

LinkHashMap(记录插入顺序)

HashMap的工做原理(面试问题)

什么是HashMap?你为何用到它?

HashMap能够接受null键值和值,而Hashtable则不能; HashMap是非synchronized; HashMap很快;

以及HashMap储存的是键值对

你知道HashMap的工做原理吗?

结局:总结+分享

看完美团、字节、腾讯这三家的一二三面试问题,是否是感受问的特别多,可能我们真的又得开启面试造火箭、工做拧螺丝的模式去准备下一次的面试了。

开篇有说起我但是足足背下了Java互联网工程师面试1000题,多少仍是有点用的呢,换汤不换药,无论面试官怎么问你,抓住本质便可!能读到此处的都是真爱,因此福利也为你准备,这份1000题免费送你!点击这里免费领取

  • Java互联网工程师面试1000题

image.png

并且从上面三家来看,算法与数据结构是必备不可少的呀,所以我建议你们能够去刷刷这本左程云大佬著做的 《程序员代码面试指南 IT名企算法与数据结构题目最优解》,里面近200道真实出现过的经典代码面试题。

  • 程序员代码面试指南--IT名企算法与数据结构题目最优解

image.png

  • 其他像设计模式,建议能够看看下面这4份PDF(已经整理)

image.png

  • 更多的Java面试学习笔记以下,关于面试这一块,我额外细分出Java基础-中级-高级开发的面试+解析,以及调优笔记等等等。。。

image.png

以上所说起的所有Java面试学习的PDF及笔记,如若皆是你所须要的,那么均可发送给你!

相关文章
相关标签/搜索