Skip to content

面试突击_常见面试题

面试自测题

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 的常见命令有哪些

设计模式

  • 讲一下工厂设计模式中的简单工厂模式
  • 讲一下抽象工厂模式、工厂方法模式
  • 讲一下策略模式
  • 讲一下责任链模式

技术场景

  • 讲一下单点登陆的实现
  • 权限认证是如何实现的
  • 上传数据的安全你们是如何控制的
  • 遇到了哪些比较棘手的问题,怎么解决的
  • 你们项目中日志是怎么采集的
  • 常见日志的命令
  • 生产问题怎么排查
  • 怎么快速定位系统的瓶颈

项目面试题

软性问题

  • 离职的原因说一下

参考