后端面试

1991/6/26 面试基础

# java基础

1、java的特点 2、java-与-c-的区别 3、面向对象和面向过程的区别 4、jdk-jre-jvm三者的关系
5、面向对象有哪些特性 6、java的基本数据类型有哪些 7、为什么不能用浮点型表示金额 8、什么是值传递和引用传递
9、了解java的包装类型吗-为什么需要包装类 10、自动装箱和拆箱 11、string-为什么不可变 12、string-stringbuffer-和-stringbuilder区别
13、什么是stringjoiner 14、string-类的常用方法有哪些 15、new-string-dabin-会创建几个对象 16、什么是字符串常量池
17、object常用方法有哪些 18、讲讲深拷贝和浅拷贝 19、两个对象的hashCode()相同,则 equals()是否也一定为 true 20、Java创建对象有几种方式
21、说说类实例化的顺序 22、equals和==有什么区别 23、常见的关键字有哪些 24、final, finally, finalize 的区别
25、final关键字的作用 26、方法重载和重写的区别 27、接口与抽象类区别 28、常见的Exception有哪些
29、Error和Exception的区别 30、运行时异常和非运行时异常(checked)的区别 31、throw和throws的区别 32、通过故事讲清楚NIO
33、BIO/NIO/AIO区别的区别 34、守护线程是什么 35、Java支持多继承吗 36、如何实现对象克隆
37、同步和异步的区别 38、阻塞和非阻塞的区别 39、Java8的新特性有哪些 40、什么是序列化和反序列化
41、如何实现序列化 42、transient关键字的作用 43、什么是反射 44、反射有哪些应用场景呢
45、讲讲什么是泛型 46、String为什么不可变 47、如何停止一个正在运行的线程 48、什么是跨域
49、跨域问题怎么解决呢

# Java集合

1.说说有哪些常见集合 2.ArrayList和LinkedList有什么区别 3.ArrayList的扩容机制了解吗 4.ArrayList怎么序列化的知道吗,为什么用transient修饰数组
5.快速失败(fail-fast)和安全失败(fail-safe)了解 6.有哪几种实现ArrayList线程安全的方法 7.CopyOnWriteArrayList了解多少 8.能说一下HashMap的数据结构吗
9.你对红黑树了解多少,为什么不用二叉树/平衡树 10.红黑树怎么保持平衡的知道 11.HashMap的put流程 12.HashMap怎么查找元素
13.HashMap的哈希/扰动函数是怎么设计的 14.为什么哈希/扰动函数能降hash碰撞 15.为什么HashMap的容量是2的倍数 16.如果初始化HashMap,传一个17的值new HashMap<>,它会怎么处理
17.你还知道哪些哈希函数的构造方法 18.解决哈希冲突有哪些方法 19.为什么HashMap链表转红黑树的阈值为8 20.扩容在什么时候呢?为什么扩容因子是0.75
21.那扩容机制了解 22.jdk1.8对HashMap主要做了哪些优化 23.你能自己设计实现一个HashMap 24.HashMap 是线程安全的吗,多线程下会有什么问题
25.有什么办法能解决HashMap线程不安全的问题呢 26.能具体说一下ConcurrentHashmap的实现吗 27.HashMap 内部节点是有序的 28.讲讲 LinkedHashMap 怎么实现有序
29.讲讲 TreeMap 怎么实现有序的 30.讲讲HashSet的底层实现

# 并发编程

