Java 后端知识点
2019-06-27 本文已影响0人
叫我宫城大人
Java
基本类型
- 八大基本类型,对应数值范围
- 浮点数丢失精度
- Integer 缓存
- String 内存分配
集合
- List、Set、Map
- 线程安全保障
- HashTable、HashMap、ConcurrentHashMap(1.7、1.8)
- 扩容
IO
- BIO、NIO、AIO
- 序列化
异常
- Throwable
- Error、Exception
- RuntimeException、IOException
并发
- 多线程(线程池,合理大小)
- ThreadLocal(WeakReference)
- synchronized、Lock
- volatile、CAS
- AQS(CountDownLatch、ReentrantLock)
- 锁优化(减小粒度、锁粗化、减小持有时间、锁分离)
代理
- 静态代理
- 动态代理(JDK 代理、接口代理)
- CGLIB 代理(子类代理)
JVM
- 内存模型(堆、方法区、Java 栈、本地方法栈、程序计数器)
- 引用计数、GC root 搜索
- GC 算法(标记清除、复制整理、分区)
- 垃圾回收器(串行、并行、CMS、G1)
- 虚拟机参数
- ClassLoader(双亲委托,如何打破)
- 锁类型(偏向锁、轻量级、重量级、自旋锁、锁消除)
JDK 1.8 特性
- 接口默认方法
- 函数式接口
- Lambda 表达式
- Optional
- Streams
- Date/Time API
- Base64
- 元数据区
框架组件
Spring
- IOC、DI、AOP
- bean 五大作用域(singleton、prototype、request、session、global-session)
- 七大事务传播机制(required、support、not_support、mandatory、never、new、nested)
- 相关设计模式(工厂、单例、代理、模板、观察者)
- 事务(编程式、声明式)
- Spring MVC 流程(dispatcher、handleMapping、handle、handleAdapter、ModelAndView、ViewResolver)
- Spring Boot
- Spring Cloud(Dubbo 对比)
Mybatis
- SQL 注入
Redis
- 数据结构(string、list、set、zset、hash)
- 持久化(RDB、AOF)
- 主从复制、哨兵、集群(哈希槽 16384)
- 缓存击穿(null 缓存)、缓存雪崩(失效时间错开)
- 基于内存、单线程
- keys 正则 弊端(o(n) 阻塞,scan 替代)
- 特性(事务、消息队列、Luna 脚本)
- memcached 对比
- Jedis、Lettuce(线程安全)
- 过期策略(定期删除+惰性删除)
- 内存淘汰机制(noeviction、allkeys-lru、volatile-lru、allkeys-random、volatile-random、volatile-ttl)
MQ
- AMQ、RocketMQ、Kafka
- 异步、削峰、解耦
- 集群方案(AMQ:Zookeeper + LevelDB)
- 重复消费(幂等性)
- 顺序性保证
- 最终一致性
Zookeeper
- znode 类型(持久、临时、顺序)
- watcher 机制(单次触发)
- 集群方案(Leader、Follower、Observer)
- 选举流程(变更状态、发起投票、接收投票、统计投票、变更状态)
- zxid(zk 状态)
- Euraka 对比(CAP 理论)
Netty
- Selector BUG
- 零拷贝
Nginx
- 负载均衡配置
- 五种策略(轮询、权重、ip hash、url hash、fair)
- keepalived 高可用
数据结构与算法
数据结构
- 栈
- 队列(FIFO)
- 链表(单向、双向、循环)
- 树(二叉树、B-树、B+树、红黑树)
- 散列表
- 跳表
排序
- 冒泡排序
- 快速排序
- 插入排序
分布式
分布式 ID
- UUID(长度过长,效率较低)
- 单数据库自增 ID
- 多数据库步长
- snowflake
分布式 Session 一致性
- ip hash 负载均衡
- Tomcat Session 同步
- Spring + Redis 集中管理
- JWT Token 令牌机制(sign 散列算法签名)
分布式锁
- 数据库唯一索引
- Redis NX
- ZooKeeper 节点唯一(顺序节点,参考 Curator)
分布式事务
- XA(两阶段提交)
- TCC(Try、Confirm、Cancel)
- 可靠消息最终一致性(RocketMQ)
一致性 Hash
- 哈希环
- 分布式节点影响
数据库
MySQL 优化
- 冗余字段
- 读写分离
- SQL 优化(索引、分表)
- 查询缓存(sql_cache)
- slow_query_log 慢查询开关
- explain 分析
索引
- 实现(HASH、B+树)
- 应用(主键、唯一、单列、联合)
- 聚簇索引、非聚簇索引
- 覆盖索引
- 优化策略(最左匹配、数据分散)
事务
- ACID
- 隔离级别
- next-key lock
数据库引擎
- InnoDB、MyISAM
- 特性支持(事务、表锁、行锁、间隙锁)
其他
- SQL 语句执行顺序(from、on、join、where、group、with、having、select、distinct、order、limit)
工具
Maven
- clean package install
- scope(compile、provided、runtime、system、test)
- 环境分离(profile)
- 依赖冲突(exclude)
- 打包瘦身(include)
Git
- pull fetch merge
- revert reset rebase
- 配置
IDEA
- 虚拟机参数
- 快捷键
其他
加密
- 对称加密 AES、DES
- 非对称加密 RSA、DSA
- 散列算法 MD5、SHA、HMAC
设计模式
- 单例模式(双重锁、枚举)
- 工厂模式(静态、抽象)
- 观察者模式
- 策略模式
网络 & 操作系统
- 线程与进程
- Linux 常用命令
- OSI 七层模型(应用、表示、会话、传输、网络、数据链路、物理)
- TCP(三次握手,四次挥手)、UDP
- XSS、CRSF、CORS
- HTTP 状态码(5xx 解决方案)
开放式问答
- 虚拟机调优(Xms Xmx Xmn、垃圾回收器、GC 日志)
- 设计秒杀系统(集群高可用、微服务、读写分离、消息缓存)
- 设计分布式缓存(淘汰策略 FIFO LRU LFU)
- 超大文件排序(大文件分片排序,遍历分片合并)