Java 基础
- Java基本数据类型
- Java hashmap新老版本实现,put,get ,解决哈希冲突,rehash问题,加载因子,为什么 hashmap中数组的长度是2的指数次方? 链表转红黑树条件,深入红黑树,为什么查找快,时间复杂度,红黑树插入删除结点,红黑树与平衡二叉树的区别及优势
- 多线程:原子性,可见性,有序性
- Java 新特性,lambda表达式等
- 引用传递和值传递
- String 和StringBuffer,StringBuilder
- 基本类型与包装类型,如Integer i=20; int i=20; 两个i是否相等
- 集合,linkedList和Arraylist的区别,list 和set的区别
- 抽象类与接口的区别
- 锁的问题。 valotile, synchronized 和reentrantLock区别
- 线程池的核心参数,线程池种类,创建线程方法,创建线程池方法,线程的生命周期
- 类加载过程,常用类加载器,双亲委派模型
JVM基础
- JVM 内存模型
- 垃圾回收算法
- 年轻代老年代回收,年轻代的两个存活区是否有区别
- 内存溢出和内存泄漏区别
- 内存屏障
数据结构
- 排序:8大排序算法的手动实现,时间复杂度,空间复杂度要熟练于心
- 单链表与双链表,反转链表,判断是否有环,找出链表的公共结点,两个链表的合并,K个链表的合并
- 队列与栈,两个队列实现栈,两个栈实现队列
- 堆的建立与调整,堆排序,海量数据区TopK元素问题
- 树:二叉树,平衡二叉树,红黑树,B+树。常见问题如二叉树查找,平衡二叉树的插入与删除,红黑树特点,B+树与平衡二叉树 的区别
常见算法
- 斐波拉起数列,青蛙跳台阶,爬楼梯等变种题
- 字符串问题:最长公共子串,最大连续公共子序列
- 数组找中位数,找元素和为指定值的子元素,找出满足条件的数(如左边的数都小于该元素值,右边的数都大于元素值)
- 动态规划问题:找零钱,连续递增子序列
网络
-
四七层网络模型 tcp与udp区别,端口号,tcp流量控制,拥塞控制,eagle算法,三次握手与四次挥手,为什么不是2次握手和3次挥手
-
http与tcp区别,http端口,1.0,1.1 ,2.0的区别 https,默认端口,加密算法种类
操作系统
进程与线程区别
线程通信方式,进程的通信方式有哪些
死锁及解决,银行家算法,哲学家进餐问题
同步与非同步,阻塞与非阻塞的区别
ArrayBlockingQueue与LinkedBlockingQueue区别
wait,notify,notifyAll方法为什么定义在Object类中
数据库
基本语句书写
left join,right join,inner join区别,默认的是哪种
count和sum的区别
mysql存储引擎种类,区别,索引的种类及区别,默认是什么存储引擎,什么索引,什么情况下索引会失效
查询较慢是如何对sql语句进行分析
针对海量数据,如5000万条数据进行按id,手机号,名称进行查找时,如何分表并做到尽可能快速的查询
sql正则表达式应用,如查询131开头,尾号为8,9的手机号
设计模式
单例模式
工厂
观察者
策略
适配器
Spring
ioc,aop原理
servlet生命周期
反射原理
aop注解有哪些,实现方式有哪些,举例一下应用场景
微服务
Springcloud 配置中心
如何完成中心调用,调用使用什么协议
Springcloud熔断
路由网关
负载均衡策略
redis与MQ
redis 支持哪些数据类型,端口号,redis缓存击穿,雪崩如何处理
redis淘汰策略
哨兵选举策略
slave切换为master的策略
如何保证redis缓存与数据库的一致性
rocketMQ有哪些核心组件
rocketMQ消息丢失如何处理:producer,broker,consumer 三种常景丢失
rocketMQ消费模式:集群消费(默认),广播消费
如何利用redis和MQ设计一个秒杀场景
docker 与k8s
docker的核心组件及部署
k8s有哪些核心组件
微服务走集群管理用到哪些工具
如何管理各个中心的允许状况,调用情况
项目理解
挑自己熟悉的讲,尽量把场景,实现思路,遇到问题及解决方案说清楚