Java后端真实面试题大全(有详细答案)--常见/真题

原文网址:Java后端真实面试题大全(有详细答案)--常见/真题_IT利刃出鞘的博客-CSDN博客

简介

说明

        本文展示Java后端面试题,有详细答案。本文题目都是我近两年面试中遇到的真实题目,包含初级、中级、高级的题目。

        题目来自于我在几十场大中小公司面试被问到的问题,涵盖了大中小公司的题目。

        文中的题目都是常见的面试题,很偏或极少被问到的问题我没有写进来。

为什么写这篇博客?

        之前我在网上搜了很多面试题,但是发现面试时很少问到那些题目,苦苦准备了好几周的题目根本没啥用。于是,我就开始记录自己遇到的真实的面试题,都总结到本文中来了。

        看过我博客的几个朋友和同事参加了面试后跟我说,他们被问到的问题大部分(80%以上)都在本文里

        以我自己的面试经历而言,有一次面试95%的题目在本文中,我对答如流,不知道面试官是否会怀疑泄题了😂。当然,这次面试很稳的拿到了offer。

面试题说明

        本文按类别划分面试题,包括:Java基础,集合,JVM,多线程,数据库,设计模式,Redis,MQ(RabbitMQ、Kafka),Shiro,Spring,SpringBoot,SpringMVC,MyBatis,分布式,SpringCloud,ElasticSearch,综合性问题。

难度与频率

        面试题采用五角星来评判题目的难度和被问到的频率,最高为五颗星。难度对应岗位等级,从初级到高级;频率代表被问到的次数。

        如果只为准备面试,只看频率为三颗星及以上的题目即可。(一颗星和两颗星的题目基本问不到)。

        如果是三年以上的经验,只看难度为三颗星及以上的题目即可。如果是一两年经验,看个人水平,水平好些的可以看一颗星到五颗星所有题目(我知道有这样的朋友:虽然经验少,但爱学习,一两年的经验拥有普通人四五年的技术能力)。

★★

★★★

★★★★

★★★★★

难度

初级

初中级

中级

中高级

高级

频率

很少问到

基本必问

基础

String

String的replace与replaceall区别?(难度:★  频率:★)

  • replace:替换字符串
  • replaceAll:根据正则表达式替换字符串

String, StringBuffer, StringBuilder区别(难度:★  频率:★★★)

Java--String,StringBuffer,StringBuilder区别_IT利刃出鞘的博客-CSDN博客

intern方法及String对象数目(难度:★★★  频率:★)

Java--String--原理--创建对象的个数/intern方法/字面量_IT利刃出鞘的博客-CSDN博客

如何修改String对象的数据?(难度:★★★  频率:★★)

Java--String不可变--含义/原因/好处_IT利刃出鞘的博客-CSDN博客

static

static的5种用法(难度:★★  频率:★★★★)

Java--static--用法/使用位置/实例_IT利刃出鞘的博客-CSDN博客

为什么静态方法不能调用非静态方法和变量?(难度:★★★  频率:★★★★)

与类加载顺序有关,加载静态方法时,非静态的未初始化。见:JVM--类加载过程--原理/实例_IT利刃出鞘的博客-CSDN博客

synchronized用于静态方法与普通方法有区别吗?(难度:★★★  频率:★★★)

Java多线程--synchronized--使用/原理/中断/锁的升级_IT利刃出鞘的博客-CSDN博客

异常

异常类型(难度:★★  频率:★★★★)

Java--异常/Exception--类型/原理_IT利刃出鞘的博客-CSDN博客

catch里return了,finally是否执行?(难度:★★  频率:★★)

Java--异常/Exception--类型/原理_IT利刃出鞘的博客-CSDN博客

IO

字节流与字符流区别?(难度:★★  频率:★★)

Java--IO--字节流与字符流的区别_IT利刃出鞘的博客-CSDN博客

BIO, NIO, AIO 区别?(难度:★★★  频率:★★)

Java--BIO、NIO、AIO--区别/使用/实例_IT利刃出鞘的博客-CSDN博客

JDK8

JDK8新特性(难度:★★  频率:★★)

接口允许default和staticlambdastream时间新API(LocalDateTime等)CompletableFuture;等

JDK8接口的default和static(难度:★★  频率:★)

Java--接口--JDK8新特性--详解/实例_IT利刃出鞘的博客-CSDN博客

JDK8 Stream API 流操作包括哪些部分?项目中怎么用的Stream?(难度:★★  频率:★)

Java--Stream(流)--使用/实例/流操作_IT利刃出鞘的博客-CSDN博客

语法

项目中对泛型的使用(难度:★★  频率:★★)

Java--泛型--使用/教程/应用/实例_IT利刃出鞘的博客-CSDN博客

抽象类与接口的区别?(难度:★★  频率:★)

Java--接口与抽象类的区别_IT利刃出鞘的博客-CSDN博客

类库

SimpleDate线程安全吗?怎么解决?(难度:★★★  频率:★★★)

SingleDateFormat--线程安全的操作方法--使用/实例_IT利刃出鞘的博客-CSDN博客

反射

Java反射:forName和classLoader的区别(难度:★★★  频率:★)

Java--反射--使用/应用/教程/实例_IT利刃出鞘的博客-CSDN博客

反射机制中可以获取private成员的值吗?(难度:★★★  频率:★)

  • 可以。法1.通过setter和getter获得 法2:通过Field类提供的set()和get()方法
  • 另见《Java开发实战经典 第2版》=> 15.4 Java反射机制的深入应用

其他

拆箱与装箱(难度:★  频率:★)

Java--自动拆箱/装箱/实例化顺序/缓存--使用/原理/实例_IT利刃出鞘的博客-CSDN博客

集合

List

List与Set的区别(难度:★  频率:★)

Java--List--区别--ArrayList与LinkedList--List与Array、Set_IT利刃出鞘的博客-CSDN博客