1.并行跟并发有什么区别 2.说说线程有几种创建方式 3.为什么调用start()方法时会执行run()方法,那怎么不直接调用run()方法 4.线程有哪些常用的调度方法
5.线程有几种状态 6.什么是线程上下文切换 7.守护线程了解吗 8.线程间有哪些通信方式
9.ThreadLocal是什么 10.你在工作中用到过ThreadLocal吗 11.ThreadLocal怎么实现的呢 12.ThreadLocal 内存泄露是怎么回事
13.ThreadLocalMap的结构了解吗 14.ThreadLocalMap怎么解决Hash冲突的 15.ThreadLocalMap扩容机制了解吗 16.父子线程怎么共享数据
17.说一下你对Java内存模型(JMM)的理解 18.说说你对原子性、可见性、有序性的理解 19.那说说什么是指令重排 20.指令重排有限制吗?happens-before了解吗
21.as-if-serial又是什么?单线程的程序一定是顺序的吗 22.volatile实现原理了解吗 23.synchronized用过吗,怎么使用 24.synchronized的实现原理
25.除了原子性,synchronized可见性,有序性,可重入性怎么实现 26.锁升级,synchronized优化了解吗 27.说说synchronized和ReentrantLock的区别 28.AQS了解多少
29.ReentrantLock实现原理 30.ReentrantLock怎么实现公平锁的 31.CAS呢?CAS了解多少 32.CAS 有什么问题,如何解决
33.Java有哪些保证原子性的方法,如何保证多线程下i++ 结果正确 34.原子操作类了解多少 35.AtomicInteger 的原理 36.线程死锁了解吗,该如何避免
37.那死锁问题怎么排查 38.CountDownLatch(倒计数器)了解吗 39.CyclicBarrier(同步屏障)了解吗 40.CyclicBarrier和CountDownLatch有什么区别
41.Semaphore(信号量) 42.Exchanger 了解吗 43.什么是线程池 44.能说说工作中线程池的应用吗
45.能简单说一下线程池的工作流程吗 46.线程池主要参数有哪些 47.线程池的拒绝策略有哪些 48.线程池有哪几种工作队列
49.线程池提交execute和submit有什么区别 50.线程池怎么关闭知道吗 51.线程池的线程数应该怎么配置 52.有哪几种常见的线程池
53.能说一下四种常见线程池的原理 54.线程池异常怎么处理知道吗 55.能说一下线程池有几种状态吗 56.线程池如何实现参数的动态修改
57.线程池调优了解吗 58.你能设计实现一个线程池吗 59.单机线程池执行断电了应该怎么处理 60.Fork/Join框架了解吗
61.多线程锁的升级原理是什么

# JVM

1.讲一下JVM内存结构 2.Java对象的定位方式 3.说一下堆栈的区别 4.什么情况下会发生栈溢出
5.类文件结构 6.什么是类加载,类加载的过程 7.什么是双亲委派模型 8.为什么需要双亲委派模型
9.什么是类加载器,类加载器有哪些 10.类的实例化顺序 11.如何判断一个对象是否存活 12.可作为GC Roots的对象有哪些
13.什么情况下类会被卸载 14.强引用、软引用、弱引用、虚引用是什么,有什么区别 15.GC是什么,为什么要GC 16.Minor GC 和 Full GC的区别
17.内存的分配策略 18.Full GC 的触发条件 19.垃圾回收算法有哪些 20.有哪些垃圾回收器
21.常用的 JVM 调优的命令都有哪些 22.对象头了解吗 23.main方法执行过程 24.对象创建过程
25.如何排查 OOM 的问题 26.什么是内存溢出和内存泄露 27.说一下类加载的执行过程 28.怎么判断对象是否可以被回收
29.JVM有哪些垃圾回收器 30.详细介绍一下 CMS 垃圾回收器 31.常用的JVM调优的参数都有哪些 32.简述分代垃圾回收器是怎么工作的
33.新生代垃圾回收器和老生代垃圾回收器都有哪些,有什么区别 34.说一下 jvm 运行时数据区

# MySQL

1. 什么是内连接,外连接,交叉连接,笛卡尔积呢 2. 那MySQL 的内连接,左连接,右连接有有什么区别 3.说一下数据库的三大范式 4.varchar与char的区别
5.blob和text有什么区别 6.DATETIME和TIMESTAMP的异同 7.MySQL中in和exists的区别 8.MySQL里记录货币用什么字段类型比较好
9.MySQL怎么存储emoji😊 10.drop,delete与truncate的区别 11.UNION与UNION ALL的区别 12.count(1),count(*) 与 count(列名) 的区别
13.一条SQL查询语句的执行顺序 14.说说MySQL的基础架构 15.一条 SQL 查询语句在 MySQL 中如何执行的 16.MySQL有哪些常见存储引擎
17.那存储引擎应该怎么选择 18.InnoDB和MylSAM主要有什么区别 19.MySQL日志文件有哪些,分别介绍下作用 20.binlog和redo log有什么区别
21.一条更新语句怎么执行的 22.那为什么要两阶段提交 23.redo log怎么刷入磁盘的 24.慢SQL如何定位
25.有哪些方式优化慢SQL 26.怎么看执行计划(explain),其中各个字段的含义 27.简单说一下索引的分类 28.为什么使用索引会加快查询
29.创建索引有哪些注意点 30.索引哪些情况下会失效 31.索引不适合哪些场景 32.索引是不是建的越多越好
33.MySQL索引用的什么数据结构 34.那一棵B+树能存储多少条数据 35.为什么要用 B+ 树,而不用普通二叉树 36.为什么用 B+ 树而不用 B 树
37.Hash 索引和 B+ 树索引区别是什么 38.聚簇索引与非聚簇索引的区别 39.回表了解吗 40.覆盖索引
41.什么是最左前缀原则,最左匹配原则 42.什么是索引下推优化 43.MySQL中有哪几种锁 44.InnoDB里的行锁实现
45.意向锁是什么 46.MySQL的乐观锁和悲观锁 47.MySQL 遇到过死锁问题 48.MySQL 事务的四大特性
49.那ACID靠什么保证 50.事务的隔离级别有哪些,MySQL 的默认隔离级别是什么 51.什么是幻读,脏读,不可重复读 52.事务的各个隔离级别都是如何实现的
53.MVCC了解吗,怎么实现 54.数据库读写分离 55.读写分离的分配怎么实现 56.主从复制原理
57.主从同步延迟怎么处理 58.你们是怎么分库的 59.你们是怎么分表的 60.水平分表有哪几种路由方式
61.不停机扩容怎么实现 62.常用的分库分表中间件有哪些 63.分库分表会带来什么问题 64.百万级别以上的数据如何删除
65.百万千万级大表如何添加字段 66.MySQL 数据库 cpu 飙升的话,要怎么处理 67.一张自增表里面总共有 7 条数据,删除了最后 2 条数据,重启 mysql 数据库,又插入了一条数据,此时 id 是几 68.如何获取当前数据库版本

