阿里、腾讯、蚂蚁金服Java技术面试及经验总结(文末分享答案)
在过去很长一段时间内,国内互联网一直处于三足鼎立状态,BAT即百度、阿里巴巴、腾讯。而在最新的互联网企业价值榜上,百度却被蚂蚁金服挤出前三的位置。
能够进一线互联网公司,是大部分程序员奋斗的目标,有很多小伙伴可能因为学历望而止步,其实只要能力够,学历真的不是那么重要!
今天给大家带来ATM(阿里巴巴,腾讯,蚂蚁金服)的Java面试真题,希望能帮助各位读者在奋斗的路上少走弯路。
阿里巴巴Java岗位(技术三面)
一面
1、自我介绍,讲讲求职意向和擅长的技能
2、Tomcat的基本架构是什么?
3、JVM调优,工作中怎么用,GC算法和回收策略有哪些
4、Java中线程池是如何实现的? 创建线程池的几个核心构造参数是什么?
5、Volatile和Synchronize的区别?
6、GC的机制是什么?垃圾回收器的基本原理是还说呢么?是否可以立即回收内存?怎么样主动的通知JVM进行垃圾回收?
7、类加载器双亲委派模型机制?
8、集合的种类和区别,HashMap底层如何实现(JDK1.8有所改动),HashMap和ConcurrentHashMap的区别?
9、Spring IOC如何管理Bean之间的依赖关系,怎么样避免循环依赖?
10、SpringBean创建过程中的设计模式?
二面
1、自我介绍、
2、InnoDB支持的四种事务隔离级别名称是什么? 之间的区别是什么?
3、聊一聊事务的特性
4、什么是MySQL隔离级别?
5、如何理解BTree机制?
6、谈一谈对慢查询的分析?MySQL常用的优化方法有哪些?
7、谈一谈悲观锁和乐观锁以及SQL的实现
8、简述三次握手和四次握手的过程?
9、B+树索引和Hash索引的区别?
三面
1、自我介绍
2、MySQL的锁并发?
3、高并发场景下如何防止死锁,保证数据的一致性?
4、集群和负载均衡的算法与实现?
5、简述分库与分表设计?
6、分库分表带来的分布式困境与对应之策有哪些?
7、加锁的机制是什么?
8、Redis和Setnx命令使如何实现分布式锁的?使用Redis怎么进行异步队列?会有什么缺点?
腾讯Java岗位(技术四面)
一面
1、说说对JVM的理解?
2、treemap和HashMap的区别?
3、多线程的五大状态?
4、MySQL主键和索引的区别?
5、聊聊做的一些项目
6、如何实现session共享?用Redis该如何实现?
7、缓存击穿的概念和解决方案?
8、聊聊微服务,以及微服务之间是如何进行管理的
二面
1、Java中nio和io的区别?常用的类有哪些?
2、Java里面的同步锁了解吗? CountDownLaunch和Cylicbarrior的区别,分别在什么场景下使用?
3、JVM的内存结构,哪些是共享的,哪些是线程私有的? Java虚拟机里堆栈分别存放什么?
4、如何实现一个线程池?
5、Java的类加载在哪些情况下会触发?
6、手写代码:快速排序,单利模式, 画一个工厂模式和装饰者模式的UML类图
7、AOP的实现原理
8、怎么优化慢查询?
9、Java的锁有哪些?可重入锁和不可重入锁的区别?
10、Lock和Synchronized的区别?他们都是可重入锁吗?哪个效率更高?
11、手写SpringMVC DispatcherServlet的大致实现?
三面
1、聊一聊平时的项目并发经验
2、Redis的数据结构? 线程模型? Redis的数据淘汰机制?
3、读过Redis的源码吗?
4、MySQL实现事务的原理
5、MQ底层原理的实现?
6、数据库事务acid,事务操作,怎么加锁?分布式系统锁?
7、什么情况下会发生雪崩?如何解决?
四面
1、介绍一些并发项目
2、技术含量较高的项目,从架构设计到部署问了一遍
3、高并发架构的设计思路
蚂蚁金服Java岗位(技术三面)
一面
1、HashMap和ConcurrentHashMap
2、谈一谈Hash的一致算法
3、乐观锁和悲观锁
4、可重入锁和Synchronized
5、事务的四大特性?
6、事务的二段提交机制?
7、聚簇索引和非聚簇索引
8、举例说一下索引的应用场景和注意事项?
9、当前读和快照读
10、聊一聊类加载的过程?
11、双亲委派机制及其使用原因?
12、聊一聊GC的算法?
13、Http和Https的区别? 以及Https加密的方式
14、线程池的核心参数和基本原理?线程池的调优策略
15、谈谈个人的职业规划
二面
1、聊一聊个人做过的项目,遇到过哪些难点?
2、Collections.sort底层的排序方式?
3、排序的稳定性,以及不同场景下的排序策略
4、Http请求过程,DNS解析的过程
5、三次握手和四次握手
6、简述线程池和并发工具有哪些、
7、数据库的索引和原理
8、频繁老年代回收怎么分析和解决?
9、Spring IOC/AOP相关知识
10、讲讲SpringBoot和SpringCloud的一些应用?
11、阻塞队列不用Java提供的该怎么实现?
12、负载均衡的原理?
13、Redis的数据一致性问题,分布式多节点和单节点环境下分别描述
14、讲讲Docker容器
15、如何实现高并发环境下的削峰、限流?
三面
1、聊一聊项目中用到的中间件(Dubbo/MQ/Zookeeper/Redis/Kafka)
2、什么情况下会造成雪崩?该怎么避免这种情况
3、高并发架构的设计思路
4、聊一聊以前的项目中遇到的问题和解决策略
5、生活中遇到过哪些挫折?最后怎么解决的
6、生活中遇到的最有成就感的事情?
总结:
一线互联网公司都比较注重实际的项目中解决问题的能力,另外面试点主要围绕JVM、多线程相关、基础知识的底层原理、处理高并发的能力。
相信都是老司机,这里也不扯什么面试技巧了,轻松发挥就好。祝大家金三银四季能有个高薪满意的工作
【文末彩蛋】
本人以文档的形式总结了面试答案其中还包括了其它面试资料(初中级进阶类)
资料获取方式:转发+关注后私信【面试资料】(文档资料只供50份,先到先得)