ArrayList与LinkedList异同点?(难度:★  频率:★★)

Java--List--区别--ArrayList与LinkedList--List与Array、Set_IT利刃出鞘的博客-CSDN博客

List与数组的区别?(难度:★  频率:★)

Java--List--区别--ArrayList与LinkedList--List与Array、Set_IT利刃出鞘的博客-CSDN博客

ArrayList是否线程安全?如何线程安全地操作ArrayList?(难度:★★★  频率:★★★★★)

ArrayList--线程不安全的原因/保证线程安全的方法--方案/实例_IT利刃出鞘的博客-CSDN博客

ArrayList扩容机制(难度:★★★  频率:★★★★)

ArrayList--扩容的原理_IT利刃出鞘的博客-CSDN博客

List.subList的坑?(难度:★★  频率:★)

Java--List--注意问题/坑_IT利刃出鞘的博客-CSDN博客

List如何安全删除(难度:★★  频率:★)

Java--List--创建/遍历/去重/排序/删除--方法/实例_IT利刃出鞘的博客-CSDN博客

List如何去重?(难度:★  频率:★★)

stream,或:Java--List--创建/遍历/去重/排序/删除--方法/实例_IT利刃出鞘的博客-CSDN博客

List如何实现排序(难度:★  频率:★★)

stream,或:Java--List--创建/遍历/去重/排序/删除--方法/实例_IT利刃出鞘的博客-CSDN博客

为什么引入迭代器?(难度:★★  频率:★★)

Java类集--综合_IT利刃出鞘的博客-CSDN博客

List哪种遍历性能好,为什么?(难度:★★  频率:★)

Java--List--创建/遍历/去重/排序/删除--方法/实例_IT利刃出鞘的博客-CSDN博客

Map

HashMap、TreeMap、LinkedHashMap和区别?(难度:★★  频率:★★★★★)

HashMap、TreeMap、LinkedHashMap的区别_IT利刃出鞘的博客-CSDN博客

JDK8的HashMap和ConcurrentHashMap的改变?(难度:★★  频率:★★★★)

Java--JDK7与JDK8的HashMap的区别_IT利刃出鞘的博客-CSDN博客

Java--ConcurrentHashMap原理_IT利刃出鞘的博客-CSDN博客

HashMap数据结构、哈希冲突解决方法(难度:★★★  频率:★★★★)

Java--HashMap原理--数据结构/存取机制_IT利刃出鞘的博客-CSDN博客

hash冲突的4种解决方案_IT利刃出鞘的博客-CSDN博客

HashMap扩容的原理(难度:★★★  频率:★★★★)

Java--HashMap扩容的原理_IT利刃出鞘的博客-CSDN博客

HashMap为什么线程不安全?如何线程安全地操作?(难度:★★★  频率:★★★★★)

Java--HashMap--线程不安全的原因/保证线程安全的方法--方案/实例_IT利刃出鞘的博客-CSDN博客

ConcurrentHashMap原理?(难度:★★★  频率:★★★★★)

Java--ConcurrentHashMap原理_IT利刃出鞘的博客-CSDN博客

String的hashCode怎么实现的?(难度:★★  频率:★)

hash:s[0] * 31^(n-1) + s[1] * 31^(n-2) + ... + s[n-1]
见:Java--HashMap原理--数据结构/存取机制_IT利刃出鞘的博客-CSDN博客

HashMap和HashSet的区别及其实现原理?(难度:★★  频率:★)

  • HashMap:将key.hashCode()作为hash值存放,将value直接作为value。
  • HashSet:调用HashMap的put方法;将key.hashCode()作为hash值存放,将HashSet类的final变量PRESENT作为value。

HashMap如果使用对象最为key,要注意什么?(难度:★★  频率:★)

  • 重写hashCode和equals。

对象比较为什么重写hashCode和equals?(难度:★★  频率:★)

  • 重写equals方法时需要重写hashCode方法,主要是针对Map、Set等集合类型的使用;
    • a: Map、Set等集合类型存放的对象必须是唯一的;
    • b: 集合类判断两个对象是否相等,是先判断HashCode是否相等,如果HashCode返回TRUE,还要再判断equals返回值是否ture,只有两者都返回ture,才认为该两个对象是相等的。

JVM

运行时数据区(难度:★★  频率:★★★★)

运行时数据区是怎样的?线程安全(即线程私有)的有哪些?

JVM--运行时数据区域_IT利刃出鞘的博客-CSDN博客

对象实例、类信息、常量、静态变量分别在运行时数据区的哪个位置?(难度:★★  频率:★★)

JVM--运行时数据区域_IT利刃出鞘的博客-CSDN博客

类加载

Java类加载流程?初始化流程?(难度:★★  频率:★★★★★)

JVM--类加载过程--原理/实例_IT利刃出鞘的博客-CSDN博客

JVM双亲委派模型(难度:★★★  频率:★)

JVM--双亲委派模型_IT利刃出鞘的博客-CSDN博客

内存泄露

Java内存泄露什么时候会发生?(难度:★★  频率:★★)

JVM--Java内存泄露--原因/解决方案_IT利刃出鞘的博客-CSDN博客

为什么内部类持有外部类可能内存泄露?如何解决?(难度:★★  频率:★)

JVM--Java内存泄露--内部类持有外部类--原因/解决方案_IT利刃出鞘的博客-CSDN博客

为什么ThreadLocal会导致内存泄露?如何解决?(难度:★★★  频率:★★)

JVM--Java内存泄露--ThreadLocal--原因/解决方案_IT利刃出鞘的博客-CSDN博客

垃圾回收

引用类型及其含义(难度:★★  频率:★★★)

Java--引用类型--强引用、软引用、弱引用、虚引用--区别/使用/实例_IT利刃出鞘的博客-CSDN博客

finalize方法做什么用的?(难度:★  频率:★)

  • 垃圾回收时会调用此方法

