金三银四招聘季已落幕,虽说行情不是很乐观,但真正的强者从不抱怨。
在此期间,我收到众多小伙伴的宝贵反馈,整理出132道面试题,从基础到高级,有八股文,也有对某个知识点的深度解析。包括以下几部分:
- Java:基础、线程、并发编程、 网络编程、JVM。
- 框架:Spring Boot、Spring Cloud。
- 数据库:Redis、MySQL。
- 架构:系统设计、技术选型、分布式理论等。
准备好迎接金九银十吧!!!
Java 基础
以下面试题可以移步至:
- Java 创建对象有几种方式?
- 有了数组为什么还要ArrayList?
- 重载和重写的区别
- 什么是内部类?应用在什么场景?
- 介绍下Java中的四种引用
- static都有哪些用法?
- HashCode在集合中的作用
- Hash冲突怎么处理?
- 深拷贝和浅拷贝的区别是什么?
- 你知道什么是fail-fast吗?
- 介绍下你对红黑树的理解
- 异常处理影响性能吗?
- 介绍下try-with-resource语法
- 你知道哪些数据结构?
- AVL树是怎么保持平衡性的?
- 为什么红黑树比AVL树效率高?
Java 线程
以下面试题可以移步至:
- 创建线程有几种方法?
- 介绍下线程的生命周期?
- 如何停止正在运行的线程?
- 什么是线程安全?
- 线程安全需要保证几个基本特性?
- 为什么wait和notify方法要在同步块中调用?
- Synchronized和Lock的区别?
- 常用的线程池有哪些?
- 为什么需要线程池?
- 简述一下线程池的工作原理
- 线程池的拒绝策略有哪些?
- 说说ThreadLocal的原理?
- 如何保证线程安全?
- 为什么需要确保共享变量的可见性?
- volatile是如何保证可见性、有序性?
- 谈一下 CAS 机制实现原理?
- CAS 机制存在什么问题?
- 简述一下synchronized工作原理?
- 简述一下synchronized锁升级的过程?
- 什么是锁粗化和锁消除?
- 为什么 HashMap 是线程不安全的?
Java 并发编程
以下面试题可以移步至:
- AQS是什么?
- AQS唤醒节点时,为什么是从后往前找?
- AQS为什么用双向链表?
- AQS为什么要有一个虚拟的head节点?
- ReentrantLock 的底层实现
- ReentrantLock的公平锁和非公平锁的区别
- ReentrantReadWriteLock如何实现读写锁?
- CountDownLatch,Semaphore有什么用?
- 你知道哪些常用的阻塞队列?
- 阻塞队列中的虚假唤醒是什么?
Java 网络编程
- 什么是网络编程?
- 什么是BIO、NIO、IO多路复用?
- Java NIO是New IO还是Non-blocking IO?
- 聊一下你对Netty的认识?
- Netty和Java NIO是什么关系?
- Netty为什么那么高效?
Spring Boot
以下面试题可以移步至:
- 什么是 Spring Boot?
- Spring Boot 有哪些核心注解?
- Spring Boot 自动装配是什么?
- Spring Boot 自动装配原理?
- Spring Boot 配置文件的加载顺序
- bootstrap.properties 和 application.properties 有何区别 ?
- Spring Boot Actuator是什么?
- Spring Boot项目如何热部署?
- Spring Boot 中的 starter 是什么 ?
- Spring Boot 有哪些 starter ?
Spring Cloud
以下面试题可以移步至:
- Nacos是CP还是AP?
- 注册中心应该选择CP还是AP?
- Nacos注册中心工作机制是怎样的?
- Eureka注册中心工作机制是怎样的?
- Eureka自我保护机制原理是什么?
- Eureka和Nacos区别
- Nacos配置中心长轮询机制是什么?
- Nacos配置中心为什么不选择主动推送而是采用长轮询机制?
- Nacos配置中心宕机了,会影响服务吗?
- 为什么Feign第一次调用耗时很长?
- 使用Feign如何实现认证的传递?
- Seata中xid如何通过Feign进行全局传递?
- Feign底层默认使用什么发送HTTP,有什么问题?
- Seata支持那些事务模式?
- Gateway和Zuul的区别?
JVM
以下面试题可以移步至:
《JVM 面试题》
- 谈一下你对JVM的理解?
- JVM 为什么可以实现跨平台?
- JAVA内存模型和JVM内存模型有啥关系?
- JDK,JRE以及JVM的关系
- JDK编译器是怎么工作的?
- 类加载机制是什么?
- 有哪些类加载器?
- 什么是双亲委派机制?
- 介绍一下JVM内存区域划分
- 堆为什么进行分代设计?
- 什么是内存的担保机制?
- 为什么Eden:S0:S1 比例是8:1:1?
- 描述一下对象内存分配过程
- 如何判断对象已死?
- 讲一讲内存模型?
- 常用的垃圾回收算法有哪些?
- 常用的垃圾收集器有哪些?
- 常用的JVM调优参数有哪些?
Redis
以下面试题可以移步至:
- 为什么要使用Redis做缓存?
- 为什么Redis单线程模型效率也能那么高?
- Redis常见数据结构以及使用场景?
- Redis的数据结构是如何组织的?
- pipeline有什么好处,为什么要用 pipeline?
- Redis官方为什么不提供 Windows版本?
- Redis 持久化方式有哪些?有什么区别?
- 什么是Redis事务?原理是什么?
- Redis6.0为什么要引入多线程?
- 如何在100个亿URL中快速判断某URL是否存在?
- 什么是渐进式rehash?
- Redis有哪些的过期策略?
- Redis有哪些的淘汰策略?
- 什么是BigKey?
- 什么是缓存击穿、缓存穿透、缓存雪崩?
MySQL
- MySQL索引在什么情况下会失效?为什么?
- 描述一下一条SQL的执行流程?
- 执行器调用存储引擎后,InnoDB做了什么事?
- MySQL是如何保证数据不丢失的?
- MySQL是如何保证数据一致性的?
- MySQL数据被误删怎么办?
- 描述一下MySQL的主从复制流程。
- 分库分表有什么好的方案?
- 谈一下对MySQL事务隔离的认识?
- MySQL是怎么处理并发事务的?
- 什么是异构索引表,在分库分表场景下如何应用?