面试必备技能清单,这里不会详细论述,更多的是清单列举,罗列一些关键字和链接注释。
-
排序算法
-
数据结构
- 红黑树(5点特性)
-
思维拓展
- 一堆字符串求出现次数最多的字符串
- Java 集合框架
- ArrayList 与 LinkedList
- Hashtable、Hashmap 与 ConcurrentHashmap
- Java 并发编程
- 线程状态
- 新建、可运行(运行和就绪)、阻塞、无限期等待、限期等待、死亡
- 实现线程三种方式(继承Thread,实现 Runnable 接口,实现 Callable 接口)
- 并发两个关键问题
- 线程通信
- 线程同步
- volatile 和 synchronized
- lock 和 synchronized
- Java内存模型(JMM),解决并发中的可见性,原子性,有序性问题
- 线程状态
- Java IO
- 序列化
- AIO、BIO、NIO
- Java 虚拟机
- 运行时数据区
- Java 设计模式
- 单例模式
- 工厂模式
- Spring
- IOC
- AOP
- DI
- SpringMVC
- 执行流程
- MyBatis
-
存储引擎
- MyISAM(表级锁,不支持事务,全文索引,只读应用)
- .frm / .myd / .myi
- 非聚集索引
- InnoDB(行级锁,最大支持并发,事务,表更新和查询都相当的频繁)
- .frm / .ibd
- 聚集索引,以主键为索引来组织数据
- MyISAM(表级锁,不支持事务,全文索引,只读应用)
-
索引(衡量标准:IO渐进复杂度)
- Hash(冲突,无法做范围查询)
- FullText(全文搜索,优化:前缀索引)
- R-Tree(空间索引,附近三公里的数据怎么查询)
- B+ Tree(B Tree:每个key、data信息存在结点,B+ Tree存在叶子节点)
-
哪些情况下不会使用索引
- 全表扫描更快
- 条件中有or
- 不是复合索引的第一部分
- like以%开始
-
隔离级别
- 串行化
- 可重复读
- 读已提交
- 读未提交
-
Redis 数据类型
- String:字符串
- Hash:字典
- List:链表
- Set:集合
- Sorted Set:有序集合
-
进程和线程的区别
- 资源、调度、开销、通信 4个方面来对比
-
线程间通信
- synchronized
- while轮询
- wait() / notify()
- 管道
-
进程通信
- 直接通信
- 间接通信
-
应用层
- HTTP请求和响应报文
-
传输层
- 为什么三次握手,两次不行吗
- 四次挥手 TimeWait 作用
- TCP可靠传输
-
分布式通信协议
- http
- https
- RESTful API
-
分布式锁
-
扫码登录原理
-
Cookie 和 Session 的原理
-
单点登录
-
参考资料