最新蚂蚁Java岗面经:HashMap+多线程+缓存+中间件(含答案解析)

蚂蚁一面

  1. 二叉搜索树和平衡二叉树有什么关系,强平衡二叉树(AVL 树)和弱平衡二叉树(红黑树)有什么区别?
  2. B树和B+树的区别,为什么MySQL要使用B+树?
  3. HashMap 如何解决 Hash 冲突?
  4. epoll 和 poll 的区别,及其应用场景
  5. 简述线程池原理,FixedThreadPool 用的阻塞队列是什么?
  6. sychronized 和 ReentrantLock 的区别
  7. sychronized 的自旋锁、偏向锁、轻量级锁、重量级锁,分别介绍和联系
  8. HTTP 有哪些问题,加密算法有哪些,针对不同加密方式可能产生的问题,及其 HTTPS 是如何保证安全传输的?
    image.png

答案解析:****(为了不累积文章篇幅,保证文章的可读性,文中仅列出部分答案,需要的朋友,可以直接点此处链接https://docs.qq.com/doc/DS0ljdVdNYm1CWWN3获取。

1、二叉搜索树:也称二叉查找树,或二叉排序树。定义也比较简单,要么是一颗空树,要么就是具有如下性质的二叉树:

(1)若任意节点的左子树不空,则左子树上所有结点的值均小于它的根结点的值;

(2)若任意节点的右子树不空,则右子树上所有结点的值均大于它的根结点的值;

(3)任意节点的左、右子树也分别为二叉查找树;

(4)没有键值相等的节点。

平衡二叉树:在二叉搜索树的基础上多了两个重要的特点

(1)左右两子树的高度差的绝对值不能超过 1;

(2)左右两子树也是一颗平衡二叉树。

红黑树:红黑树是在普通二叉树上,对每个节点添加一个颜色属性形成的,需要同时满足以下五条性质 :

(1)节点是红色或者是黑色;

(2)根节点是黑色;

(3)每个叶节点(NIL 或空节点)是黑色;

(4)每个红色节点的两个子节点都是黑色的(也就是说不存在两个连续的红色节 点);

(5)从任一节点到其每个叶节点的所有路径都包含相同数目的黑色节点。

区别:AVL 树需要保持平衡,但它的旋转太耗时,而红黑树就是一个没有 AVL 树那样平衡,因此插入、删除效率会高于 AVL 树,而 AVL 树的查找效率显然高于红黑树。

2、B树:

(1)关键字集合分布在整棵树中;

(2)任何一个关键字出现且只出现在一个节点中;

(3)搜索有可能在非叶子结点结束;

(4)其搜索性能等价于在关键字全集内做一次二分查找;

B+树:

(1)有 n 棵子树的非叶子结点中含有 n 个关键字(b 树是 n-1 个),这些关键字不保存数据,只用来索引,所有数据都保存在叶子节点(b 树是每个关键字都保存数据);

(2)所有的叶子结点中包含了全部关键字的信息,及指向含这些关键字记录的指针, 且叶子结点本身依关键字的大小自小而大顺序链接;

(3)所有的非叶子结点可以看成是索引部分,结点中仅含其子树中的最大(或最小) 关键字;

(4)通常在 b+树上有两个头指针,一个指向根结点,一个指向关键字最小的叶子结 点;

(5)同一个数字会在不同节点中重复出现,根节点的最大元素就是 b+树的最大元 素。

B+树相比于 B 树的查询优势:

(1)B+树的中间节点不保存数据,所以磁盘页能容纳更多节点元素,更“矮胖”;

(2)B+树查询必须查找到叶子节点,B 树只要匹配到即可不用管元素位置,因此 B+ 树查找更稳定(并不慢);

(3)对于范围查找来说,B+树只需遍历叶子节点链表即可,B 树却需要重复地中序遍历。

3、通过引入单向链表来解决 Hash 冲突。当出现 Hash 冲突时,比较新老 key 值是否相等,如果相等,新值覆盖旧值。如果不相等,新值会存入新的 Node 结点,指向老节点,形成 链式结构,即链表。

当 Hash 冲突发生频繁的时候,会导致链表长度过长,以致检索效率低,所以 JDK1.8 之后引入了红黑树,当链表长度大于 8 时,链表会转换成红黑书,以此提高查询性能。

蚂蚁二面!

  1. 设计模式有哪些大类,及熟悉其中哪些设计模式?
  2. volatile 关键字,它是如何保证可见性,有序性?
  3. Java 的内存结构、堆分为哪几部分,默认年龄多大进入老年代?
  4. ConcurrentHashMap 如何保证线程安全,jdk1.8 有什么变化?
  5. 为什么 ConcurrentHashMap 底层为什么要红黑树?
  6. 如何做的 MySQL 优化?
  7. 讲一下 oom 以及遇到这种情况怎么处理的,是否使用过日志分析工具?

答案解析:

2、volatile 可以保证线程可见性且提供了一定的有序性,但是无法保证原子性。在 JVM 底层volatile 是采用“内存屏障”来实现的。

观察加入 volatile 关键字和没有加入 volatile 关键字时所生成的汇编代码发现,加入 volatile 关键字时,会多出一个 lock 前缀指令。

lock 前缀指令实际上相当于一个内存屏障(也称内存栅栏),内存屏障会提供 3 个功能:

I. 它确保指令重排序时不会把其后面的指令排到内存屏障之前的位置,也不会把前面的指令排到内 存屏障的后面;即在执行到内存屏障这句指令时,在它前面的操作已经全部完成;

II. 它会强制将对缓存的修改操作立即写入主存;

III. 如果是写操作,它会导致其他 CPU 中对应的缓存行无效。

3、Java 的内存结构:程序计数器、虚拟机栈、本地方法栈、堆、方法区。

Java 虚拟机根据对象存活的周期不同,把堆内存划分为几块,一般分为新生代、老年代 和永久代。

默认的设置下,当对象的年龄达到 15 岁的时候,也就是躲过 15 次 GC 的时候,他就会转移到老年代中去,既躲过 15 次 GC 之后进入老年代。

蚂蚁三面

  1. 项目介绍
  2. 你们怎么保证 Redis 缓存和数据库的数据一致性?
  3. Redis 缓存雪崩?击穿?穿透?
  4. 你熟悉哪些消息中间件,有做过性能比较?

总结

前几天,蚂蚁金服成功上市,曾经在阿里埋头996的程序员终于恰到“福报”了。

看了以上的面试问题,你能答出来多少?进阿里是否真的有想象中的那么难?

最新蚂蚁Java岗面经:HashMap+多线程+缓存+中间件(含答案解析)
最新蚂蚁Java岗面经:HashMap+多线程+缓存+中间件(含答案解析)
最新蚂蚁Java岗面经:HashMap+多线程+缓存+中间件(含答案解析)

我这里已经整理好了完整答案,还有许多大厂面试真题、技术分类面试题,供大家冲刺刷题用。需要的朋友,可以点此处链接https://docs.qq.com/doc/DS0ljdVdNYm1CWWN3领取。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,869评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,716评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 166,223评论 0 357
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,047评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,089评论 6 395
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,839评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,516评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,410评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,920评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,052评论 3 340
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,179评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,868评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,522评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,070评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,186评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,487评论 3 375
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,162评论 2 356