Java面试前需要做足各方面的准备工作,肯定都会浏览大量的面试题,本人也不例外,这是一些最新面试题,分享给大家。
Java基础
- 面向对象的特征:继承、封装和多态
- int 和 Integer 有什么区别;
- Integer的值缓存范围
- 说说反射的用途及实现
- Http 请求的 GET 和 POST 方式的区别
- MVC设计思想
- 什么是Java序列化和反序列化;
- 如何实现Java序列化;
- 重载和重写的区别
进程和线程
- 线程和进程的概念
- 并行和并发的概念
- 创建线程的方式及实现
- 进程间通信的方式
- 说说 CountDownLatch、CyclicBarrier 原理和区别
- 说说 Semaphore 原理
- 说说 Exchanger 原理
- ThreadLocal 原理分析;
- ThreadLocal为什么会出现OOM,出现的深层次原理
- 讲讲线程池的实现原理
- 线程池的几种实现方式
- 线程的生命周期;状态是如何转移的
锁机制
- 什么是线程安全?如何保证线程安全?
- 重入锁的概念;重入锁为什么可以防止死锁?
- 产生死锁的四个条件
- 如何检查死锁
- volatile 实现原理
- synchronized 实现原理(对象监视器)
- synchronized 与 lock 的区别
- AQS 同步队列
- CAS 无锁的概念;乐观锁和悲观锁
- 常见的原子操作类
- 什么是 ABA 问题;出现 ABA 问题 JDK 是如何解决的
- 乐观锁的业务场景及实现方式
- Java 8 并发包下常见的并发类
- 偏向锁、轻量级锁、重量级锁、自旋锁的概念
数据库
- DDL、DML、DCL 分别指什么
- explain 命令
- 脏读、幻读、不可重复读
- 事务的隔离级别
- 数据库的几大范式
- 说说分库与分表设计
- 分库与分表带来的分布式困境与对应之策
- 说说 SQL 优化之道
- InnoDB 与 MyISAM 区别、优缺点、使用场景
- B+树索引、全文索引、哈希索引,的区别
- 什么是自适应哈希索引(AHI)
- 为什么要用 B+tree 作为 MySql 索引的数据结构
- 聚集索引与非聚集索引的区别
- limit 20000 加载很慢怎么解决
- 常见的几种分布式 ID 的设计方案
JVM
- JVM 运行时内存区域划分
- 常见的 GC 回收算法及其含义
- 常见的 JVM 性能监控和故障处理工具类
- JVM 性能调优
- 类加载器、双亲委派模型
- 类加载的过程
- 强引用、软引用、弱引用、虚引用
- Java 内存模型 JMM
以下是阿里天猫、蚂蚁、钉钉面试题目
不会做别着急:文末有答案以及视频讲解,架构师资料
1. junit用法,before,beforeClass,after, afterClass的执行顺序
2. 分布式锁
3. nginx的请求转发算法,如何配置根据权重转发
4. 用hashmap实现redis有什么问题(死锁,死循环,可用ConcurrentHashmap)
5. 线程的状态
5. 线程的阻塞的方式
6. sleep和wai