姚宁的博客

2017阿里、京东、美团、滴滴Java面试题+参考答案整理

阿里巴巴面试

1. 开发中Java用了比较多的数据结构有哪些?

从java.util包展开讲
菜鸟手册

2. 谈谈你对HashMap的理解,底层原理的基本实现,HashMap怎么解决碰撞问题的?这些数据结构中是线程安全的吗?假如你回答HashMap是线程安全的,接着问你有没有线程安全的map,接下来问了conurren包。

HashMap不是线程安全的、满足线程安全的话
可以使用Collections的synchronizedMap方法使HashMap具有线程安全的能力或者使用ConcurrentHashMap

Java 8系列之重新认识HashMap

3. 对JVM熟不熟悉?简单说说类加载过程,里面执行的哪些操作?问了GC和内存管理,平时在tomect里面有没有进行过相关的配置

Java虚拟机(JVM)知乎话题 类的加载过程
比较经典的解释
GC和内存管理 这里有一个系列
tomcat开启GC日志采集

4. 然后问了http协议,get和post的基本区别,接着tcp/ip协议,三次握手,窗口滑动机制。

从网络分层的角度看 ip协议属于网络层 tcp/udp属于传输层

get/post
tcp/ip协议知乎话题
三次握手
滑动窗口

5. 开发中用了那些数据库?回答mysql,储存引擎有哪些?然后问了我悲观锁和乐观锁问题使用场景、分布式集群实现的原理。

mysql知乎话题 存储引擎
悲观锁、乐观锁 刘欣老师的公号文章
分布式集群

6. 然后问了我springmvc和mybatis的工作原理,有没有看过底层源码?

springMVC 工作原理
mybatis(轻量级的ORM框架) github一个上对源码中文注释的项目 有点久了 但是很不错


京东金融面试

1. Dubbo超时重试;Dubbo超时时间设置

使用dubbo你所需要注意的

2. 如何保障请求执行顺序

十分钟入门RocketMQ

3. 分布式事物与分布式锁(扣款不要出现负数)

分布式锁的三种实现的对比
结合阿里巴巴面试第五题

4. 分布式session设置

spring-session+redis

5. 执行某操作,前50次成功,第51次失败 a全部回滚 b前50次提交第51次抛异常,ab场景分别如何设置Spring(传播性)

Spring事务配置及事务的传播性与隔离级别详解

6. Zookeeper有哪些用

又是刘欣老师的文章
知乎话题

7. JVM内存模型

结合阿里巴巴面试第3题

8. 数据库垂直和水平拆分

数据库垂直拆分 水平拆分

9. MyBatis如何分页;如何设置缓存;MySQL分页

PageHelper
缓存

10. 熟悉IO么?与NIO的区别,阻塞与非阻塞的区别

刘欣老师

11. 分布式session一致性

分布式系统session一致性的问题
(感觉用redis存 脱离web容器 应该就不存在一致性的问题了吧。。 当然这只是我的看法)

12、分布式接口的幂等性设计「不能重复扣款」

分布式高并发系统如何保证对外接口的幂等性?


美团面试

1.最近做的比较熟悉的项目是哪个?画一下项目技术架构图

这就考验你对之前做过项目的熟悉程度了 可以不是你架构的 但是你必须熟悉整个项目的运行逻辑
推荐个画图的工具

2. JVM老年代和新生代的比例?

VM内存:年轻代,老年代,永久代

3. YGC和FGC发生的具体场景

YGC是对新生代中的对象进行回收的操作,FGC是对老年代和永久代进行的操作 成为Java GC专家(3)—如何优化Java垃圾回收机制

4. jstack,jmap,jutil分别的意义?如何线上排查JVM的相关问题?

JVM调优监控工具
JVM调优

5. 线程池的构造类的方法的5个参数的具体意义?

ThreadPoolExecutor(int corePoolSize,int maximumPoolSize,long keepAliveTime,TimeUnit unit,
            BlockingQueue<Runnable> workQueue)
corePoolSize 线程池大小
maximumPoolSize 线程池最大线程数
keepAliveTime 表示线程没有任务执行时最多保持多久时间会终止
unit 时间单位 
workQueue 任务缓存队列及排队策略

ava并发编程 之 线程池核心ThreadPoolExecutor

6. 单机上一个线程池正在处理服务如果忽然断电该怎么办?(正在处理和阻塞队列里的请求怎么处理)?

重启后通过日志恢复?

7. 使用无界阻塞队列会出现什么问题?

Java并发编程-并发队列(ConcurrentLinkedQueue)的原理分析

8. 接口如何处理重复请求?具体处理方案是什么?

分布式高并发系统如何保证对外接口的幂等性?

9. 如何保证共享变量修改时的原子性?

Java并发总结(二):同步与原子性
感觉跟单例模式的懒汉式实现有点像 synchronized+volatile

10. 设计一个对外服务的接口实现类,在1,2,3这三个主机(对应不同IP)上实现负载均衡和顺序轮询机制(考虑并发)

负载均衡的几种算法Java实现代码


滴滴面试

1. 自我介绍,技术特点

技术人员应该发挥有信心且不毛躁的优势~

2. 兴趣是什么,优势是什么

-

3. jvm,jre以及jdk三者之间的关系?

jvm(Java Virtual Machine) Java虚拟机
jre(Java Runtime Environment) Java运行环境
jdk(Java Development Kit) Java开发工具包

4. Dubbo的底层原理,Zookeeper是什么

刘欣大大的文章
Dubbo与Zookeeper

5. cincurrentMap的机制;TreeMap;Volatil关键字

cincurrentMap 线程安全的map
TreeMap 有序key的map
Volatil关键字

6. 快速排序;广度优先搜索(队列实现)

快速排序算法

7. 缓存的雪崩以及穿透的理解?

缓存穿透,缓存击穿,缓存雪崩解决方案分析

8. HashMap的key可以重复吗?

不可以

9. synchronized和lock的区别?

深入研究 Java Synchronize 和 Lock 的区别与用法

10.开发一个大型网站你会考虑哪些问题?

从流量、稳定性、成本、服务治理这几方面谈谈自己的看法吧 仁者见仁智者见智