可以作为GC.Roots的对象有哪些?(难度:★★★  频率:★)

JVM--可作为GC Roots的对象_IT利刃出鞘的博客-CSDN博客

调用System.gc()会立刻垃圾回收吗?(难度:★★  频率:★)

JVM--Java垃圾回收--原理/触发时机_IT利刃出鞘的博客-CSDN博客

Minor GC和Full GC的触发时机。(难度:★★★  频率:★★)

JVM--Java垃圾回收--原理/触发时机_IT利刃出鞘的博客-CSDN博客

频繁Full GC如何排查(难度:★★★★  频率:★)

Java--线上问题排查--方法/步骤_IT利刃出鞘的博客-CSDN博客

JDK默认的垃圾回收器是什么?(难度:★★  频率:★)

JVM--Java垃圾回收器--详解/对比_IT利刃出鞘的博客-CSDN博客

CMS垃圾回收器的流程?(难度:★★★  频率:★★★★)

CMS和G1区别(难度:★★★  频率:★★★)

JVM--Java垃圾收集器--CMS和G1--区别和执行流程_IT利刃出鞘的博客-CSDN博客

CMS与其他老年代垃圾回收器的区别?(难度:★★★  频率:★)

JVM--Java垃圾回收器--详解/对比_IT利刃出鞘的博客-CSDN博客

JVM调优

JVM通常设置哪些参数来调优?(难度:★★  频率:★★★★)

JVM--调优--实例/常用配置/方法_IT利刃出鞘的博客-CSDN博客

其他

JMM内存结构(难度:★★★  频率:★★)

Java多线程--内存模型(JMM)--详解_IT利刃出鞘的博客-CSDN博客

怎么分配堆外内存(难度:★★  频率:★)

JVM--Java堆外内存--使用/作用_IT利刃出鞘的博客-CSDN博客

多线程

综合

线程的安全性问题体现在哪些方面?(难度:★★  频率:★)

Java--内存模型(JMM)--详解_IT利刃出鞘的博客-CSDN博客

死锁产生的条件?(难度:★★  频率:★)

Java多线程--基础知识_IT利刃出鞘的博客-CSDN博客

i++是否线程安全?(难度:★  频率:★)

  • 不是线程安全的。要线程安全可以用java.util.concurrent.atomic

线程池

线程池缺点(难度:★★  频率:★★)

Java线程池--为什么使用线程池?优缺点是什么?_IT利刃出鞘的博客-CSDN博客

ThreadPoolExecutor有哪些参数?(难度:★★  频率:★★★★★)

Java线程池--核心参数/大小设置/使用示例_IT利刃出鞘的博客-CSDN博客

CPU密集与IO密集的场景如何设置线程池参数?(难度:★★★  频率:★★★)

Java线程池--核心参数/大小设置/使用示例_IT利刃出鞘的博客-CSDN博客

什么时候触发最大线程条件?(难度:★★  频率:★★★★★)

Java线程池--原理(执行流程/结构/状态转换)_IT利刃出鞘的博客-CSDN博客

线程池拒绝策略有哪些?默认是哪个?(难度:★★  频率:★★★★)

Java线程池--饱和策略(拒绝策略)--使用/教程/实例_IT利刃出鞘的博客-CSDN博客

线程池里的异常时如何处理的?(难度:★★  频率:★)

Java线程池--全局异常处理--方法/实例_IT利刃出鞘的博客-CSDN博客

BlockingQueue:线程池fixed, single, scheduled, cached对应的队列(难度:★★  频率:★★★)

Java线程池--种类--Executors--使用/教程/实例_IT利刃出鞘的博客-CSDN博客

Java多线程--阻塞队列(BlockingQueue)--使用/教程/实例_IT利刃出鞘的博客-CSDN博客

synchronized

synchronized的锁升级是怎样的?(难度:★★★★  频率:★)

Java多线程--synchronized--使用/原理/中断/锁的升级_IT利刃出鞘的博客-CSDN博客

JUC

ReentrantLock显著缺点?(难度:★★★  频率:★★)

Java多线程--ReentrantLock--使用/实例/原理_IT利刃出鞘的博客-CSDN博客

CAS和AQS了解吗?原理是什么(难度:★★★  频率:★★)

Java多线程--CAS--原理/优缺点_IT利刃出鞘的博客-CSDN博客

Java多线程--AQS--原理_IT利刃出鞘的博客-CSDN博客

synchronized与ReentrantLock区别?(难度:★★  频率:★★)

Java多线程--synchronized与volatile、ReentrantLock的区别_IT利刃出鞘的博客-CSDN博客

有哪些原子类?用过哪个?(难度:★★★  频率:★)

Java多线程--原子类(atomic)--使用/教程/实例_IT利刃出鞘的博客-CSDN博客

项目里用了哪些锁?(难度:★★★  频率:★★★)

  • 单体项目里用到了ReentrantLock、synchronized;
  • 单例模式里用到了synchronized

项目中哪些地方用到了多线程?(难度:★★★  频率:★★★★★)

  • 处理定时的任务。    比如:定时器定时处理数据进行统计等
  • 异步处理。               比如:发邮件, 记录日志, 发短信等。比如注册成功后发激活邮件
  • 多线程计算,充分利用CPU。比如:1个线程,占用10%的cpu,需要10分钟,创建10个线程,占100%的CPU,需要1分钟。

JDK8新增的异步编程了解吗?(难度:★★★  频率:★)

Java--异步--CompletableFuture--实例_IT利刃出鞘的博客-CSDN博客

多线程顺序交替执行的方法(有三个线程A,B,C,依次打印出A,B,C)(难度:★★★  频率:★)

MySQL

综合问题

MyISAM与InnoDB区别(难度:★  频率:★★★★)

MySQL--存储引擎--MyISAM和InnoDB--对比/区别_IT利刃出鞘的博客-CSDN博客

