Java面试技术总结-第二版
2021-11-04 15:59:04 1 举报
AI智能生成
java面试笔记、面经
作者其他创作
大纲/内容
技术基础
操作系统
进程和线程的区别?
进程调度算法有哪些?
5种IO模型?
select、poll和Epoll的区别?epoll底层使用的数据结构?
进程的通信方式有哪些?线程呢?
进程间的通信方式
线程间的通信方式
fork函数的作用?
协程的概念?
linux进程和线程
僵尸进程产生的原因?
孤儿进程产生的原因?
讲一下虚拟内存。虚拟内存和物理内存的关系是什么?
分段和分页讲一下?以及对应的场景?
讲一下用户态和内核态?所有的系统调用都会进入到内核态吗?
如何查看占用内存比较多的进程?
平常用什么linux命令比较多?如何打开文件并进行查找某个单词?怎么在某个目录下找到包含txt的文件?
用过Ping命令么?简单介绍一下。TTL是什么意思?
怎么判断一个主机是不是开放某个端口?
Linux文件系统?
硬链接和软链接?
中断的分类?
软中断和硬中断?
java基础
StringBuilder 和 StringBuffer
Java实现连续空间的内存分配? java的内存管理 对象的分配与释放
创建对象的方式有哪几种?
接口和抽象类有什么区别?
深拷贝和浅拷贝区别?
讲一讲封装,继承,多态(重要)。
泛型是什么?类型擦除?
如何实现静态代理?有啥缺陷?
动态代理的作用?在哪些地方用到了?(AOP、RPC 框架中都有用到)
JDK 的动态代理和 CGLIB 有什么区别?
谈谈对 Java 注解的理解,解决了什么问题?
Java 反射?反射有什么缺点?你是怎么理解反射的(为什么框架需要反射)?
内存泄露和内存溢出的场景。
内存泄露的场景
内存溢出场景
讲一下,强引用,弱引用,软引用,虚引用。
讲一下Java的NIO,AIO, BIO?
Java中finalize()方法的使用?
GC Root 对象有哪些
讲一下CopyOnWriteArrayList和CopyOnWriteArraySet?
说一下你最用的比较多得模式(我说的工厂模式和观察者模式),再实现一个单例模式。
单例模式代码(重要)
数据库
数据库三大范式
关系型数据库和非关系型数据库的区别?
char和varchar的区别
内连接、左连接和外连接?
MySQL 有哪些聚合函数?
说一下 MVCC
为什么要使用索引?
数据库原理相关补充
说一聚簇索引和非聚簇索引的有什么不同?
关于索引的各种轰炸。Mysql的索引,以及B+树与hash索引的区别,为什么不采用B树而采用B+树?B树和B+树的区别
红黑树和B+树的使用场景?
B+比B树更适合实际应用中操作系统的文件索引和数据库索引?
非聚簇索引一定会回表查询吗?
MySql的存储引擎,以及InnoDB和MyISAM的区别?
Mysql联合索引的最左匹配原则。给出联合索引(a,b),select *from table where a>0 and b>0,是否走索引,哪个走索引,哪个不走,以及从联合索引的底层结构去解释为什么?
讲一下最左前缀原则?
left join,right join,inner join,full join之间的区别
为什么InnoDB表必须有主键,并且推荐使用整形的自增主键?
间隙锁讲解一下?
数据库问题,说一下从你打开命令行到发送请求,mysql服务器的整个相应流程?
讲一下redo log,undo log,binlog?
MySQL 的数据如何恢复到任意时间点?
Mysql如何保证一致性?
数据库的主从复制?
Mysq的事务隔离级别有哪几种,说一下可重复读解决了什么问题?还有什么问题没解决?幻读如何解决的?幻读的具体场景?说一下间隙锁如何实施的?
Mysql一条sql非常慢,如何进行分析?
一张数据库表如果要删除大量的数据如何提高效率,如何做?
Spring
谈一谈Spring?
Spring中的设计模式
Spring AOP 和 IOC 的底层实现。
Spring AOP
Spring IOC
讲一讲Spring,Spring MVC,Spring Boot。(Spring Boot 了解不?和 Spring 啥区别?spring与springboot比较,SpringBoot的自动启动)
Spring与Spring boot比较
Spring Bean的生命周期
Spring Boot 的启动类源码有了解过吗?
用过哪些Spring注解,说一下@Autowired依赖注入的底层实现。(依赖注入的原理)
Spring的三级缓存
SpringMVC运行过程?
Spring事务的实现原理?
事务的特性(ACID)了解么?
详谈 Spring 对事务的支持
什么是 Spring 框架?
列举一些重要的Spring模块?
@RestController vs @Controller
谈谈自己对于 Spring IoC 和 AOP 的理解
Spring AOP 和 AspectJ AOP 有什么区别?
Spring 中的 bean 的作用域有哪些?
Spring 中的单例 bean 的线程安全问题了解吗?
@Component 和 @Bean 的区别是什么?
将一个类声明为Spring的 bean 的注解有哪些?
Spring 中的 bean 生命周期?
说说自己对于 Spring MVC 了解?
Spring 框架中用到了哪些设计模式?
Spring 管理事务的方式有几种?
Spring 事务中的隔离级别有哪几种?
Spring 事务中哪几种事务传播行为?
如何使用JPA在数据库中非持久化一个字段?
集合框架
ArrayList的扩容机制?
HashMap 的底层实现、JDK 1.8 的时候为啥将链表转换成红黑树?HashMap 的负载因子、HashMap 和 Hashtable 的区别?HashMap如何实现扩容?
ConcurrentHashMap的底层实现
有哪些集合是线程不安全的,又有哪些集合是线程不安全的?怎么解决呢?
什么是快速失败(fail-fast)、能举个例子吗?什么是安全失败(fail-safe)呢?
HashMap 多线程操作导致死循环问题
多线程
Java 怎么实现线程?
Java 线程通信的方式?
在多线程情况下如何保证线程安全
写一个死锁的例子
讲一下volatile关键字的作用
synchronized 作用,讲一讲底层实现。
ReetrantLock 和 synchronized 的区别
说说 synchronized 关键字和 volatile 关键字的区别
ReetrantLock实现方式
AQS原理
interrupt,interrupted与isInterrupted方法的区别? 如何停止一个正在运行的线程
线程池作用?Java 线程池有哪些参数?阻塞队列有几种?拒绝策略有几种?线程池的工作机制?
线程池通过 ThreadPoolExecutor 的方式进程创建
阻塞队列有几种
线程池的工作过程
常见线程池
线程池拒绝策略分别使用在什么场景?
线程死锁,解除线程死锁有哪几种方式?
ThreadLocal 是什么,应用场景是什么,原理是怎样的?
ThreadLocal类为什么要加上private static修饰?
ThreadLocal 有什么缺陷?如果线程池的线程使用ThreadLocal 会有什么问题?
介绍一下 Java 有哪些锁
乐观锁和悲观锁讲一下,哪些地方用到。
Mybatis
MyBatis 是如何进行分页的?分页插件的原理是什么?
简述 MyBatis 的插件运行原理,以及如何编写一个插件
MyBatis 执行批量插入,能返回数据库主键列表吗?
MyBatis 动态 sql 是做什么的?都有哪些动态 sql?能简述一下动态 sql 的执行原理不?
MyBatis 是如何将 sql 执行结果封装为目标对象并返回的?都有哪些映射形式?
MyBatis 能执行一对一、一对多的关联查询吗?都有哪些实现方式,以及它们之间的区别。
MyBatis 是否支持延迟加载?如果支持,它的实现原理是什么?
MyBatis 的 Xml 映射文件中,不同的 Xml 映射文件,id 是否可以重复?
MyBatis 中如何执行批处理?
MyBatis 都有哪些 Executor 执行器?它们之间的区别是什么?
MyBatis 中如何指定使用哪一种 Executor 执行器?
MyBatis 是否可以映射 Enum 枚举类?
MyBatis 映射文件中,如果 A 标签通过 include 引用了 B 标签的内容,请问,B 标签能否定义在 A 标签的后面,还是说必须定义在 A 标签的前面?
简述 MyBatis 的 Xml 映射文件和 MyBatis 内部数据结构之间的映射关系?
为什么说 MyBatis 是半自动 ORM 映射工具?它与全自动的区别在哪里?
设计模式
工厂设计模式
单例设计模式
代理模式在 AOP 中的应用
Spring AOP 和 AspectJ AOP 有什么区别?
模板方法
观察者模式
Spring 事件驱动模型中的三种角色
Spring 的事件流程总结
适配器模式
spring AOP中的适配器模式
spring MVC中的适配器模式
装饰者模式
Spring 框架中用到了哪些设计模式?
技术深度
JVM
讲一下 JVM 的内存结构
Minor gc 和 Full gc 的区别,详细介绍
方法区和永久代的关系?
JDK 1.8 HotSpot 的永久代为啥被彻底移除?有哪些常用参数?
主要进行 gc 的区域。永久代会发生 gc 吗?元空间呢?
各种垃圾回收算法和回收器,说出自己的理解。
zgc ?zgc vs g1?
如何对进行性能分析?会用到哪些命令?
Minor GC与Full GC分别在什么时候发生?
Minor GC 和 Full GC 有什么不同呢?
分代收集器
为什么 Survivor 分区不能是 0 个?
为什么 Survivor 分区不能是 1 个?
*为什么 Survivor 分区是 2 个?
请说明一下垃圾回收的优点以及原理
垃圾回收算法:
垃圾收集器
Redis
Redis介绍
Redis的原子性?
为什么要用缓存(Redis)?
Redis的单线程理解
Redis主从复制
Redis如何保证高可用?
redis的5种数据结构,redis的zset底层用的什么数据结构?跳表。介绍一下、画一下基本结构,搜索插入数据过程,时间复杂度。
redis为什么使用跳表而不是用红黑树?
Redis集群数据分区方案?
为什么redis集群的最大槽数是16384个?
缓存雪崩,缓存穿透,如何解决?
如何保证缓存与数据库双写时的数据一致性?
如何解决 Redis 的并发竞争 Key 问题?
分布式缓存常见的技术选型方案有哪些?
说一下 Redis 和 Memcached 的区别和共同点
缓存数据的处理流程是怎样的?
为什么要用 Redis/为什么要用缓存?
Redis 常见数据结构以及使用场景分析
Redis string介绍
Redis list介绍
Redis hash介绍
Redis sorted set 介绍
Redis bitmap介绍
Redis 单线程模型详解
Redis 没有使用多线程?为什么不使用多线程?
Redis6.0 之后为何引入了多线程?
Redis 给缓存数据设置过期时间有啥用?
Redis 是如何判断数据是否过期的呢?
过期的数据的删除策略了解么?
Redis 内存淘汰机制了解么?
Redis 持久化机制(怎么保证 Redis 挂掉之后再重启数据可以进行恢复)
Redis 事务
什么是缓存穿透?
什么是缓存雪崩?
主从复制
哨兵机制
分布式集群(Cluster)
集中式
Gossip
寻址分片
热点数据
会话维持 Session
分布式锁 SETNX
表缓存
Redis 4.0 对于持久化机制的优化
在Redis的配置文件中存在三种同步方式
创建快照的办法有如下几种
快照(snapshotting)持久化
网络
为什么网络要分层?
TCP/IP 4 层模型了解么?
HTTP 是哪一层的协议?http常见的状态码。
HTTP 和 HTTPS 什么区别?
讲一下对称加密算法和非对称加密算法?
HTTP2.0讲一下
HTTP报文详解?详细说一下请求报文,以及HTTP和TCP的区别
TCP三次握手的过程,以及三次握手的原因?
TCP四次挥手的过程,以及四次挥手的原因?
TCP滑动窗口是干什么的?TCP的可靠性体现在哪里?拥塞控制如何实现的?
滑动窗口
拥塞控制
TCP 使用超时重传来实现可靠传输
TCP和UDP有什么区别?及其适用的场景。
Mac 地址和 ip 地址的区别?既然有了 Mac 地址,为什么还要 ip 地址呢?
当你打开一个电商网站,都需要经历哪些过程?分别用到了什么协议。
电子邮件的发送过程?
DNS解析过程,DNS劫持了解吗?
GET和POST有什么不一样?
session和cookie的问题?
HTTP是不保存状态的协议,如何保存用户状态?
Arp协议?
DDos攻击了解吗?
SQL注入攻击?
分布式
如何理解分布式?
分布式锁的实现方式
讲一下负载均衡算法
分布式事务解决方案?
两阶段提交(2PC)
补偿事务(TCC)
消息事务
讲一下分布式和分布式一致性协议
CAP
BSAE
Paxos
为什么要分布式?
什么是负载均衡?
什么是高可用?可用性的判断标准是啥?
有哪些提高系统可用性的方法?
你使用过哪些组件或者方法来提升网站性能,可用性以及并发量
设计高可用系统的常用手段
现代互联网应用系统通常具有哪些特点?
谈谈你对微服务领域的了解和认识
谈谈你对 Dubbo 和 Spring Cloud 的认识(两者关系)
性能测试了解吗?说说你知道的性能测试工具?
对于一个单体应用系统,随着产品使用的用户越来越多,网站的流量会增加,最终单台服务器无法处理那么大的流量怎么办?
大表优化的常见手段
在系统中使用消息队列能带来什么好处?
再来谈我们的分布式消息队列
服务治理(SOA)
消息队列
Kafka
Kafka 是什么?主要应用场景有哪些?
和其他消息队列相比,Kafka的优势在哪里?
队列模型了解吗?Kafka 的消息模型知道吗?
队列模型:早期的消息模型
队列模型图
发布-订阅模型:Kafka 消息模型
订阅模型
主题架构
Kafka 的多副本机制了解吗?带来了什么好处?
Kafka 的多分区(Partition)以及多副本(Replica)机制有什么好处呢?
Zookeeper 在 Kafka 中的作用知道吗?
Kafka 如何保证消息的消费顺序?
生产者丢失消息的情况
消费者丢失消息的情况
架构图
Kafka 弄丢了消息怎么办?
RocketMQ
RocketMQ消息丢失的问题
RocketMQ同步落盘怎么才能快
RocketMQ消息堆积的问题
RocketMQ定时消息的实现
RocketMQ 顺序消息的实现
RocketMQ分布式消息的实现
RocketMQ消息的 push 实现
RocketMQ消息重复发送的避免
RocketMQ广播消费与集群消费
RocketMQ 不使用 ZooKeeper 作为注册中心的原因,以及自制的 NameServer 优缺点?
RocketMQ消息队列扫盲
RocketMQ消息队列为什么会出现?
消息队列能用来干什么?
消息队列能带来什么好处?
消息队列会带来副作用吗?
如何解决重复消费消息的问题?
如何解决消息的顺序消费问题?
解决消息堆积的问题 呢?
RocketMQ是什么?
队列模型和主题模型
队列模型
主题模型
RocketMQ中的消息模型
每个消费组在每个队列上维护一个消费位置,为什么呢?
为什么一个主题中需要维护多个队列?
RocketMQ的架构图
如何解决 顺序消费、重复消费
顺序消费
重复消费
消息堆积问题
回溯消费
RocketMQ 的刷盘机制
同步刷盘和异步刷盘
同步复制和异步复制
存储机制
什么是消息队列
为什么要用消息队列
使用消息队列带来的一些问题
常见的消息队列对比
Nginx
什么是Nginx
什么是反向代理?
数据库
何为读写分离?
如何实现读写分离?
主从复制原理了解么?
分库分表
何为分库?
何为分表?
什么情况下需要分库分表?
分库分表会带来什么问题呢?
分库分表有没有什么比较推荐的方案?
分库分表后,数据怎么迁移呢?
MyISAM 和 InnoDB 的区别
何为 ACID 特性呢?
数据事务的实现原理呢?
并发事务带来哪些问题?
事务隔离级别有哪些?
何为索引?有什么作用?
索引的优缺点
索引的底层数据结构
B 树& B+树两者有何异同呢?
Mysql如何保证一致性?
数据库的主从复制?
*Mysq的事务隔离级别有哪几种,说一下可重复读解决了什么问题?还有什么问题没解决?幻读如何解决的?幻读的具体场景?说一下间隙锁如何实施的?
*Mysql一条sql非常慢,如何进行分析?
微服务
Dubbo
什么是 Dubbo?
为什么要用 Dubbo?
Dubbo 架构中的核心角色有哪些?
Dubbo 中的 Invoker 概念了解么?
Dubbo 的工作原理了解么?
流程图
Dubbo 的 SPI 机制了解么? 如何扩展 Dubbo 中的默认实现?
那我们如何扩展 Dubbo 中的默认实现呢?
Dubbo 的微内核架构了解吗?
微内核架构
Dubbo 提供的负载均衡策略有哪些?
Dubbo 支持哪些序列化方式呢?
谈谈你对这些序列化协议了解?
Spring Cloud
Eureka:注册中心
Zuul:服务网关
Ribbon:负载均衡
Feign:服务调用
Hystix:熔断器
注册中心
注册中心的作用了解么?
服务提供者宕机后,注册中心会做什么?
监控中心的作用呢?
注册中心和监控中心都宕机的话,服务都会挂掉吗?
网关
你知道有哪些常见的网关系统?
数据图
为什么要网关?
RPC
何为 RPC?
RPC 的原理是什么?
RPC 解决了什么问题?
常见的 RPC 框架总结?
RPC 只是一种设计而已
RPC框架功能更齐全
ZooKeeper
ZooKeeper 由来
ZooKeeper 概览
ZooKeeper 典型应用场景
有哪些著名的开源项目用到了 ZooKeeper?
ZK Data model(数据模型)
znode(数据节点)
znode 4种类型
znode 数据结构
ACL(权限控制)
Watcher(事件监听器)
ZK 会话(Session)
ZooKeeper 集群
ZooKeeper 集群角色
ZooKeeper 集群中的服务器状态
ZooKeeper 集群为啥最好奇数台?
ZAB 协议和Paxos 算法
ZAB 协议介绍
ZAB 协议两种基本的模式:崩溃恢复和消息广播
ZK的理解与总结
什么是ZooKeeper
`Zookeeper` 架构
`ZAB` 中的三个角色
消息广播模式
崩溃恢复模式
Zookeeper的几个理论知识
ZK 数据模型
ZK 会话
ACL
Watcher机制
ZK 选举
技术广度
大数据
Hadoop介绍
MapReduce编程模型
Flink
Flink的状态机制?
Flink的容错机制?
流数据的一致性
屏障(Barriers)
状态(State)
异步快照(asynchronous state snapshot)
Flink的高可用?
Flink 程序在面对数据高峰期时如何处理?
请详细解释一下 Flink 的 Watermark 机制?
算法
一个深度为5的满二叉树的节点个数有多少个?
如何判断一个单链表是不是有环?
a = 1, b = 4, 如何交换,不能使用第三个变量。
红黑树和平衡二叉树?
如何实现LRU算法?
二叉搜索树的第k大节点?
给定一个链表,删除链表的倒数第 N 个节点,并且返回链表的头结点。
两个线程交替打印两个数组中的元素
创建3个线程,t1、t2、t3,让让t1在t2之前执行,t2在t3之前执行
三个线程交替打印ABC
生产者消费者模式
随机数产生转换(15到17)
二叉树的最小深度和二叉树的最大深度?
实现sqrt()
已知 sqrt (2)约等于 1.414,要求不用数学库,求 sqrt (2)精确到小数点后 10 位。
二叉树的前中后序遍历的非递归实现。
实现一个只包含+,-,*,/的数学运算
字典树的实现。
最长连续序列
Docker
介绍一下K8S、Docker技术,和传统虚拟机有什么不一样?
技术管理
如何谈低绩效员工
如何向上管理
如何向下管理
如何定制团队使命
项目上如何做风控
技术绩效如何设定目标?
技术架构
你是怎么如何做架构选型?
跨机房遇到的问题和解决方案
跨机房介绍
跨机房数据同步
跨机房本地缓存一致性
跨机房数据库主从
市面上这么多分布式方案如何选型?各个缺优点又是什么?
0 条评论
下一页