很多同学想去阿里等互联网公司,今天就给大家总结了一份互联网公司Java面试题,非常的全面。
文末有互联网公司Java面试题参考答案~
阿里Java面试题
阿里Java面试一面题
- Spring加载过程?
- atomic 与 volatile的区别?
- 问一个Thread.join()相关的问题?
- 问了几种内置的线程池
- MySQL事务隔离级别以及MVCC机制
- 虚拟机调优参数
- JVM垃圾回收算法
- 死锁产生的条件, 以及如何避免死锁,银行家算法,产生死锁后如何解决
- hashset和hashmap的区别
- haspmap的底层实现put操作,扩容机制
- currenthashmap1.7版本以及1.8版本的区别
- synchronized和reetrantlock锁
- AQS同步器框架:countdowmlatch,cyclebarrier,semaphore,读写锁
阿里Java面试二面题
- 有实际的JVM性能优化经验?重点应该监控哪些指标,以及如何来调整参数?
- 谈谈你对NIO、BIO、AIO的理解?
- Java线程锁有使用过哪些?比如乐观锁、悲观锁类似这样使用区别?
- RocketMQ的核心组件,以及如何解决消息去重?
- 讲讲threadlocal
- 数据库隔离级别,每层级别分别用什么方法实现,三级封锁协议,共享锁排它锁,mvcc多版本并发控制协议,间隙锁
- Spring bean的生命周期?默认创建的模式是什么?不想单例怎么办?
- MySQL和Redis的缓存如何解决数据一致性?
阿里Java三面题目
- 介绍最有挑战的项目?
- 技术难度在哪里?
- 画一下架构流程图?
- 高并发时怎么限流?
- 秒杀的设计思路?
- 数据库如果让你来垂直和水平拆分,谁先拆分?
- 拆分的原则有哪些(单表数据量多大拆)
- 最后谈谈Redis、Kafka、 Dubbo,各自的设计原理和应用场景
百度Java面试题
百度Java一面题目
- Spring Bean的生命周期?有哪些过程?
- HashMap底层实现?哈希冲突怎么解决的?
- haspmap的如何put操作?扩容机制了解?
- 什么是多路复用IO?select和epoll的差别?
- MySQL默认事务隔离级别?
- MySQL MVCC机制了解?
- concurrentHashMap和hashTable在性能上的区别?以及这种差异形成的原因?
- currenthashmap1.7版本以及1.8版本的区别?
- synchronized与reetrantlock锁的区别?
- 读写锁了解?
- 二叉搜索树、AVL树,红黑树之间的差别?
- 熟悉的设计模式有哪些?
- 死锁产生的条件?如何避免死锁?产生死锁后如何解决?
百度Java二面题目
- JVM GC:FullGC MajorGC了解?
- 有实际的JVM性能优化经验?
- Spring bean的生命周期?默认创建的模式是什么?不想单例怎么办?
- 如何来调优GC参数?
- 从ConcurrentHashMap一路问到:锁&锁优化->LongAdder->伪共享->缓存行填充->cas等诸多技术细节
- 数据库隔离级别?
- mvcc多版本并发控制协议?
- 给你50亿行字符串,机器4G内存(只能一台机器),找出重复次数最多的那行字符串?(以行为单位,每行不超过10个字符)
百度Java三面题目
- 介绍最有挑战的项目?
- 技术难度在哪里?
- 画一下架构流程图?
- 什么样的场景会出现服务器雪崩场景?
- 怎么来解决雪崩?
- Redis雪崩、穿透、击穿了解吗?
- 每秒10万高并发怎么来解决?
- 海量数据如何实现?10亿数据以上?
参考答案
已将上面这些互联网公司Java面试题及答案整理成了一份文档。
扫码发送:面试手册,即可获取面试题答案~
快速Java面试题
快手Java一面题目
- 自我介绍?
- B+索引数据结构和B树的区别?
- 在工作中遇到过哪些设计模式,是如何应用的?
- 讲一下稳定的排序算法和不稳定的排序算法?
- 聚簇索引和非聚簇索引的有什么不同?
- 线程池的底层实现?
- JVM的垃圾回收机制和垃圾收集器?
- 你是怎么去接触一门新技术的?
- Redis的持久化方式,以及项目中用的哪种?
- 微服务有哪些常用组件?之间的关系?
快手Java二面题目
- 谈谈mysql中的各种锁,乐观锁,悲观锁(排他锁,共享锁)?
- 行锁、表锁是怎么实现的?
- 数据库隔离级别?MVCC?
- MySQL慢查询如何优化?谈谈优化步骤和方法工具?
- 谈谈线程安全问题产生的原因?
- 反射中Class.forName和ClassLoader区别?
- 你觉得对你技术提升最高的是哪一件事情,提升了你哪一方面的技术?
- Dubbo的底层实现原理和机制?
- RPC的核心流程有哪些?
- 谈谈你对微服务的理解?
快手Java三面题目
- 自我介绍?
- 项目介绍?
- 每秒10万并发量你怎么来设计?
- 接口的幂等性?如何来解决?
- 技术选型,一个新技术和一个稳定的旧技术,你会怎么选择?
- Zookeeper的用途,选举的原理是什么?
- 分布式集群下如何做到唯一序列号
- 消息中间件如何保证不丢失?
抖音Java面试题
抖音Java一面
- hashmap怎么扩容?
- 容量为什么是2的幂次?
- hashmap怎么处理数据冲突?怎么高效率的实现数据迁移?
- java 线程池的实现原理?
- Linux的共享内存如何实现?
- B+树和红黑树时间复杂度?
- 同步IO和异步IO的区别?
- 快排的时间复杂度,最坏情况呢,最好情况呢,堆排序的时间复杂度呢,建堆的复杂度是多少?
- redis数据淘汰机制?
抖音Java二面
- 自我介绍?
- 主要讲讲做了什么和擅长什么?
- 如果Redis有1亿个key,使用keys命令是否会影响线上服务?
- 谈谈数据库:乐观锁和悲观锁、行锁与表锁、共享锁与排他锁?
- 设计模式了解哪些?
- Redis的持久化方式具体怎么实现,追加日志和备份文件,底层实现原理的话知道么?
- AtomicInteger怎么实现原子修改的?
- 说一下MVCC?底层原理知道吗?
抖音Java三面
- 高并发的解决方案有哪些?
- 每秒10万并发怎么实现?
- 重点谈谈方案的步骤?
- 服务器雪崩的场景一般是由什么引起的?如何来设计应对?
- 谈谈你的觉得成长最大的一个项目?
- 重点谈谈项目的设计以及你的角色?
- 遇到最大困难是什么?怎么克服?
- 工作中如果遇见了技术问题,暂时你无法解决,你的应对思路?
- 你想问我什么?
华为Java一面题目
- HashMap和HashTable的区别?
- CocurrentHashMap的底层实现原理?
- JVM的分代回收以及具体算法
- 你重写过hashcode和equals么,要注意什么
- B树、B+树区别,索引为何使用B+树
- atomic 与 volatile的区别?
- 死锁判定原理和具体场景
- 线程池的核心参数有哪些?
- MySQL事务隔离级别以及MVCC机制
- mysql优化策略
- 读写分离主从复制
- Spring框架中IOC的原理是什么?
- 谈谈Synchronized关键字的理解,以及锁是如何升级的?
华为Java面试题
华为Java二面题目
- 谈谈Spring AOP的底层实现?
- 除了Spring AOP,还知道有哪些AOP的使用场景?
- 有实际的JVM性能优化经验?
- 谈谈你对NIO、BIO、AIO的理解?
- Redis使用哨兵部署会有什么问题
- 谈谈Java的内存模型?
- Java内存模型与JVM内存模型的区别?
- Redis的RDB和AOF持久化区别?
华为Java三面题目
- 介绍最有挑战的项目?以及技术难度?
- 画一下架构流程图?
- 高并发场景,重点应该监控哪些指标?
- 高并发时怎么限流?
- 分布式全局唯一ID如何生成,有哪些生成方式
- MySQL和Redis的缓存如何解决数据一致性?
- 谈谈你对分布式的理解?
- 分布式场景会面临哪些技术调整和挑战
小米Java面试题
小米Java一面:
- 自我介绍?
- hashmap底层数据结构?怎么扩容?
- 线程池的实现原理?用过哪些?
- 内存泄漏与内存溢出的区别?
- volatile 关键字的作用?
- Java 内存模型?
- select poll epoll 的区别?
- B+树和红黑树时间复杂度?
- 同步IO和异步IO的区别?
- Redis数据淘汰机制?
小米Java二面:
- 自我介绍?
- 主要讲擅长什么?
- Redis 为什么快?核心原因?然后一直沿着问到操作系统。
- 如何分析“慢查询”?讲讲你的步骤与方法?
- 谈谈数据库:乐观锁和悲观锁、行锁与表锁?
- 设计模式了解哪些?手写设计模式
- 说一下MVCC?
美团Java面试题
美团Java面试一面(电话)
- 自我介绍
- 项目介绍
- Redis介绍
- 了解redis源码么
- 了解redis集群么
- Hashmap的原理,增删的情况后端数据结构如何位移
- hashmap容量为什么是2的幂次
- hashset的源码
- object类你知道的方法
- hashcode和equals
- 你重写过hashcode和equals么,要注意什么
- 假设现在一个学生类,有学号和姓名,我现在hashcode方法重写的时候,只将学号参与计算,会出现什么情况?
- 往set里面put一个学生对象,然后将这个学生对象的学号改了,再put进去,可以放进set么?并讲出为什么
- Redis的持久化?有哪些方式,原理是什么?
- 讲一下稳定的排序算法和不稳定的排序算法
- 讲一下快速排序的思想
美团Java面试二面(现场)
- 自我介绍
- 讲一下数据的acid
- 什么是一致性
- 什么是隔离性
- Mysql的隔离级别
- 每个隔离级别是如何解决
- Mysql要加上nextkey锁,语句该怎么写
- Java的内存模型,垃圾回收
- 线程池的参数
- 每个参数解释一遍
- 然后面试官设置了每个参数,给了是个线程,让描述出完整的线程池执行的流程
- Nio和IO有什么区别
- Nio和aio的区别
- Spring的aop怎么实现
- Spring的aop有哪些实现方式
- 动态代理的实现方式和区别
- Linux了解么
- 怎么查看系统负载
- Cpu load的参数如果为4,描述一下现在系统处于什么情况
- Linux,查找磁盘上最大的文件的命令
- Linux,如何查看系统日志文件
- 手撕算法:leeetcode原题 22,Generate Parentheses,给定 n 对括号,请写一个函数以将其生成新的括号组合,并返回所有组合结果。
美团Java三面(现场)
- 三面没怎么问技术,问了很多技术管理方面的问题
- 自我介绍
- 项目介绍
- 怎么管理项目成员
- 当意见不一致时,如何沟通并说服开发成员,并举个例子
- 怎么保证项目的进度
- 数据库的索引原理
- 非聚簇索引和聚簇索引
- 索引的使用注意事项
- 联合索引
- 从底层解释最左匹配原则
- Mysql对联合索引有优化么?会自动调整顺序么?哪个版本开始优化?
- Redis的应用
- Redis的持久化的方式和原理
- 技术选型,一个新技术和一个稳定的旧技术,你会怎么选择,选择的考虑有哪些
- 说你印象最深的美团点评技术团队的三篇博客
- 最近在学什么新技术
- 你是怎么去接触一门新技术的
- 会看哪些书
- 怎么选择要看的书
参考答案
已将上面这些互联网公司Java面试题及答案整理成了一份文档,希望对大家有所帮助!
扫码发送:面试手册,即可获取面试题答案~
陈睿mikechen
10年+大厂架构经验,资深技术专家,就职于阿里巴巴、淘宝、百度等一线互联网大厂。
关注「mikechen」公众号,获取更多技术干货!
后台回复【面试】即可获取《史上最全阿里Java面试题总结》,后台回复【架构】,即可获取《阿里架构师进阶专题全部合集》