# Redis

1.什么是 redis,它能做什么 2.redis的优缺点 3.Memcache与redis的区别 4.redis 有哪八种数据类型,有哪些应用场景
5.redis中String类型的实现原理 6.Redis为何直接以内存存储 7.Redis如何进行内存优化 8.Redis如何实现分布式锁
9.Redis高性能的原因 10.redis 的持久化机制有哪些,优缺点说说 11. Redis的过期键的删除策略 12.Redis的同步机制
13.Redis的内存淘汰策略 14.缓存击穿、缓存穿透、缓存雪崩 15.Redis如何进行缓存降级 16.Redis如何进行缓存更新
17.Redis 的热 key 问题怎么解决 18. Redis的内存满了怎么办 19.Redis 有哪些部署方式 20.Redis的哨兵模式
21.哨兵选举过程是怎么样的 22.Redis的Pipeline管道 23.Redis如何进行性能优化 24.Redis的数据一致性问题
25.Redis如何实现事务 26.Redis如何实现集群 27.cluster集群模式是怎么存放数据的 28.cluster的故障恢复是怎么做的
29.Redis的脑裂问题 30.Redis如何实现异步队列 31.Redis如何实现延迟队列 32.Redis中哈希槽的概念
33.Redis的应用场景 34.Redis实现签到表功能 35.Redis中zset的底层实现 36.主从同步原理是怎样的
37.无硬盘复制是什么 38.听说 redis 6.0之后又使用了多线程,不会有线程安全的问题吗

# Spring

1.Spring是什么,特性,有哪些模块 2.Spring有哪些模块 3.Spring有哪些常用注解 4.Spring 中应用了哪些设计模式
5.说一说什么是IOC,什么是DI 6.简单说一下Spring IOC的实现机制 7.说说BeanFactory和ApplicantContext 8.Spring容器启动阶段会干什么
9.说一下Spring Bean生命周期 10.Bean定义和依赖定义有哪些方式 11.有哪些依赖注入的方法 12.Spring有哪些自动装配的方式
13.Spring 中的 Bean 的作用域有哪些 14.Spring 中的单例 Bean 会存在线程安全问题吗 15.说说循环依赖 16.那Spring怎么解决循环依赖的呢
17.为什么要三级缓存,⼆级不⾏吗 18.@Autowired的实现原理 19.说说什么是AOP 20.说说你平时有用到AOP吗
21.说说JDK 动态代理和 CGLIB 代理 22.说说Spring AOP 和 AspectJ AOP 区别 23.Spring 事务的种类 24.Spring 的事务隔离级别
25.Spring 的事务传播机制 26.声明式事务实现原理了解吗 27.声明式事务在哪些情况下会失效 28.Spring MVC 的核心组件
29.Spring MVC 的工作流程 30.SpringMVC Restful风格的接口的流程是什么样的 31.介绍一下SpringBoot,有哪些优点 32.SpringBoot自动配置原理了解吗
33.如何自定义一个SpringBoot Srarter 34.Springboot 启动原理

# Kafka

