Appearance
面试自测题
Java基础
- 基础类型有哪些,说一下 int 类型占用多少字节
- 字节流和字符流有什么区别,读取视频一般是使用字节流还是字符流
Java集合
- 讲一下ArrayList 的底层原理
- 数组和集合之间如何转换
- ArrayList 和 LinkedList 之间的区别
- 说一下 HashMap 的底层实现原理
- 讲述一下 HashMap 的 put 方法的具体流程
- 讲一讲 HashMap 的扩容机制
- HashMap 的寻址算法和数组长度为什么是2 的 n 次幂
- HashMap 在 1.7 情况下的多线程死循环问题如何解决(了解)
- Collection 集合下哪些是线程安全的
- HashTable 怎么实现线程安全的
- TreeSet 是默认有序的吗
- HashSet 的底层结构是怎么样的
- Set 怎么变有序,除了 TreeSet 还有什么方式能够实现 Set 有序的操作
Java并发
- 线程和进程的区别?
- 并行和并发的区别?
- 讲一下线程创建的方式?Runable 和 Callable 的区别;strat 和 run 的区别。
- 线程包括哪些状态,状态之间是如何变化的
- 线程按顺序执行 join、notify 和 notifyall 的区别。
- Java 中 wait 和 sleep 的区别。
- 如何停止一个正在运行的线程。
- synchronized 关键字的底层原理。
- 基础回答
- 进阶回答
- 谈谈 JMM (Java 内存模型)
- 你谈谈对 CAS 的理解
- 请谈谈你对 volatile 的理解(可见性,禁止指令重排序)
- 什么是 AQS
- ReentantLock 的实现原理
- synchronized 和 Lock 有什么区别
- 死锁产生的条件以及死锁排查方案
- 聊一下 ConcurrentHashMap
- 导致并发编程出现问题的根本原因是什么
- 说一下线程池的创建方式(线程池的种类有哪些)
- 说一下线程池的核心参数(线程池的执行原理知道吗)
- 线程池中有哪些常见的阻塞队列
- 如何确认核心线程数
- 线程池的拒绝策略有哪些?
- 为什么不建议使用 Executor 创建线程池
- 讲述一下你们项目中哪里用到了线程池(异步线程)
- 如何控制某个方法允许并发访问线程的数量
- 谈谈你对 ThreadLocal 的理解
JVM
- JVM是什么,讲一下运行流程
- 什么是程序计数器
- 介绍一下堆
- 什么是虚拟机栈
- 讲一下方法区
- 听过直接内存吗
- 什么是类加载器,什么是双亲委派机制
- 说一下类加载的执行过程
- 对象什么时候可以被垃圾器回收
- JVM 垃圾回收算法有哪些
- 说一下 JVM 的分代回收
- 说一下 JVM 有哪些垃圾回收器
- 详细聊一下 G1 垃圾回收器
- 强引用、弱引用、软引用、虚引用的区别
- JVM调优参数可以在哪里设置参数值
- 用的JVM调优的参数都有哪些
- 说一下 JVM 调优的工具
- JVM 内存泄漏的排查思路
- CPU 飙高的排查方案及其思路
MySql
- 如何定位慢查询
- SQL 语句执行的很慢,如何分析
- MySQL 的常见索引有哪些
- 组合索引有什么使用准则
- 索引底层怎么实现的
- 聚簇索引和非聚簇索引、回表查询、覆盖索引、超大分页优化
- 索引创建的原则
- 什么情况下索引会失效
- 谈一谈你对 SQL 优化的经验
- 事务的特性
- 并发事务问题、隔离级别
- undo log 和 redo log 的区别
- 解释一下 MVCC
- 主从同步原理
- 分库分表
Redis
- 缓存穿透
- 缓存击穿
- 缓存雪崩
- 双写一致性
- 持久化
- 数据过期策略
- 数据淘汰策略
- Redis 分布式锁(使用场景,实现原理 senx + redisson )
- 主从复制
- 哨兵模式
- 分片集群
- Redis 是单线程的,但是为什么还那么快
Spring
- 单例 Bean 是线程安全的吗
- AOP 的相关面试题
- 事务失效的场景
- Bean 的生命周期
- Bean 的循环依赖(循环引用)
- Spring 框架常见的注解(spring、SpringMVC、SpringBoot)
- 动态代理是基于什么方式实现的
SpringMVC
- 讲述一下 SpringMVC 的执行流程
Mybatis
- 讲一下 Mybatis 的执行流程
- 讲一下 Mybatis 延迟加载使用及其原理
- 讲一下 Mybatis 一级、二级缓存
SpringBoot
- SpringBoot 的自动配置原理讲一下
- SpringBoot 的启动流程讲一下,讲一下 SpringBoot 的自动装配
- SpringBoot 有哪几种配置文件, yml 和 propertiey 配置文件哪个优先级高一点
SpringCloud
- Spring、SpringBoot、SpringCloud 这三个有什么区别
- SpringCloud 有有哪些核心组件
- Nacos 的 Space ID 干嘛的
- Nacos 的全局策略了解吗
- Nacos 调用服务是通过什么方式来实现的(负载均衡)
- 讲述一下注册中心 Eureka、Nacos 的工作流程
- 你们项目中负载均衡是如何实现的,讲述一下 Ribbon 负载均衡(包括常见负载均衡策略,如何自定义负载均衡策略)
- Gateway 有哪些核心组件
- OpenFeign 底层基于什么实现的(RPC)
- 讲一下服务雪崩和熔断降级
- 微服务的监控 skywalking (跳过,说不了解)
- 微服务的限流(漏桶算法,令牌桶算法)讲一下你们项目中如何处理的
- 分布式系统理论 CAP 和 Base
- 分布式事务的解决方案有哪些
- 分布式服务的接口幂等性如何设计
- 你们项目中使用了什么分布式任务调度 xxl-job
MQ
RabbitMQ
- 如何保证消息不丢失
- 消息的重复消费问题如何解决
- RabbitMQ 的延迟队列有了解过吗(讲一下 RabbitMQ 中的死信交换机)
- 消息堆积问题怎么解决
- RabbitMQ 的高可用机制有了解过吗
RocketMQ
- 讲一下 RocketMQ 的基本架构(RocketMQ 有哪些核心组件)
- 讲一下 RocketMQ 的消息模型?
- 消息的消费模式了解吗?
- 如何保证消息的可用性/可靠性/不丢失呢
- 消息重复问题如何处理。
- 消息堆压问题如何解决
- 顺序消息如何实现
- 如何实现消息过滤
- RocketMQ 是如何实现延时消息的
- 怎么实现消息的分布式事务的,半消息?
- 死信队列了解吗
- 如何保证RocketMQ的高可用?
- 说一下RocketMQ的整体工作流程?
- 消息刷盘怎么实现的呢?
Docker
Elasticsearch
- Elasticsezrch 是什么,能做什么,讲一下ES 的基础概念
- Lucene 是什么
- 了解倒排索引吗
- 分词器有哪些,由什么组成
- ES 常见的数据类型有哪些
前端
- Vue 的跨域了解吗
- Vue 的双向绑定了解吗
- computer 和 watch 有什么区别,watch 深度监听了解吗
- vue 路由有几种方式
其他常见面试题
- Linux 的常见命令有哪些
设计模式
- 讲一下工厂设计模式中的简单工厂模式
- 讲一下抽象工厂模式、工厂方法模式
- 讲一下策略模式
- 讲一下责任链模式
技术场景
- 讲一下单点登陆的实现
- 权限认证是如何实现的
- 上传数据的安全你们是如何控制的
- 遇到了哪些比较棘手的问题,怎么解决的
- 你们项目中日志是怎么采集的
- 常见日志的命令
- 生产问题怎么排查
- 怎么快速定位系统的瓶颈
项目面试题
- 项目描述借鉴一下这个: https://www.bilibili.com/video/BV1iH4y1V7G5
软性问题
- 离职的原因说一下
参考