隔离级别是怎样的?脏读、幻读是什么意思?(难度:★★★  频率:★★★★★)

MySQL--隔离级别--脏读/不可重复读/幻读--详解/实例_IT利刃出鞘的博客-CSDN博客

隔离级别如何选用?(难度:★★  频率:★★)

MySQL--隔离级别--脏读/不可重复读/幻读--详解/实例_IT利刃出鞘的博客-CSDN博客

ACID(难度:★★  频率:★)

数据库--事务的ACID--介绍/详解_IT利刃出鞘的博客-CSDN博客

sql注入怎么解决?(难度:★★★  频率:★★)

数据库--防止SQL注入的方案_IT利刃出鞘的博客-CSDN博客

三大范式(难度:★★  频率:★)

数据库(SQL)--三大范式--介绍/使用/实例_IT利刃出鞘的博客-CSDN博客

怎么样幂等(难度:★★★  频率:★★)

数据库--幂等--方案_IT利刃出鞘的博客-CSDN博客

一条SQL查询语句的执行流程(难度:★★  频率:★★)

MySQL--一条SQL查询语句的执行流程_IT利刃出鞘的博客-CSDN博客

隔离级别是如何实现的?(MVCC)(难度:★★★★  频率:★★)

MySQL原理--隔离级别的实现方式--MVCC_IT利刃出鞘的博客-CSDN博客

快照读与当前读 是怎样的?(难度:★★★★  频率:★★)

MySQL原理--隔离级别的实现方式--MVCC_IT利刃出鞘的博客-CSDN博客

大表分页的优化?(难度:★★★★  频率:★)

MySQL--大数据量的分页优化方案_IT利刃出鞘的博客-CSDN博客

为什么不要用外键?(难度:★★★  频率:★)

数据库--外键--用法/缺点_IT利刃出鞘的博客-CSDN博客

批量往数据库导入1000万条数据方法?(难度:★★  频率:★)

  • 存储过程

数据库优化方式(难度:★★★  频率:★)

  • 建立索引、字段冗余(减少联表查询)、使用缓存、读写分离、分库分表

怎么调试存储过程(难度:★★  频率:★)

MySQL工具--dbForge Studio for MySQL_IT利刃出鞘的博客-CSDN博客

MySQL的三种驱动类型 难度:★★  频率:★)

MySQL--时区/连接器/驱动类型_IT利刃出鞘的博客-CSDN博客

索引

索引的种类(难度:★★  频率:★★★)

MySQL--索引--类型/分类/类别_IT利刃出鞘的博客-CSDN博客

数据库使用索引的缺点?(难度:★★  频率:★★★)

MySQL--索引的优点/缺点/创建索引的原则_IT利刃出鞘的博客-CSDN博客

创建索引的原则(难度:★★  频率:★★★★)

MySQL--索引的优点/缺点/创建索引的原则_IT利刃出鞘的博客-CSDN博客

索引什么时候会失效(难度:★★  频率:★★★★★)

MySQL--索引失效--原因/解决方案_IT利刃出鞘的博客-CSDN博客

创建了A, B, C联合索引,使用B,C能否索引(难度:★★★  频率:★★★★★)

MySQL--联合索引--使用/原理/优化_IT利刃出鞘的博客-CSDN博客

LIKE什么时候走索引,什么时候不走索引?(难度:★★★  频率:★★★)

MySQL--索引的优化--LIKE模糊查询_IT利刃出鞘的博客-CSDN博客

ORDER BY是否走索引?(难度:★★★  频率:★★)

MySQL--索引的优化--ORDER BY_IT利刃出鞘的博客-CSDN博客

聚集索引是什么?什么是回表?(难度:★★★★  频率:★★★★)

MySQL--聚集索引/辅助索引/回表查询/覆盖索引--原理/优化_IT利刃出鞘的博客-CSDN博客

索引原理;为什么采用B+树?(难度:★★★★  频率:★)

MySQL--索引的原理_IT利刃出鞘的博客-CSDN博客

分库分表

什么时候考虑分库分表?分库分表要考虑什么问题?(难度:★★★  频率:★)

数据库--分库分表--方案/切分方式/注意的问题_IT利刃出鞘的博客-CSDN博客

原来没分库分表,后期如何分库分表?(难度:★★★★  频率:★★)

数据库--单表转分库分表_IT利刃出鞘的博客-CSDN博客

分库分表的中间件(难度:★★  频率:★★)

  • Sharding-JDBC、Mycat

水平分表,有哪些规则?(难度:★★★  频率:★★★★★)

数据库--分库分表--垂直分表与水平分表_IT利刃出鞘的博客-CSDN博客

如何维护全局的id(难度:★★★  频率:★★★★★)

分布式--生成数据库全局唯一ID--方法/方案_IT利刃出鞘的博客-CSDN博客

语句

语句类笔试题(难度:★★★  频率:★)

MySQL--常见业务/笔试题_IT利刃出鞘的博客-CSDN博客

OR与IN的效率?(难度:★★★  频率:★)

MySQL--SQL语句优化--大全_IT利刃出鞘的博客-CSDN博客

内联结,左联结,右联结,全(外)联结的含义?(难度:★★  频率:★)

交集、并集、差集?(难度:★★★  频率:★)

设计模式

项目里用到了哪些设计模式,怎么用的?(难度:★★★  频率:★★★★★)

Java设计模式--在项目中的应用_IT利刃出鞘的博客-CSDN博客

设计模式的原则(难度:★★  频率:★)

设计模式的类别(难度:★★  频率:★)

Java设计模式--分类及功能_IT利刃出鞘的博客-CSDN博客

单例模式的写法?(难度:★★  频率:★★★★)

Java设计模式--单例模式--使用/详解/实例_IT利刃出鞘的博客-CSDN博客

手写双重检验单例(为什么用volatile,为什么两次if判断)(难度:★★★  频率:★★★)

