蚂蚁4轮面经(Java研发):悲观锁+G1收集器+幻读+连接池+
2020-07-29 本文已影响0人
路人甲java
image.png
一面
- 线程池有哪些参数?分别有什么用?如果任务数超过的核心线程数,会发生什么?阻塞队列大小是多少?
- 数据库连接池介绍下,底层实现说下
- hashset底层实现,hashmap的put操作过程
- 说说HaspMap底层原理?再说说它跟HaspTable和ConcurrentHashMap他们之间的相同点和不同点?
- 说说B+树和B树的区别,优缺点等?
- 算法题,对一个链表进行归并排序,链表可能有环
- 怎么实现一个线程安全的计数器?
- 原子类AtomicInteger实现原理是什么?和你设计的计数器优劣比较?CAS怎么实现原子操作的?
- Java中的锁有什么?synchronized与Lock的区别?公平锁和非公平底层怎么实现的?AQS原理详细介绍一下?
- 你在项目中一般怎么调优JVM的呢?
- 说一下GC吧,什么时候进行Full GC呢?
- 你了解哪些收集器?CMS和G1。详细谈谈G1的优点
二面
- 了解哪些排序算法,讲讲复杂度
- 手撕归并排序
- Redis有哪些数据结构?底层的编码有哪些?有序链表采用了哪些不同的编码?
- redis的hash数据结构最多能存储多少个元素
- 自己如何实现RPC?
- mysql默认存储引擎?MyISAM、InnoDB、MEMORY的区别
- 什么是幻读,如何解决
- 事务隔离级别有什么?通过什么来实现的?分别解决了什么问题?
- 乐观锁与悲观锁的使用场景
三面
- 介绍对你技术能力帮助最大的项目,重点讲架构设计思路
- 分布式全局唯一ID怎样来实现?
- dubbo的生产者如何发布服务,注册服务,消费者如何调用服务?
- dubbo负载均衡的策略有哪些?一致性哈希详细聊一下?
- 分布式session如何实现的
- 微服务你的理解?以及常用的微服务方案dubbo、spring cloud的比较?
- Kafka怎么保证数据可靠性?
- 数据库主从同步数据一致性如何解决?技术方案的优劣势比较?
- 分布式锁的实现方式你知道有哪些?主流的解决方案是什么?
HR面
常规问题为主
- 聊人生的经历
- 聊印象深刻的人生的经历
- 说下技术方面或者生活方面你做得比较好的一个点和不足的一个点吧?
- 职业规划
以上就是蚂蚁技术三面和HR面试题目,以下最新总结的最全2018阿里集团高级Java必考题范围和答案,范围包含最全MySQL、Spring、Redis、JVM等最全面试题和答案,仅用于参考~
注意:下文主要是我个人的总结方法经验(面试学习和刷题笔记),都整理有PDF完整版,有需要的可以点击这里免费分享给你。
01 梳理知识体系,学会查漏补缺
2年5个月13天,从外包到拿下阿里offer,没想到屌丝也能有今天关于知识体系的梳理,我个人主要分为以下5个部分,有针对性的,将这5个部分逐步击破,那么搞定面试是基本没什么问题了。
- 并发编程:多线程,高并发,CAS,锁,容器,线程池底层
- 性能调优:Mysql,IO及网络调优,算法调优,JVM
- Spring全家桶:Spring,SpringMVC,MyBatis,IOC,AOP
- 缓存数据库:Redis,mongoDB,MySQL
- 分布式&微服务:SpringBoot,SpringCloud,docker,maven
02 根据要点,逐个击破(根据大纲内容来进行复习)
1.并发编程(核心技术笔记)
- Java多线程技能
- 对象及变量的并发访问
- 线程间通信
- Lock的使用
- 定时器Timer
- 单例模式与多线程
- 拾遇增补
2.性能调优(Java性能调优+MySQL调优+JVM调优)
2年5个月13天,从外包到拿下阿里offer,没想到屌丝也能有今天3.Spring全家桶(Spring全家桶学习脑图+SpringBoot使用笔记+源码深度解析)
- Spring学习思维脑图(Xmind)
- Spring使用笔记+实战文档
4.缓存数据库(MySQL+Redis+mongoDB)
2年5个月13天,从外包到拿下阿里offer,没想到屌丝也能有今天03 最后看面试题来举一反三(刷题刷题刷题,重要事情说三遍)
关于面试刷题也是有方法可言的,建议最好是按照专题来进行,然后由基础到高级,由浅入深来,效果会更好。当然,这些内容我也全部整理在一份pdf文档内,分成了以下几大专题:
- Java基础部分
- 算法与编程
- 数据库部分
- 流行的框架与新技术(Spring+SpringCloud+SpringCloudAlibaba)
这份面试文档当然不止这些内容,实际上像JVM、设计模式、ZK、MQ、数据结构等其他部分的面试内容均有涉及,因为文章篇幅,就不全部在这里阐述了,需要的可以“点击这里”免费下载完整版。
写在文末
作为一名程序员,阶段性的学习是必不可少的,而且需要保持一定的持续性,这次在这个阶段内,我对一些重点的知识点进行了系统的复习,一方面巩固了自己的基础,另一方面也提升了自己的知识广度和深度。
最后提醒一下哦,如果你想要学习,却无奈于没有干货学习资料,以上所有的资料内容都可以免费分享给你,只需你多多支持一下即可
——“关注我,然后点击这里获取免费下载方式”。