蚂蚁金服资深工程师面试经验分享

蚂蚁Java一面

1.二叉搜索树和平衡二叉树有什么关系,强平衡二叉树(AVL树)和弱平衡二叉树

(红黑树)有什么区别

2. B树和B+树的区别,为什么MySQL要使用B+树

3. HashMap如何解决Hash冲突

通过引入单向链表来解决Hash冲突。当出现Hash冲突时,比较新老key值是否相等,

如果相等,新值覆盖旧值。如果不相等,新值会存入新的Node结点,指向老节点,形成

链式结构,即链表。

当Hash冲突发生频繁的时候,会导致链表长度过长,以致检索效率低,所以JDK1.8之

后引入了红黑树,当链表长度大于8时,链表会转换成红黑书,以此提高查询性能。

4. epoll和poll的区别,及其应用场景

select和epoll都是I/O多路复用的方式,但是select是通过不断轮询监听socket实

现,epoll是当socket有变化时通过回掉的方式主动告知用户进程实现

参考文章:https://www.cnblogs.com/hsmwlyl/p/10652503.html

5.简述线程池原理,FixedThreadPool用的阻塞队列是什么?

6. sychronized和ReentrantLock的区别

(1)ReentrantLock显示获得、释放锁,synchronized隐式获得释放锁

(2)ReentrantLock可响应中断、可轮回,synchronized是不可以响应中断的,为处理

锁的不可用性提供了更高的灵活性

(3)ReentrantLock是API级别的,synchronized是JVM级别的

(4)ReentrantLock可以实现公平锁

(5)ReentrantLock通过Condition可以绑定多个条件

7. sychronized的自旋锁、偏向锁、轻量级锁、重量级锁,分别介绍和联系

8. HTTP有哪些问题,加密算法有哪些,针对不同加密方式可能产生的问题,及其

HTTPS是如何保证安全传输的

HTTP的不足:

通信使用明文,内容可能会被窃听;

不验证通信方的身份,因此有可能遭遇伪装;

无法证明报文的完整性,有可能已遭篡改;

常用加密算法:MD5算法、DES算法、AES算法、RSA算法



蚂蚁Java二面

1.设计模式有哪些大类,及熟悉其中哪些设计模式

创建型模式、结构型模式、行为型模式

2. volatile关键字,他是如何保证可见性,有序性

3. Java的内存结构,堆分为哪几部分,默认年龄多大进入老年代

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

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

和永久代。

默认的设置下,当对象的年龄达到15岁的时候,也就是躲过15次Gc的时候,他就

会转移到老年代中去躲过15次GC之后进入老年代。

4. ConcurrentHashMap如何保证线程安全,jdk1.8有什么变化

JDK1.7:使用了分段锁机制实现ConcurrentHashMap,ConcurrentHashMap在对象中保存了一个Segment数组,即将整个Hash表划分为多个分段;

而每个Segment元素,即每个分段则类似于一个Hashtable;这样,在执行put操作时

首先根据hash算法定位到元素属于哪个Segment,然后对该

Segment加锁即可。因此,ConcurrentHashMap在多线程并发编程中可是实现多线程

put操作,不过其最大并发度受Segment的个数限制。

JDK1.8:底层采用数组+链表+红黑树的方式实现,而加锁则采用CAS和synchronized

实现

5.为什么ConcurrentHashMap底层为什么要红黑树

因为发生hash冲突的时候,会在链表上新增节点,但是链表过长的话会影响检索效

率,引入红黑书可以提高插入和查询的效率。

6.如何做的MySQL优化

MySQL的优化有多种方式,我们可以从以下几个方面入手:

存储引擎的选择、字段类型的选择、索引的选择、分区分表、主从复制、读写分离、

SQL优化。详细优化请查看参考文章

7.讲一下oom以及遇到这种情况怎么处理的,是否使用过日志分析工具



蚂蚁Java三面

1.项目介绍

2.你们怎么保证Redis缓存和数据库的数据一致性?

可以通过双删延时策略来保证他们的一致性。

3. Redis缓存雪崩?击穿?穿透?

缓存雪崩:缓存同一时间大面积的失效,所以,后面的请求都会落到数据库上,造成数

据库短时间内承受大量请求而崩掉。

缓存击穿:key对应的数据存在,但在redis中过期,此时若有大量并发请求过来,这

些请求发现缓存过期一般都会从后端DB加载数据并回设到缓存,这个时候大并发的请求

可能会瞬间把后端DB压垮。

缓存穿透:key对应的数据在数据源并不存在,每次针对此key的请求从缓存获取不

到,请求都会到数据源,从而可能压垮数据源。比如用一个不存在的用户id获取用户信

息,不论缓存还是数据库都没有,若黑客利用此漏洞进行攻击可能压垮数据库。

4.你熟悉哪些消息中间件,有做过性能比较?

差不多整个过程就是这样啦,希望对大家有所帮助吧。


