Java 后端面试进阶
Java基础,核心
- 基础知识
- 语法、流程
- String、数组
- 数组初始化、二维数组
- String字符串查找、字符串截取、字符串转字符数组
- 核心技术
- 接口、抽象类
- 继承,多态,封装
- 异常处理
- 集合框架(源码实现)
- List
- ArrayList
- LinkedList
- Set
- HashSet
- TreeSet
- Map
- HashMap
- TreeMap
- ConcurrentHashMap
- Queue
- ConcurrentLinkedQueue
- Stack
- Collection的synchronizedXXX写法
- List
- 多线程
- IO输入输出流
Java Web技术栈
SHH框架
- Spring
- IOC
- AOP
- 常用注释
J2EE
- JSP+servlet
- Struts2
- SpringMVC
- Spring Boot
- Spring MVC
ORM框架
- Hibernate
- Mybatis
- 将数据库的数据转化为Java对象
- Shiro
- Netty
- Spring
数据库
- SQL语句
- MySQL
- 引擎
- InnoDB支持事务
- MylSAM支持全文索引
- SQL优化
- 分库分表
- 索引
- 主键索引
- 组合索引
- explain
- 存储过程
- SQL注入
- 使用#不使用$
- 锁
- 表锁
- 行锁
- 乐观锁
- 悲观锁
- 事务隔离级别ACID
- 原子性
- 一致性
- 隔离性
- 持久性
- Nosql
- 分布式缓存
- Hadoop
- Hbase
- Spark
- Storm/jStorm
构建工具
- Maven构建工具
- 管理jar包
- pom.xml文件指定需要的jar包
- 管理jar包
- 功能
- 编译
- 打包
- 运行单元测试
- 项目构建工具
- Gradle
服务器
- Tomcat
- 应用服务器
- web应用的运行环境
- Nginx/Tengine(web应用服务器)
- Git、GitHub
JavaWeb常用组件
- 日志系统
- log4j
- 单元测试
- Jnuit
- JSON
- HTTPClient
- 加密工具
- 压缩工具
Java进阶技术
- 网络编程
- Socket
- 并发编程
- Java多线程技术
- JUC包里的并发类
- 线程池
- 参数设置
- corePoolsize
- maximumpoolsize
- BlockingQueue《Runnable》 workqueue
- RejectedExceptionHandler handler
- 原理
- 拒绝策略 Handler
- CallerRunsPlocy 直接运行run方法,执行自身的run方法
- AvortPolicy 抛出异常,丢弃任务
- DiscardPlocy 直接丢弃
- DiscarOldestPolicy 抛弃最老的线程,位于队列头的任务会被删除
- 并发工具类
- 阻塞队列 workqueue
- 直接提交
- 无界队列linked 各个任务相互独立
- 有界队列 防止资源耗尽
- 参数设置
- 数据结构
- ConcurrentHashMap
- CoincurrentLinkedQueue
- 并发工具
- CountDownLatch
- Semaphore
- CyclicBarrier
- Exchanger
JVM
- 类加载机制
- 内存模型
- GC机制
- 回收算法
- 垃圾收集器
- 调优
- 工具
- jstack
- jmap
- jconsole
设计模式
- 工厂模式
- 代理模式
- 门面模式
- 观察者模式
- 责任链模式
- 适配器模式
- 装饰者模式
- 单例模式
后端进阶技术
- 分布式
- 负载均衡
- 分支主题
- 分布式缓存
- 缓存
- 消息队列
- kfaka
- 远程调用RPC
- RMI
- Thrift
- Dubbo(DubboX)
- 服务治理,也可作为微服务
- gRPC
Docker
- 进程级别的隔离机制
- 集群规模数万台
- 本身不是容器,而是创建容器的工具
- 搭建一次,到处可用
- 核心技术
- 镜像Image
- 容器Container
- 仓库Repository
- 基本组成
- Docker Client
- 客户端
- Docker Daemon
- 守护进程
- Docker Images
- Docker镜像
- Docker Registry
- 镜像的仓库
- Docker Container
- Docker容器
Linux与项目部署
- 基本命令
- Shell脚本
- 内核相关知识
中间件与系统拆分
系统架构
- 系统设计,拆分系统,小模块
- 预估时间
- 考虑后期维护与升级
- 性能优化