Java设计模式--单例模式--使用/详解/实例_IT利刃出鞘的博客-CSDN博客

静态代理与动态代理区别?(难度:★★★  频率:★★★★★)

Java设计模式--代理模式--静态代理/动态代理--使用/详解/实例_IT利刃出鞘的博客-CSDN博客

字符流与字节流转化涉及的设计模式(难度:★★★  频率:★)

Java设计模式--实例_IT利刃出鞘的博客-CSDN博客

中间件

Redis

基本问题

Redis数据类型及其使用场景(难度:★★★  频率:★★★★★)

Redis--数据类型及其使用场景_IT利刃出鞘的博客-CSDN博客

 Redis的数据类型对应的底层结构是怎样的?(难度:★★★★  频率:★★★)

Redis--原理--数据类型的底层实现_IT利刃出鞘的博客-CSDN博客

Redis为什么很快?(难度:★★  频率:★★★★★)

Redis--原理--为什么性能高,速度快?_IT利刃出鞘的博客-CSDN博客

Redis是单线程为什么速度依然快?(难度:★★  频率:★★)

Redis--原理--为什么性能高,速度快?_IT利刃出鞘的博客-CSDN博客

Redis持久化AOF,RDB区别(难度:★★  频率:★★★★)

Redis--持久化_IT利刃出鞘的博客-CSDN博客

持久化:长久下来AOF文件会很大怎么办?(难度:★★★  频率:★★)

使用重写机制。见:Redis--重写机制(减小AOF文件大小)_IT利刃出鞘的博客-CSDN博客

Redis有哪些原子命令?(难度:★★★  频率:★)

  • Redis所有单个命令都是原子性的。

穿透、无底洞、雪崩 解决方案?(难度:★★★  频率:★★★★★)

Redis的发布订阅机制及其使用场景(难度:★★★★  频率:★★)

Redis--发布订阅--原理/使用场景_IT利刃出鞘的博客-CSDN博客

内存回收机制是怎样的?(或者说:淘汰策略)(难度:★★★  频率:★★★★)

Redis--内存回收机制(淘汰策略)_IT利刃出鞘的博客-CSDN博客

给一个key怎么知道是用的哪种数据类型?(难度:★  频率:★)

  • 用type命令。例如:type key1

为什么使用Redis,不用Memcache和MongoDB?(难度:★★  频率:★★)

Redis,Memcache,MongoDB三者的区别_IT利刃出鞘的博客-CSDN博客

Redis与数据库如何同步?各个方式的缺点是什么?(难度:★★★  频率:★★★)

Redis--保证缓存与数据库的一致性--解决方案_IT利刃出鞘的博客-CSDN博客

Redis很慢,如何排查及解决?(难度:★★★★  频率:★★)

Redis--变慢原因及排查方法_IT利刃出鞘的博客-CSDN博客

多线程操作同一个Key如何保证一致性?(微服务部署多个实例时如何保证一致性?)(难度:★★★★  频率:★)

Redis--多线程竞争同一key--解决方案_IT利刃出鞘的博客-CSDN博客

秒杀的时候怎么使用Redis?(难度:★★★★  频率:★★★)

Redis--秒杀的解决方案_IT利刃出鞘的博客-CSDN博客

布隆过滤器原理?什么时候会误判?(难度:★★★★  频率:★★★)

Redis--布隆过滤器--使用/原理/实例_IT利刃出鞘的博客-CSDN博客

用Redis如何实现延迟队列?(难度:★★★★  频率:★)

Redis--延迟队列_IT利刃出鞘的博客-CSDN博客

分布式锁

Redis做分布式锁如何处理超时时间?比如:超时时间是5秒,但要执行20秒,相当于没锁住;超时时间是20秒,但只需执行5秒(浪费)(难度:★★★★  频率:★★★)

Redis实现分布式锁集群中,如何处理主节点宕机这种情况?(难度:★★★★★  频率:★)

集群

集群种类有哪些?(难度:★★  频率:★)

  • 主从、哨兵、Cluster

集群如何进行扩展?(难度:★★★  频率:★)

Redis--集群--介绍/使用/注意事项_IT利刃出鞘的博客-CSDN博客

集群不支持事务,如何解决?(难度:★★★★  频率:★)

Redis--集群--介绍/使用/注意事项_IT利刃出鞘的博客-CSDN博客

主从集群中主节点死了以后,是否还能使用?如何解决?(难度:★★★  频率:★)

  • 可以使用哨兵部署,自动故障转移。

读写分离时读写分别在哪个节点(难度:★★  频率:★)

  • 在主节点上写,在从节点上读。

集群(Cluster)

集群(Cluster)如何进行节点通信?(难度:★★★★  频率:★★)

Redis集群--Cluster--节点通信--过程/原理_IT利刃出鞘的博客-CSDN博客

集群(Cluster)如何进行扩展(伸缩)?(难度:★★★  频率:★★)

Redis集群--Cluster--集群伸缩--过程/原理_IT利刃出鞘的博客-CSDN博客

集群(Cluster)如何进行故障转移?(难度:★★★★  频率:★★)

Redis集群--Cluster--故障转移--过程/原理_IT利刃出鞘的博客-CSDN博客

MQ

综合

RabbitMQ,RocketMQ和Kafka区别(难度:★★  频率:★★★★★)

RabbitMQ,RocketMQ,Kafka--区别/对比/选型_IT利刃出鞘的博客-CSDN博客

RabbitMQ

RabbitMQ有哪些交换器?RabbitMQ的交换器与队列的关系?(难度:★★  频率:★★★)

RabbitMQ--交换器类型/队列模式--使用/教程/详解_IT利刃出鞘的博客-CSDN博客

RabbitMQ的消息异常(丢失、重复、顺序、堆积)如何处理?(难度:★★★  频率:★★★★★)

RabbitMQ消息是否会过期?(难度:★★★  频率:★★)

RabbitMQ的消息什么时候会放到死信队列?(难度:★★★  频率:★)