#面经##蚂蚁集团##社招##Java工程师#
全部评论
阿里社招不写算法题么?
2 回复 分享
发布于 2021-08-06 16:49
怎么感觉像是校招
1 回复 分享
发布于 2022-01-30 12:34
这几年工作经验
1 回复 分享
发布于 2021-08-10 23:12
感谢楼主的分享,我也是java一年准备面试,请问楼主是几年经验
1 回复 分享
发布于 2021-08-07 00:16
**无情,全是八股文🤣l🤣
4 回复 分享
发布于 2021-08-23 10:32
老哥几年经验啊?没有问项目嘛?
点赞 回复 分享
发布于 2021-08-06 10:15

相关推荐

2025年6月13日时长20min---------------------------1.自我介绍0.问有了解过react吗1.react和vue之间的区别2.简单介绍一下vue是什么3.问响应式原理和虚拟dom的关联:我这里就简单回答了一下视图的关系。加载渲染什么的4.介绍我的简历上第一个项目&项目过程中遇到的难点5.前面说解决加载比较慢的问题,问怎么解决的--Vue Route6.Vuex在项目中的作用:题主就简单用过vuex存储一部分数据,从这里取数据。7.介绍我简历上的第二个项目&遇到哪些难点8.工作过程中,前端和数据开发的占比:因为题主说自己有负责一部分的数据库反问环节:1.前端和数据开发这一块怎么样她说我有些模糊角色定位,而且通过我的描述我的数据开发更多是后端同学做的(本来就是,因为做的都是个人/几个同学弄的项目)2.公司前端业务这一块是怎么样的好像弄什么智能体agent吧,交互式的。最后说懂数据开发其实是加分项,但是更多要配合前端业务,懂怎么埋点,基本的sql语句,还有数据可视化这一块。--------------------------总体感觉下来,面试过程很轻松,没有开视频,面试官是女的而且听声音是广东人(我也是广东的)27~32岁的感觉。但是面试过程中没有什么提示吧。(温柔就完事了要什么过程提示!)这几天忙着考试,一点八股没看,本来想着拒掉的,但舍友(阿里大佬)鼓励我多试试,增加经验。过程中就是我对项目没有熟悉掌握吧,接下来还是要继续熟练掌握,然后多背背八股。
查看12道真题和解析
点赞 评论 收藏
分享
1.自从上次实习发布之后就再没发过动态了,主要是秋招经历太难搞了,一整个人麻了,不过还是要感谢实习经历,因为有两段找实习的经历,所以才会有现在最终的互联网offer。趁着现在在动车上闲着,写点反馈牛油们!加油!2.小结就是:合理评估自己找实习或者校招成功与否的原因,自身原因占比与运气成分占比。3.之所以秋招能坚持下来是因为第一段实习的经历,当时由于没有一个合理的判断加上没有坚定自己的想法导致没有去到互联网实习,这也给后续互联网之路埋下了一个很大的隐患。从有机会打牌到进入互联网需要好运相伴。4.从秋招到春招,首先第一个一定不要不想投,该投的都要投,不管是国企还是互联网,有时间都去面试,这不仅可以积累很多经验(虽然三五次面试之后,这些经验的作用就不一定大了,但是可以让你保持手感口感hh)。其次就是,有句话说得好,有心摘花花不开,无心插柳柳成荫。这在秋招阶段是很常见的,但是需要你猛猛投简历,这句话在我身边很多同学上都应验了,而且都是去的很好的单位。5.国企面试,对于国企面试来说,第一第二次的体验很重要,因为我们去面体制内的劣势在于不熟悉面试流程,刚开始嘴笨放不开,所以第一次第二次就是给你体验的,最好是那些你不想去的国企用来练兵升级。我第一次就去的一个省级挺不错的国企的,由于第一次毫无疑问挂了。如果是后续让我面,我有信心可以过的。因为后续的国企,只要是不是招聘个位数的,我都表现的游刃有余了,只不过时间太晚了,醒的太晚了呜呜呜。6.互联网岗位投递,互联网面试真的需要天时地利人和。这个岗位有hc,这个岗位目前还没有待定的候选人,你刚好遇上这个岗位并且处于流程初阶段。大多数情况下,很多人面到三面挂,并不是因为你实力不行,只不过你的流程比别人晚了一些,这个岗位已经有候选人了。所以到你这只能是流程结束了。7.互联网面试,面试主要就是手撕,八股,实习和项目。如果你的实习经历比较丰富或者面试官比较感兴趣,基本上就是手撕加实习项目,最多加一些八股随意问问。在这里面,需要的就是每天刷刷题保持手感是很重要的,我就是断断续续,导致有时候手撕忘记了所以没及时接收面试导致第六点的失败。然后就是实习或者项目,亮点很重要,超级重要,你和别人的区别就是这个亮点的区别。最后,加油,祝好!希望每一个努力的人都能找到自己心仪的工作。找工作不难,难的是自己的心态控制,塞翁失马,焉知非福。后续也许有时间再慢慢更新具体的面试吧·
点赞 评论 收藏
分享
评论
8
212
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务