写点什么

3 年 Java 开发经验从阿里、美团、滴滴面试回来,想和 Java 程序员谈一谈感悟及面经

发布于: 2020 年 11 月 20 日

最近面试了阿里、京东、美团、滴滴等大型互联网公司,最终收到了美团 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 核心技能全解析,所以在这里只简单介绍下大概有哪些知识点。


用户头像

添加我的微信:tkzl6666 获取文中资料 2020.09.19 加入

添加我的微信:tkzl6666 获取文中资料

评论 (1 条评论)

发布
用户头像
3 年 Java 开发经验从阿里、美团、滴滴面试回来,想和 Java 程序员谈一谈感悟及面经
2020 年 11 月 20 日 16:45
回复
没有更多了
3年Java开发经验从阿里、美团、滴滴面试回来,想和Java程序员谈一谈感悟及面经