RabbitMQ--死信队列/延迟队列--使用/原理_IT利刃出鞘的博客-CSDN博客

RabbitMQ的延迟队列是怎样的?(难度:★★★  频率:★★)

RabbitMQ--死信队列/延迟队列--使用/原理_IT利刃出鞘的博客-CSDN博客

RabbitMQ的集群有哪几种部署方式?(难度:★★  频率:★)

  • 多机多节点,单机多节点

Kafka

为什么Kafka性能很高(难度:★★★  频率:★★★)

Kafka--原理--为什么吞吐量大、速度快?_IT利刃出鞘的博客-CSDN博客

Kafka的消息异常(丢失、重复)如何处理?(难度:★★★  频率:★★★★)

Kafka不支持延迟队列,如果用到延迟队列,该如何实现?(难度:★★★★★  频率:★★★)

Kafka--延迟队列--使用/实现/原理_IT利刃出鞘的博客-CSDN博客

Shiro

Shiro怎么根据url对应权限,流程是什么?(难度:★★★  频率:★★★)

Shiro--整合jwt--通过url路径控制权限--使用/教程/实例_IT利刃出鞘的博客-CSDN博客

session存放在哪里?(难度:★★  频率:★)

一般放在Redis。见:Shiro--整合shiro-redis--使用/教程/实例_IT利刃出鞘的博客-CSDN博客

框架

Spring

IOC

Spring循环依赖解决方法及原理(难度:★★★★  频率:★★★★)

FactoryBean和BeanFactory区别(难度:★★★★  频率:★★)

BeanFactory和ApplicationContext区别?(难度:★★★★  频率:★)

Spring(SpringBoot)--ApplicationContext--使用/教程/原理_IT利刃出鞘的博客-CSDN博客

bean的生命周期是怎样的(难度:★★★  频率:★)

Spring--Bean生命周期--流程/原理--SpringBoot_IT利刃出鞘的博客-CSDN博客

Spring几种scope区别(难度:★★★  频率:★)

Spring--Bean的作用域(scope)--使用/详解_IT利刃出鞘的博客-CSDN博客

容器的生命周期是怎样的?(难度:★★★  频率:★)

容器生命周期--Lifecycle_IT利刃出鞘的博客-CSDN博客

AOP 

AOP有哪几种通知,如果方法执行报异常,哪个通知不会执行?(难度:★★★★  频率:★)

  • 前置,后置,环绕,返回,异常。若报异常,返回不会执行。见:这里

SpringAOP解决了什么问题?(难度:★★★  频率:★★)

Spring(SpringBoot)--AOP--使用场景/原理/实现方式_IT利刃出鞘的博客-CSDN博客

SpringAOP实际开发过什么功能?(难度:★★★  频率:★★★)

Spring(SpringBoot)--AOP--使用场景/原理/实现方式_IT利刃出鞘的博客-CSDN博客

AOP原理?(难度:★★★★  频率:★★★★★)

Spring(SpringBoot)--AOP的原理_IT利刃出鞘的博客-CSDN博客

事务 

Spring默认数据里隔离级别是什么?项目里用的哪个?(难度:★★★  频率:★★)

默认采用数据库的隔离级别。项目里就是用的默认的。见:MySQL--隔离级别--脏读/不可重复读/幻读--详解/实例_IT利刃出鞘的博客-CSDN博客

Spring事务失效场景?(难度:★★★★  频率:★★★★)

Spring(SringBoot)--事务失效--原因/场景/解决方案_IT利刃出鞘的博客-CSDN博客

Spring事务传播机制?(难度:★★★★  频率:★★)

Spring(SpringBoot)--事务传播机制--应用/实例/详解_IT利刃出鞘的博客-CSDN博客

其他

SpringBoot如何热部署?yml配置文件修改后是否也能及时更新?(难度:★★★  频率:★)

SpringBoot--热部署--方案_IT利刃出鞘的博客-CSDN博客

SpringBoot自动配置原理?(难度:★★★★★  频率:★)

SpringBoot原理--自动配置_IT利刃出鞘的博客-CSDN博客

SpringMVC

SpringMVC流程(难度:★★★★  频率:★★★)

SpringMVC原理--请求流程_IT利刃出鞘的博客-CSDN博客

servlet的过滤器、监听器、拦截器的执行顺序 (难度:★★★  频率:★★)

SpringMVC--过滤器/拦截器/AOP--区别/使用/顺序_IT利刃出鞘的博客-CSDN博客

SpringBoot

SpringBoot的启动流程?(难度:★★★★  频率:★★★★)

SpringBoot原理--启动流程_IT利刃出鞘的博客-CSDN博客

SpringBoot的动态代理默认用的哪个(cglib还是JDK)?(难度:★★★★  频率:★★★★)

SpringBoot 1.5.x:默认使用JDK代理,SpringBoot 2.x:默认使用CGLIB代理。
见:Spring--AOP--使用场景/原理/实现方式_IT利刃出鞘的博客-CSDN博客

怎么自己写SpringBootStarter(难度:★★★★  频率:★)

SpringBoot--自定义SpringBootStarter_IT利刃出鞘的博客-CSDN博客

MyBatis

MyBatis的#与$有什么区别?(难度:★★  频率:★★★★)

MyBatis--基础_IT利刃出鞘的博客-CSDN博客

MyBatis的原理?(Mapper是个接口,它的实现类在哪?)(难度:★★★★  频率:★★)

Spring(SpringBoot)--FactoryBean--使用/原理/详解_IT利刃出鞘的博客-CSDN博客

为什么MyBatis与Spring整合二级缓存会失效 ?(难度:★★★★  频率:★)

MyBatis原理--缓存机制_IT利刃出鞘的博客-CSDN博客

分布式

综合

分布式

CAP理论是什么?Zookeeper和Eureka分别放弃了什么?(难度:★★★  频率:★★★)

