3 年 Java 开发经验从阿里、美团、滴滴面试回来,想和 Java 程序员谈一谈感悟及面经
最近面试了阿里、京东、美团、滴滴等大型互联网公司,最终收到了美团 offer,这次面试过后,我把面试过的公司的面试题做了一个整理。这篇文章是我凭回忆记录的,面试题没有顺序,不分先后,接下来公布我去阿里、京东、美团等一线互联网公司的面试题:
一、阿里巴巴面试
1、开发中 Java 用得比较多的数据结构有哪些?
2、谈谈你对 HashMap 的理解,底层原理的基本实现,HashMap 怎么解决碰撞问题的?
这些数据结构中是线程安全的吗?假如你回答 HashMap 是线程安全的,接着问有没有线程安全的 map,接下来问 conurren 包。
3、对 JVM 熟不熟悉?简单说说类加载过程,里面执行的哪些操作?问了 GC 和内存管理,平时在 tomect 里面有没有进行过相关的配置。
4、说一下 http 协议、get 和 post 的基本区别,接着问 tcp/ip 协议,三次握手,窗口滑动机制。
5、开发中用了哪些数据库?回答 mysql;储存引擎有哪些?然后问了我悲观锁和乐观锁问题使用场景、分布式集群实现的原理。
6、springmvc 和 mybatis 的工作原理,有没有看过底层源码?
二、京东金融面试
1、Dubbo 超时重试;Dubbo 超时时间设置
2、如何保障请求执行顺序
3、分布式事物与分布式锁(扣款不要出现负数)
4、分布式 session 设置
5、执行某操作,前 50 次成功,第 51 次失败 a 全部回滚 b 前 50 次提交第 51 次抛异常,ab 场景分别如何设置 Spring(传播性)
6、Zookeeper 有哪些用
7、JVM 内存模型
8、数据库垂直和水平拆分
9、MyBatis 如何分页;如何设置缓存;MySQL 分页。
10、熟悉 IO 么?与 NIO 的区别,阻塞与非阻塞的区别。
11、分布式 session 一致性
12、分布式接口的幂等性设计「不能重复扣款」
三、美团面试
1、最近做的比较熟悉的项目是哪个?画一下项目技术架构图。
2、JVM 老年代和新生代的比例?
3、YGC 和 FGC 发生的具体场景
4、jstack,jmap,jutil 分别的意义?如何线上排查 JVM 的相关问题?
5、线程池的构造类的方法的 5 个参数的具体意义?
6、单机上一个线程池正在处理服务如果忽然断电该怎么办?(正在处理和阻塞队列里的请求怎么处理?)
7、使用无界阻塞队列会出现什么问题?
8、接口如何处理重复请求?
9、具体处理方案是什么?
10、如何保证共享变量修改时的原子性?
11、设计一个对外服务的接口实现类,在 1,2,3 这三个主机(对应不同 IP)上实现负载均衡和顺序轮询机制(考虑并发)
四、滴滴面试
1、自我介绍;技术特点
2、兴趣是什么;优势是什么
3、jvm、jre 以及 jdk 三者之间的关系?
4、Dubbo 的底层原理,Zookeeper 是什么
5、cincurrentMap 的机制;TreeMap;Volatil 关键字
6、快速排序;广度优先搜索(队列实现)
7、缓存的雪崩以及穿透的理解?
8、HashMap 的 key 可以重复吗?
9、synchronized 和 lock 的区别?
10.开发一个大型网站你会考虑哪些问题?
以上就是全部的面试题目,针对以上知识点,结合当前互联网公司的技术需求及主流技术,我整理了一份 Java 核心知识点全解析。不少公司很重视高并发高可用的技术,特别是一线互联网公司,分布式、JVM、spring 源码分析、微服务等知识点已经是面试的必考题。这些东西可能你们平时在工作中接触过,但是并没有深入的学习过,希望这份资料对正在面试的朋友或是遭遇技术瓶颈的程序员们提供一点思路。
Java 核心知识点整理
由于整个文档内容特别多,共有 29 个 Java 核心技能全解析,所以在这里只简单介绍下大概有哪些知识点。
资料领取方式:转发+关注,然后添加 VX(tkzl6666)即可获得免费领取方式。
JVM
线程
JVM 内存区域
JVM 运行时内存
垃圾回收与算法
JAVA 四种引用类型
GC 分代收集算法 VS 分区收集算法
GC 垃圾收集器
JAVA IO/NIO
JVM 类加载机制
JAVA 集合
接口继承关系和实现
List
ArrayList(数组)
Vector(数组实现、线程同步)
LinkList(链表)
Set
HashSet(Hash 表)
TreeSet(二叉树)
JAVA 多线程并发
JAVA 并发知识库
JAVA 线程实现/创建方式
4 种线程池
线程生命周期(状态)
终止线程 4 种方式
sleep 与 wait 区别
start 与 run 区别
JAVA 后台线程
JAVA 锁
线程基本方法 4.1.11. 线程上下文切换
同步锁与死锁
线程池原理
JAVA 阻塞队列原理
CyclicBarrier、CountDownLatch、Semaphore 的用法
volatile 关键字的作用(变量可见性、禁止重排序)
如何在两个线程之间共享数据
JAVA 基础
JAVA 异常分类及处理
JAVA 反射
JAVA 注解
JAVA 内部类
JAVA 泛型
JAVA 序列化(创建可复用的 Java 对象)
JAVA 复制
Spring 原理
Spring 特点
Spring 核心组件
Spring 常用模块
Spring 主要包
Spring 常用注解
Spring 第三方结合
Spring IOC 原理
Spring APO 原理
Spring MVC 原理
Spring Boot 原理
JPA 原理
Mybatis 缓存
Tomcat 架构
微服务
服务注册发现
API 网关
配置中心
事件调度(kafka)
服务跟踪(starter-sleuth)
服务熔断(Hystrix)
Hystrix 断路器机制
API 管理
Netty 与 RPC
Netty 原理
Netty 高性能
Netty RPC 实现
关键技术
核心流程
消息编解码
通讯过程
RMI 实现方式
分布式缓存
缓存雪崩
缓存穿透
缓存预热
缓存更新
缓存降级
Zookeeper
Zookeeper 概念
Zookeeper 角色
Zookeeper 工作原理(原子广播)
Znode 有四种形式的目录节点
Kafka
Kafka 概念
Kafka 数据存储设计
partition 的数据文件(offset,MessageSize,data)
数据文件分段 segment(顺序读写、分段命令、二分查找)
数据文件索引(分段索引、稀疏存储)
生产者设计
负载均衡(partition 会均衡分布到不同 broker 上)
批量发送
压缩(GZIP 或 Snappy)
消费者设计
算法
一致性算法
Java 算法
数据结构
加密算法
由于整个文档内容特别多,共有 29 个 Java 核心技能全解析,所以在这里只简单介绍下大概有哪些知识点。
评论 (1 条评论)