JAVA面试复习导引

JAVA面试复习导引

技术

算法题

常规数据结构

红黑树
数组
链表
栈、队列
树
图
集合:list、set、map

算法数据结构

前缀树
优先级队列
单调栈
并查集
差分数组
二叉搜索树
二进制

算法

排序
动态规划
DFS、BFS
滑动窗口
二分查找
双指针
回溯

spring

springboot启动过程
bean的生命周期
循环依赖
springMVC的流程
常用的扩展点
springboot自动配置的原理
拦截器和aop
DI和IOC的理解
AOP的实现原理
用到的设计模式
常用的注解

JAVA和JVM

JVM的组成部分和功能
hashmap的结构和流程
ConcurrentHashMap线程安全的原理
线程池的主要参数
垃圾回收器的工作原理
synchronized和ReentrantLock的原理和对比
volitale的作用和使用
jvm内存调优
Arthas的原理和使用

MYSQL

sql语法
b+树结构
b+树和b树的对比
sql执行流程
mysql的事务隔离级别
mysql的并发问题及解决
mysql的主从同步的原理
mysql主从不一致的问题及解法
索引失效的场景
AICD和MVCC
innoDb是如何实现事务的
深分页的问题和解法
分库分表的深分页
分库分表的应用
mysql与其他存储的对比

redis

redis常用的数据结构
redis底层的数据结构
redis常用数据结构的使用场景
redis如何实现分布式锁
redis的持久化方案
redis的高可用方案
redis是单线程的吗?为什么用单线程?
redis为什么速度快
redis的热key
redis的大key
redis和mysql的一致性

RocketMq

数据存储的结构
组成部分
如何保证消息有序
如何保证消息不丢
如何保证性能
消息积压怎么处理
分布式事务

Kafka

消息队列的优点与缺点
性能高的原因
消息存储
与rocketMq的对比

Dubbo

dubbo的组成部分
dubbo的工作流程
dubbo的负载均衡

Hbase

面向列的存储
组成部分
rowkey的设计
优缺点分析

zookeeper

工作原理
最终一致性
zab协议
节点角色
watch监听机制
临时节点
分布式锁的实现

ElasticSearch

组成部分
倒排索引的概念及实现
常用的中文分词器
查询的流程
深分页

sentinel

工作原理
常用算法
集群限流

quaterz

实现原理
时间轮
时间轮的问题及优化

设计模式

常用的设计模式
使用设计模式的优缺点

项目

梳理自己每一个项目的内容,包括但不限于

 1. 系统的功能设计
 2. 系统的高性能设计
 3. 系统的高可用设计
 4. 系统的高可扩展设计
 5. 系统的不足和未来发展方向
 6. 系统的竞品分析
 7. 系统的治理
 8. 系统的核心技术指标
 9. 系统的难点和解决办法 
 10.项目的人员组成及自己负责的部分
 11.项目的迭代节奏和规划 

高频问题

classLoader
分库分表的策略、问题和解决方法
SPI原理以及和RPC的对比
热部署的原理
对SAAS的理解
如何做系统架构设计
常用的缓存淘汰算法
对低代码系统的理解
注解失效的原因
消息队列的推拉模式及选择
threadlocal的原理及问题
怎么做的服务治理
G1垃圾回收器的原理
springboot如何优雅停机
系统是怎么做发布流程的
微服务的组成部分
缓存的穿透、击穿、雪崩
FAAS的特点及触发模式
怎样设计对外的接口
状态机的实现
NIO和BIO的区别
零拷贝的实现
工作流引擎
分布式事务
粘包
延迟队列的实现
cpu高的原因及排查定位
消息队列怎么做有序消费

代码考察

  • sqart(int x)
  • 设想你有个呼叫中心,员工分成三个层级:接线员、主管和经理。
    客户来电会先分配给有空的接线员。
    若接线员处理不了,就必须将来电往上转给主管。
    若主管没空或是无法处理,则将来电往上转给经理。
    请设计这个问题的类和数据结构,并实现一个dispatchCall()方法,将客户来电分配给第一个有空的员工。
  • k个一组翻转链表
  • 单链表的翻转
  • 给你一个大小为 m x n 的二进制矩阵 grid 。
    岛屿 是由一些相邻的 1 (代表土地) 构成的组合,这里的「相邻」要求两个 1 必须在 水平或者竖直的四个方向上 相邻。你可以假设 grid 的四个边缘都被 0(代表水)包围着。
    岛屿的面积是岛上值为 1 的单元格的数目。
    计算并返回 grid 中最大的岛屿面积。如果没有岛屿,则返回面积为 0 。
  • LRU缓存淘汰算法
  • 连续子数组的最大和
  • 升序数组,移动k个数字到开头,求k
  • 链表中的两数相加
  • 给定一个单链表 L 的头节点 head ,单链表 L 表示为:
    L0 → L1 → … → Ln-1 → Ln
    请将其重新排列后变为:
    L0 → Ln → L1 → Ln-1 → L2 → Ln-2 → …
    不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。
  • 三个线程依次打印ABC
  • 52张扑克牌中,拿出5张牌,是顺子的概率
  • 给你一个整数 n ,按字典序返回范围 [1, n] 内所有整数。
  • 在这里插入图片描述
  • 写一个扫雷地图 int[][] initMap(int m, int n, int k);
    m行,n列,其中有k个雷;要求每个点上有没有雷是随机的,每个点上如果没有雷的话,要标记它周边雷的数量
  • Range模块是跟踪数字范围的模块。设计一个数据结构来跟踪表示为 半开区间 的范围并查询它们。
  • 在这里插入图片描述
  • List item
  • 给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。
  • 给定一个字符串s,找到最长的没有重复字符的子串的长度。
  • 给定一个由不同整数组成的数组candidates和一个目标整数target,找到所有唯一组合的列表,这些组合的和等于目标值target。
  • 一个数能被它的每一位整除,则为自除数
  • 给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target ,找出 candidates 中可以使数字和为目标数 target 的 所有 不同组合 ,并以列表形式返回。你可以按 任意顺序 返回这些组合。
    candidates 中的 同一个 数字可以 无限制重复被选取 。如果至少一个数字的被选数量不同,则两种组合是不同的。
    对于给定的输入,保证和为 target 的不同组合数少于 150 个。
  • 给定一个不含重复数字的数组,返回所有可能的全排列
  • 给n个人发m元红包,给出一个方案
  • 给一个整数数组arr,找出数组中的一个山峰下标
    山峰下标i : arr[i - 1] < arr[i] > arr[i + 1]
    数组左右两边可以认为是最小值,题目保证至少有一个山峰。
    1 2 4 3 7 8 8 =》 2
  • 给你两个字符串 s1 和 s2 ,写一个函数来判断 s2 是否包含 s1 的排列。如果是,返回 true ;否则,返回 false 。
  • 给你一个字符串 s,找到 s 中最长的回文子串。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值