分布式锁实现方式(难度:★★★  频率:★★★★★)

分布式锁--实现方式/方案_IT利刃出鞘的博客-CSDN博客

2PC、3PC、TCC的区别及使用场景?(难度:★★★★  频率:★★)

分布式事务--理论_IT利刃出鞘的博客-CSDN博客

分布式session共享解决方案(难度:★★★  频率:★★)

分布式Session--方案_IT利刃出鞘的博客-CSDN博客

为什么微服务一定要有网关?(难度:★★★  频率:★)

项目软知识--微服务为什么要有网关_IT利刃出鞘的博客-CSDN博客

配置中心

如何把微服务的公共配置给拿出来?(难度:★★  频率:★)

  • 用spring.profiles.include,将公共的配置包含进去。

Nacos

Nacos如何续期?(难度:★★★  频率:★★)

Nacos支持AP还是CP?(难度:★★★  频率:★★)

  • 两者都支持。选一种即可

Zookeeper

Zookeeper注册中心挂了,服务还能否调用?(难度:★★★  频率:★★)

ZK分布式锁,leader节点宕机了,会发生什么?(难度:★★★★  频率:★)

  • 进行选举(过半选举)

RPC

RPC框架有哪些?SpringCloud是否是RPC框架?(难度:★★  频率:★)

  • Dubbo(阿里的)、gRPC(谷歌的),RMI(JAVA自带)、Thrift(Apache的)
  • SpringCloud不是rpc框架,它是分布式一整套解决方案,它的feign组件是rpc框架。

SpringCloud与Dubbo的区别?(难度:★★  频率:★)

Dubbo与SpringCloud区别_IT利刃出鞘的博客-CSDN博客

HTTP与RPC方式的区别?(难度:★★★  频率:★)

分布式--RPC_IT利刃出鞘的博客-CSDN博客

SpringCloud

主要是:服务注册、负载均衡、限流、降级、熔断。首先要看其原理。

服务注册(Eureka)

Eureka都挂了,服务还能否调用?(难度:★★★  频率:★★)

微服务关闭了,但请求还会进来,如何解决?(难度:★★★  频率:★)

SpringCloud Eureka--关闭微服务后请求还会进来_IT利刃出鞘的博客-CSDN博客

如何续期?如何自我保护?(难度:★★★  频率:★★)

SpringCloud原理--Eureka--续期/自我保护_IT利刃出鞘的博客-CSDN博客

熔断(Hystrix)(难度:★★★★★  频率:★)

负载均衡(Ribbon)(难度:★★★★★  频率:★)

​​​​​​SpringCloud原理--ribbon的负载均衡_IT利刃出鞘的博客-CSDN博客

SpringCloud限流用哪些组件?(难度:★★★  频率:★)

  • ribbon和hystrix

配置中心

配置中心的配置修改后,服务不重启可以获得最新配置吗?(难度:★★  频率:★)

  • 可以的。可以使用消息总线(Spring Cloud Bus)

降级

ELK

正排索引与倒排索引的区别?(难度:★★★  频率:★)

ElasticSearch--软知识_IT利刃出鞘的博客-CSDN博客

ES如何与数据库(如MySQL)同步数据?(难度:★★★  频率:★★★)

ElasticSearch--与MySQL同步_IT利刃出鞘的博客-CSDN博客

ES集群的健康状态,绿色、黄色、红色分别什么含义?(难度:★★★  频率:★★★)

ElasticSearch--排查集群健康状态是Red、Yellow的问题_IT利刃出鞘的博客-CSDN博客

综合

有没有遇到过什么比较复杂的问题,如何排查的?(难度:★★★★  频率:★★★★★)

Java后端--接口响应慢的排查方法及解决方案_IT利刃出鞘的博客-CSDN博客

OOM如何排查?(难度:★★★  频率:★★)

  • 使用jprofiler,查看OOM时的堆输出。

Java进程消失,如何排查?(难度:★★★  频率:★)

Java--进程突然消失--原因/排查方案_IT利刃出鞘的博客-CSDN博客

一个微服务起了多个实例,怎么让定时任务只在一个实例上执行?(难度:★★★  频率:★)

如何处理SpringMVC中的异常? (难度:★★★  频率:★★★)

从用户请求到数据返回的整个流程(难度:★★  频率:★★★)

用户请求到出现页面流程_IT利刃出鞘的博客-CSDN博客

IaaS,PaaS和SaaS是什么?(难度:★★  频率:★)

IaaS,Paas,SaaS,DaaS--区别_IT利刃出鞘的博客-CSDN博客

网站常见的安全漏洞有哪些?(难度:★★★  频率:★)

网站安全漏洞--大全_IT利刃出鞘的博客-CSDN博客

oauth2是干什么用的,流程是怎样的?(难度:★★★★★  频率:★★)

OAuth2--流程/原理_IT利刃出鞘的博客-CSDN博客

微服务关闭后一段时间内请求仍会过来,如何解决?(难度:★★★★★  频率:★★)

SpringCloud Eureka--关闭微服务后请求还会进来_IT利刃出鞘-CSDN博客

如何不停机更新服务?(难度:★★★★  频率:★)

对于单机项目:改个端口启动,然后修改Nginx配置,使Nginx路由到新服务。
对于微服务项目:将某个微服务的新版本启动,等注册中心刷新到之后,停掉旧版本微服务。

其他

HTTP(常见问题)

HTTPS的详细流程(难度:★★★★  频率:★★)

HTTPS--流程/原理_IT利刃出鞘的博客-CSDN博客

HTTP消息结构(难度:★★  频率:★)

HTTP--报文结构_IT利刃出鞘的博客-CSDN博客

HTTP状态码及其含义(难度:★★  频率:★★)

简记:正完重客服。(1xx:在处理请求;2xx:请求处理毕(成功);3xx:定向(需要附加操作);4xx:户端错误(导致服务器无法处理请求), 5xx:务器错误(服务器处理请求出错))

