蚂蚁金服-资深工程师-20191025

蚂蚁Java一面
1. 二叉搜索树和平衡二叉树有什么关系,强平衡二叉树(AVL树)和弱平衡二叉树(红黑树)有什么区别
二叉搜索树:也称二叉查找树,或二叉排序树。定义也比较简单,要么是一颗空树,要么就是具有如下性质的二叉树:
(1)若任意节点的左子树不空,则左子树上所有结点的值均小于它的根结点的值;
(2)若任意节点的右子树不空,则右子树上所有结点的值均大于它的根结点的值;
(3)任意节点的左、右子树也分别为二叉查找树;
(4)没有键值相等的节点。
平衡二叉树:在二叉搜索树的基础上多了两个重要的特点
(1)左右两子树的高度差的绝对值不能超过1;
(2)左右两子树也是一颗平衡二叉树。
红黑书:红黑树是在普通二叉树上,对每个节点添加一个颜色属性形成的,需要同时满足一下五条性质
(1)节点是红色或者是黑色;
(2)根节点是黑色;
(3)每个叶节点(NIL或空节点)是黑色;
(4)每个红色节点的两个子节点都是黑色的(也就是说不存在两个连续的红色节点);
(5)从任一节点到其没个叶节点的所有路径都包含相同数目的黑色节点。
区别:AVL树需要保持平衡,但它的旋转太耗时,而红黑树就是一个没有AVL树那样平衡,因此插入、删除效率会高于AVL树,而AVL树的查找效率显然高于红黑树。
参考文章1:https://blog.csdn.net/qq_25940921/article/details/82183093
参考文章2:https://blog.csdn.net/yang_yulei/article/details/26066409
2.  B树和B+树的区别,为什么MySQL要使用B+树
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树却需要重复地中序遍历
参考文章:https://www.cnblogs.com/xueqiuqiu/articles/8779029.html
3.  HashMap如何解决Hash冲突
通过引入单向链表来解决Hash冲突。当出现Hash冲突时,比较新老key值是否相等,如果相等,新值覆盖旧值。如果不相等,新值会存入新的Node结点,指向老节点,形成链式结构,即链表。
当Hash冲突发生频繁的时候,会导致链表长度过长,以致检索效率低,所以JDK1.8之后引入了红黑树,当链表长度大于8时,链表会转换成红黑书,以此提高查询性能。
参考文章:https://blog.csdn.net/qedgbmwyz/article/details/79908333
4.  epoll和poll的区别,及其应用场景
5.  简述线程池原理,FixedThreadPool用的阻塞队列是什么
6.  sychronized和ReentrantLock的区别
7.  sychronized的自旋锁、偏向锁、轻量级锁、重量级锁,分别介绍和联系
8.  HTTP有哪些问题,加密算法有哪些,针对不同加密方式可能产生的问题,及其HTTPS是如何保证安全传输的
蚂蚁Java二面
1.  设计模式有哪些大类,及熟悉其中哪些设计模式
2.  volatile关键字,他是如何保证可见性,有序性
3.  Java的内存结构,堆分为哪几部分,默认年龄多大进入老年代
4.  ConcurrentHashMap如何保证线程安全,并发度大小,jdk1.8有什么变化
5.  为什么concurrenthashmap底层为什么要红黑树
6.  如何做的MySQL优化
7.  讲一下oom以及遇到这种情况怎么处理的,是否使用过日志分析工具
蚂蚁Java三面
1.  项目介绍
2.  你们怎么保证Redis缓存和数据库的数据一致性?
3.  Redis缓存雪崩?击穿?穿透?
4.  你熟悉哪些消息中间件,有做过性能比较?
  5. 谈谈分布式架构设计

猜你喜欢

转载自www.cnblogs.com/damienzhong/p/11738882.html