数据结构和算法
计算机网络
- OSI 模型,TCP/IP 模型
- TCP 和 UDP 的区别
- TCP 可靠传输原理:重传,流量控制,拥塞控制,序列号与确认应达号,校验和
- 三次握手,四次挥手过程,原理
- timewait, closewait
- HTTP
- 报文格式
- 1.0.1.1 2.0
- 状态码
- 无状态解决(Cookie Session 原理)
- HTTPS
- CA 证书
- 对称加密
- 非对称加密
- DNS 解析过程,原理
- IP 协议,ICMP 协议(Ping,Tracert),ARP 协议,路由协议
- 攻击手段与防范:XSS,CSRF,SQL 注入,DOS,DDOS
操作系统
- 进程,线程和协程区别
- 进程通信方式(管道,消息队列,共享内容,信号,信号量,socket)
- 进程调度算法 (先来先服务,短作业优先,时间片轮换,多级反馈队列,优先级调度)
- 内存管理:分页(页面置换算法:手写LRU),分段,虚拟内存
数据库
MySQL
- 架构:
- 引擎:
- 聚簇索引,非聚簇索引区别(从二叉平衡搜索树复习(AVL)到B树,最后B+树)
- MySQL, SQL 优化方法
- 覆盖索引,最左前缀匹配
- 当前读,快照读
- MVCC 原理(事务ID,隐藏字段,Undo,ReadView)
- Gap Lock, Next-Key Lock, Record Lock
- 三大范式
SQL
- 常用 SQL
- 连接:自连接,内连接(等值,非等值,自然连接),外连接(左,右,全)
- Group BY 和 Having
-
Java 基础
面向对象特性:封装,多态,继承
- 泛型,类型擦除
- 反射,原理,以及优缺点
static,final关键字String,StringBuffer,StringBuilder底层区别- BIO, NIO, AIO
Object类的方法- 自动拆箱和自动装箱
Java 集合框架
- List:
ArrayList,LinkedList,Vector,CopyOnWriteArrayList - Set:
HashSet,TreeSet,LinkedHashSet - Queue:
PriorityQueue - Map:
HashMap,TreeMap,LinkedHashMap - fast-fail, fast-safe 机制
- 源码分析(底层的数据结构,插入,扩容过程), 线程安全
Java 并发
- 三种线程初始化的方法(
Thread,Callable,Runnable)区别 - 线程池(
ThreadPoolExecutor, 7大参数, 原理, 四种拒绝策略,四个变型:Fixed, Single, Cached, Scheduled)- 有界,无界任务队列,手写
BlockingQueue - 乐观锁:CAS(优缺点,ABA问题,DCAS)
- 悲观锁:
- Synchronized
- 使用:方法(静态,一般方法),代码块(this,
ClassName.class) - 1.6优化:锁细化,锁消除,自适应自旋锁,偏向锁,轻量级锁
- 锁升级的过程和细节:无锁->偏向锁->轻量级锁->重量级锁(不可逆)
- 重量级锁的原理(
monitor对象,moniterenter,moniterexit) RentrantLock: 和Synchronized区别?(公平锁,非公平锁,可中断锁…),原理,用法
- 使用:方法(静态,一般方法),代码块(this,
- Synchronized
ThreadLocal, 底层数据结构:ThreadLocalMap, 原理,应用场景Atomic类(原理,应用场景)- AQS : 原理,
Semaphore,CountDownLatch,CyclicBarrier Volatile: 原理:有序性,可见性
- 有界,无界任务队列,手写
Java 虚拟机
- 类加载机制,双亲委派模式,3种类加速器
- 运行时内存分区(PC, Java 虚拟机栈,本地方法栈,堆,方法区,(永久代,元空间))
- JMM:Java 内存模型
- 引用计数,可达性分析
- 垃圾回收算法:标记-清除,标记-整理,复制
- 垃圾回收器:比较,区别(Serial, ParNew, Parallel Scavenge, CMS, G1)Stop The World
- 强,软,虚,弱引用
- 内存溢出, 内存泄漏排查
- JVM 调优,常用命令
Spring
- AOP 原理(JDK 动态代理,CGLIB动态代理)和 IOC 原理
- Spring Bean 生命周期
- SpringMVC 原理
- SpringBoot 常用注解