WebCocket,HTTP,Socket区别与联系?(难度:★★  频率:★)

Http,Socket,Websocket--区别_IT利刃出鞘的博客-CSDN博客

HTTP1.0和HTTP2.0的区别?(难度:★★  频率:★)

HTTP1.1与HTTP2.0的区别_IT利刃出鞘的博客-CSDN博客

Linux

Linux的5种IO模型(难度:★★★★  频率:★)

Linux--五种IO模型--详解_IT利刃出鞘的博客-CSDN博客

数据结构与算法

怎么判断一个链表有环?(难度:★★★  频率:★)

如何判断一个单链表是否有环? - 简书

常见排序算法的复杂度及稳定性(难度:★★★  频率:★★)

排序算法--Java实例/原理_IT利刃出鞘的博客-CSDN博客

常见查找算法的复杂度及稳定性(难度:★★★  频率:★★)

查找算法--Java实例/原理_IT利刃出鞘的博客-CSDN博客

网络

网络的5层协议的体系结构(难度:★  频率:★★★)

计算机网络--基础_IT利刃出鞘的博客-CSDN博客

TCP握手与挥手流程?为什么要三次?四次?(难度:★★★  频率:★★)

网络--TCP与UDP_IT利刃出鞘的博客-CSDN博客

TCP如何保证可靠传输?(难度:★★★  频率:★)

TCP协议如何保证可靠传输_IT利刃出鞘的博客-CSDN博客

服务器怎么主动向客户端主动推送?(难度:★★  频率:★)

  • 客户端去轮询(每秒查询一次);WebSocket;TCP长连接;UDP内网穿透

DNS劫持是怎样的?(难度:★★★  频率:★)

  • 劫持DNS服务器,修改此域名的解析结果为指定IP,导致对特定的网址不能访问或访问的是假网址,从而实现窃取资料或者破坏原有正常服务的目的。

Linux无法通过curl获得服务器主页数据如何排查?(难度:★★  频率:★)

  • 关防火墙、看host文件里边是否ip和域名绑定了

两个同网段Linux服务器在不安装客户端情况下如何传递文件?(难度:★  频率:★)

  • scp命令

Linux命令

查看文本文件头部n行。(难度:★  频率:★)

  • head -n 200 filename //200可替换为任一数字

查看文本文件末尾n行。(难度:★  频率:★)

  • tail -n 200 filename //200可替换为任一数字

查看文本文件行数。(难度:★  频率:★)

  • wc -l filename

Netty

Netty 是如何解决 TCP的拆包/粘包问题的?(难度:★★★  频率:★)

Netty--原理--TCP--粘包与拆包_IT利刃出鞘的博客-CSDN博客

编程题(难度:★★★  频率:★★)

Java笔试题编程题大全(有详细答案)_IT利刃出鞘的博客-CSDN博客

大数据

大数据量如何统计重复出现的次数?(难度:★★★★★  频率:★)

大数据处理方案_IT利刃出鞘的博客-CSDN博客

怎么实时统计订单?(难度:★★★★★  频率:★)

使用Storm框架。Storm--实时订单分析_IT利刃出鞘的博客-CSDN博客

要统计10分钟内订单的亏损,你会怎么设计?(难度:★★★★★  频率:★)

使用Storm的窗口模式

要问对方的问题

问一面(技术面)面试官(一般是入职后的直接领导)

  1. 工作时间,是否双休
    1. 上下班时间,中午休息多久(这个问研发比较准,hr可能知道的不准)
  2. 技术栈
    1. 是单体还是分布式。(这都2022年了,还不是分布式的话,不建议去了)
    2. 是否前后端分离。(这都2022年了,还不是前后端的话,不建议去了)
    3. 技术栈是否够新。如果技术栈里有下边这些玩意,不要去了,这都老掉牙了。
      1. 前端:struts、jsp (现在都用Vue、React、bootstrap这些了)
      2. 后端:ssh(现在都是ssm了)
    4. 是否用了小众技术。若有如下这些,不建议去了(屠龙术会了有什么用呢)。
      1. DDD(领域驱动设计)
  3. 问直接上级职业方向
    1. 问是偏技术还是偏业务。(我会选择偏技术的)
      1. 若上级偏技术
        1. 你能学到很多技术
        2. 组内代码风格会比较好,代码好维护
        3. 组内工作绩效偏技术,会有一些技术预研的机会
      2. 若上级偏业务
        1. 基本学不到技术
        2. 组内代码是能运行就行,难以维护
        3. 组内工作绩效偏向于工作量多少,基本没有技术预研机会
    2. 侧面了解上级的技术能力
      1. 组内是否有代码评审
    3. 偏技术的领导业务会不会差一点儿?
      1. 不一定,业务与技术没有必然联系。
  4. 网络管制
    1. 有的公司有网络管制。连博客都不让写。

问二面面试官(一般是部门领导)

  1. 部门研发人员组成
    1. 后端前端分别多少人。后端若低于5人,不太好。
    2. 后端是否都是用Java。(有的公司是PHP+Java,需要把PHP代码迁移到Java)
  2. 主要业务是怎样的

问hr

  1. 社保公积金
    1. 五险一金缴纳基数及比例(小公司可能按最低基数缴纳)
    2. 试用期是否缴纳五险一金(有差劲的公司试用期不缴纳)
  2. 几号发工资
    1. 大部分公司10号;少部分15号
  3. 试用期薪资发多少
    1. 大部分公司试用期前三个月发80%
  4. 年终奖保底几个月
    1. 不要问平均,问保底比较靠谱。举例:
      1. 朋友所在公司:入职前说平均2个月年终,结果只发了1个月
  5. 年假和全薪病假分别多少天
    1. 小公司一般没有全薪病假,可能病假期间薪资打折
  6. 一年几次调薪

相关文章

暂无评论

暂无评论...