1.什么是消息中间件 2.kafka是什么,有什么作用 3.kafka的架构是怎么样的 4.Kafka的Replicas是怎么管理的
5.如何确定当前能读到哪一条消息 6.生产者发送消息有哪些模式 7.发送消息的分区策略有哪些 8.Kafka支持读写分离吗,为什么
9.Kafka是怎么去实现负载均衡的 10.Kafka的负责均衡会有什么问题 11.Kafka的可靠性是怎么保证 12.Kafka的消息消费方式有哪些
13.分区再分配是做什么的,解决了什么问题 14.副本leader是怎么选举的 15.分区数越多越好吗,吞吐量就会越高吗 16.如何增强消费者的消费能力
17.消费者与topic的分区分配策略有哪些 18.kafka控制器是什么,有什么作用 19.kafka控制器是怎么进行选举的 20.kafka为什么这么快
21.什么情况下kafka会丢失消息 22.Kafka消息是采用Pull模式,还是Push模式 23.kafka 有几种数据保留的策略 24.kafka 同时设置了 7 天和 10G 清除数据,到第五天的时候消息达到了 10G,这个时候 kafka 将如何处理
25.什么情况会导致 kafka 运行变慢 26.使用 kafka 集群需要注意什么

# RabbitMQ

1.什么是RabbitMQ 2.RabbitMQ的组件 3.什么时候使用MQ 4.RabbitMQ的优缺点
5.RabbitMQ 有哪些重要的角色 6.RabbitMQ 有哪些重要的组件 7.RabbitMQ中 vhost 的作用是什么 8.RabbitMQ的消息是怎么发送的
9.RabbitMQ怎么实现延迟消息队列 10.RabbitMQ集群有什么用 11.RabbitMQ节点的类型有哪些 12.RabbitMQ集群搭建需要注意哪些问题
13.RabbitMQ每个节点是其他节点的完整拷贝吗 14.RabbitMQ集群中唯一一个磁盘节点崩溃了会发生什么情况 15.RabbitMQ对集群节点停止顺序有要求吗 16.Exchange 类型
17.消息丢失 18.消息重复消费怎么处理 19.消费端怎么进行限流 20.什么是死信队列
21.说说pull模式 22.怎么设置消息的过期时间

# RocketMQ

1.为什么要使用消息队列 2.为什么要选择RocketMQ 3.RocketMQ有什么优缺点 4.消息队列有哪些消息模型
5.那RocketMQ的消息模型呢 6.消息的消费模式了解吗 7.RoctetMQ基本架构了解吗 8.那能介绍一下这四部分吗
9.如何保证消息的可用性/可靠性/不丢失呢 10.如何处理消息重复的问题呢 11.怎么处理消息积压 12.顺序消息如何实现
13.如何实现消息过滤 14.延时消息了解吗 15.怎么实现分布式消息事务的?半消息? 16.死信队列知道吗
17.如何保证RocketMQ的高可用 18.说一下RocketMQ的整体工作流程 19.为什么RocketMQ不使用Zookeeper作为注册中心呢 20.Broker是怎么保存数据的呢
21.说说RocketMQ怎么对文件进行读写的 22.消息刷盘怎么实现的 23.能说下 RocketMQ 的负载均衡是如何实现的 24.RocketMQ消息长轮询了解吗

# Doubbo

1.什么是 Dubbo 2.为什么要用 Dubbo 3.什么是分布式 4.为什么要分布式
5.Dubbo架构中的核心角色有哪些 6.Dubbo 中的 Invoker 概念 7.Dubbo 的工作原理 8.Dubbo 的 SPI 机制了解么,如何扩展 Dubbo 中的默认实现
9.Dubbo 的微内核架构了解吗 10.关于Dubbo架构的一些自测小问题 11.什么是负载均衡 12.Dubbo 提供的负载均衡策略有哪些
13.Dubbo 支持哪些序列化方式 14.谈谈你对这些序列化协议了解

# Zookeeper

1.Zookeeper 是什么,能做什么 2.说说 Zookeeper 的数据结构 3.Znode里面都存储了什么 4.Zookeeper 的系统架构是怎么样的
5.那你继续给我讲讲 ZAB 协议吧 6.Zookeeper初始化是如何进行Leader选举的 7.如果Leader挂了,进入崩溃恢复,怎么选举Leader 8.说说Wather监听机制和它的原理
9.Zookeeper有哪些特性 10.Zookeeper 如何识别请求的先后顺序 11.选举 leader 后是怎么进行数据同步的 12.Zookeeper 会有数据不一致的情况发生吗
13.zookeeper 都有哪些功能 14.zookeeper 有几种部署模式 15.zookeeper 怎么保证主从节点的状态同步

# Elasticsearch

1.ES介绍 2.ES可以做什么 3.ES特点 4.ES调优
5.ES的倒排索引是什么 6.倒排索引的生成过程 7.ES是如何实现 master 选举的 8.ES对于大数据量(上亿量级)的聚合如何实现
9.解释一下ESNode 10.ES中分片是什么 11.分片相关配置 12.分片的注意事项
13.ES中的分析器是什么 14.ES中分析器由哪几部分组成 15.在并发情况下,ES如果保证读写一致 16.ES有关的主要可用字段数据类型
17.ES中的集群、节点、索引、文档、类型是什么 18.详细描述一下ES索引文档的过程 19.详细描述一下ES搜索的过程 20.ES在部署时,对Linux的设置有哪些优化方法
21.详细描述一下ES更新和删除文档的过程 22.是否了解字典树 23.ES更新数据的执行流程

# 微服务

1.什么是微服务 2.微服务带来了哪些挑战 3.现在有哪些流行的微服务解决方案 4.说下微服务有哪些组件
5.注册中心是用来干什么的 6.SpringCloud可以选择哪些注册中心 7.说下Eureka、ZooKeeper、Nacos的区别 8.Eureka实现原理了解吗
9.Eureka Server怎么保证高可用 10.为什么微服务需要配置中心 11.SpringCloud可以选择哪些配置中心 12.Nacos配置中心的原理了解吗
13.Nacos配置中心长轮询机制 14.HTTP和RPC的区别 15.那Feign和Dubbo的区别 16.说一下Fegin
17.为什么Feign第一次调用耗时很长 18.Feign怎么实现认证传递 19.Fegin怎么做负载均衡-Ribbon 20.说说有哪些负载均衡算法
21.什么是服务雪崩 22.什么是服务熔断、服务降级 23.Hystrix怎么实现服务容错 24.Sentinel怎么实现限流的
25.什么是API网关 26.SpringCloud可以选择哪些API网关 27.Spring Cloud Gateway核心概念 28.为什么要用微服务链路追踪
29.SpringCloud可以选择哪些微服务链路追踪方案 30.Seata支持哪些模式的分布式事务 31.Seata的实现原理 32.你们的服务怎么做监控和告警
33.你们的服务怎么做日志收集

# 操作系统

1.操作系统的四个特性 2.进程线程 3.并发和并行 4.多线程相较单线程的好处
5.什么是协程 6.线程和协程有什么区别呢 7.进程通信 8.什么是死锁
9.死锁怎么产生,怎么避免 10.进程调度策略有哪几种 11.进程有哪些状态 12.操作系统里的内存碎片怎么理解
13.虚拟内存 14.什么是分页 15.什么是分段 16.分页和分段有什区别
17.页面置换算法 18.用户态和内核态 19.什么是缓冲区溢出,有什么危害 20.IO多路复用

# 计算机网络

1.网络分层结构 2.三次握手 3.两次握手可以吗 4.四次挥手
5.第四次挥手为什么要等待2MSL 6.为什么是四次挥手 7.TCP有哪些特点 8.说说TCP报文首部有哪些字段,其作用又分别是什么
9.TCP和UDP的区别 10.TCP 和 UDP 分别对应的常见应用层协议有哪些 11.TCP的粘包和拆包 12.说说TCP是如何确保可靠性的呢
13.说下TCP的滑动窗口机制 14.详细讲一下拥塞控制 15.HTTP协议的特点 16.HTTP报文格式
17.HTTP状态码有哪些 18.HTTP 协议包括哪些请求 19.HTTP状态码301和302的区别 20.URI和URL的区别
21.POST和GET的区别 22.如何理解HTTP协议是无状态的 23.HTTP长连接和短连接 24.HTTP 如何实现长连接
25.HTTP长连接在什么时候会超时 26.HTTP1.1和 HTTP2.0的区别 27.HTTPS与HTTP的区别 28.什么是数字证书
29.HTTPS原理 30.DNS 的解析过程 31.浏览器中输入URL返回页面过程 32.什么是cookie和session
33.cookie和session的区别 34.什么是对称加密和非对称加密 35.说说 WebSocket与socket的区别 36.ARP协议的工作过程
37.ICMP协议的功能 38.什么是DoS,DDoS,DRDoS攻击 39.什么是CSRF攻击,如何避免 40.什么是XSS攻击
41.如何解决XSS攻击问题 42.防盗链 43.说下ping的原理 44.如何实现跨域