阶段一:数据结构
一、基础
1、基本的数据结构
[](1)基础概念
[](2)数组
[](3)链表
[](4)栈:
[](5)队列
2、树
[](1)哈夫曼树
[](2)平衡二叉树
[](3)红黑树
[](4)B树、B+树
[](5)LSM树
3、图
[](1)最小生成树
[](2)最短路径算法
[](3)拓扑排序
4、排序
[](1)选择排序
[](2)冒泡排序
[](3)插入排序
[](4)快速排序
[](5)归并排序
[](6)希尔排序
[](7)基数排序
[](8)java中的排序工具
[](9)排序算法的特点总结和性能比较
二、中级
[]1、KMP算法
[]2、布隆过滤器
[]3、并查集
[]4、符号表
[]5、汉诺塔
常见的面试题总结:
1、手写排序算法,比较他们之间的性能
2、解决hash冲突的方法
3、字符串和二叉树的手写实现
最主要的就是手写代码。对于每一种数据结构和算法,都要能够手写实现
阶段二:java基础
1、常见的集合类
[](1)基础类型和封装类
[](2)String
[](3)System
2、关键字
[](1)transient
[](2)instanceof
[](3)final
[](4)static
[](5)this
[](6)super
[](7)void
3、高级
[](1)泛型
[](2)枚举
[](3)异常
[](4)注解
[](5)泛型
[](6)反射
[](7)进制
[](8)编码转化
4、集合类
[](1)总体框架
[](2)Collection
[](3)ArrayList
[](4)fail-fast原理
[](5)LinkedList
[](6)Vector
[](7)Stack
[](8)HashMap
[](9)TreeMap
[](10)LinkedHashMap
[](11)HashSet
[](12)TreeSet
5、其他
[](1)String为什么不可变
[](2)java8新特性
[](3)java9、10、11、12新特性
[](4)== 和 equal的区别
[](5)HashCode方法的作用
[](6)创建对象的几种方式
每一个知识点不仅仅是机试中的重点,也是面试中的重点
对于java基础知识,复习的方法就是在你学完了上面的知识点之后,在牛客网等网站一天几十道题进行训练。然后进行错题总结
阶段三:设计模式
1、创建型模式
[](1)工厂方法模式
[](2)抽象工厂模式
[](3)单例模式
[](4)建造者模式
[](3)原型模式
2、结构型模式
[](1)适配器模式
[](2)装饰模式
[](3)代理模式
[](4)外观模式
[](5)桥接模式
[](6)组合模式
[](7)享元模式
3、行为型模式
[](1)策略模式
[](2)模板模式
[](3)观察者模式
[](4)迭代子模式
[](5)责任链模式
[](5)命令模式
[](5)备忘录模式
[](5)状态模式
[](1)访问者模式
[](2)中介者模式
[](3)解释器模式
- ★★☆ 设计模式的作用。
- ★★★ 手写单例模式,特别是双重检验锁以及静态内部类。
- ★★★ 手写工厂模式。
- ★★★ 理解 MVC,结合 SpringMVC 回答。
- ★★★ 理解代理模式,结合 Spring 中的 AOP 回答。
- ★★★ 分析 JDK 中常用的设计模式,例如装饰者模式、适配器模式、迭代器模式等。
阶段四:java虚拟机
[]1、java内存结构
[]2、垃圾回收
[]3、类加载机制
[]4、内存分配和回收策略
[]5、java中的四种引用
[]6、jvm调优(时机、原则、目标、步骤、参数)
[]7、内存溢出(原因、例子、解决方式)
全是重点
阶段五:操作系统
[]1、操作系统的基本特征
[]2、进程与线程的本质区别、以及各自的使用场景。
[]3、进程的几种状态。
[]4、常见的进程同步方式和线程同步
[]5、进程通信方法的特点以及使用场景。(分为windows和linux,以及共有的)
[]6、进程任务调度算法的特点以及使用场景。
[]7、死锁的原因、必要条件、死锁处理。手写死锁代码。java是如何解决死锁的。
[]8、线程实现的方式。
[]9、协程的作用。
[]10、内存管理的方式:段式、页式、段页式。比较他们的区别
[]11、虚拟内存的作用,分页系统实现虚拟内存原理。
[]12、页面置换算法的原理,特别是 LRU 的实现原理,最好能手写,再说明它在 Redis 等作为缓存置换算法。
[]13、分析静态链接的不足,以及动态链接的特点。
可以看书进行总结,不过这里已经整理好了。
阶段六:Linux
一、基础
[]1、Linux目录结构
[]2、Linux常见命令
[]3、Linux文件系统管理
[]4、Linux用户系统管理
[]5、Linux进程管理
[]6、Linux高效的文本文件处理命令
二、中级
[]1、Linux网络管理
[]2、Liux加密解密原理以及数据安全
[]3、Linux系统备份和恢复
[]4、shell编程
常见的面试题总结:
[]1、常见命令的考察,推荐指数:。
[]2、 僵尸进程与孤儿进程的区别,从 SIGCHLD 分析产生僵尸进程的原因
[]3、 硬链接与软链接的区别。
[]4、 僵尸进程与孤儿进程的区别,从 SIGCHLD 分析产生僵尸进程的原因
常见问题链接地址:
1、46个Linux面试常见问题送给你
2、39条常见的Linux系统简单面试题
阶段七:网络
1、基础知识
[](1)五层协议(各自的作用)
[](3)物理层(集线器、交换机、路由器作用、以太网特点以及帧结构)
[](4)数据链路层
[](5)传输层
[](6)传输层
[](7)应用层
[](8)HTTP
2、socket
[](1)阻塞式IO
[](2)非阻塞式IO
[](3)复用IO
[](4)信号驱动IO
[](5)异步IO
[](6)五大IO模型比较
3、序列化
[](1)java序列化
[](2)protoBuf
[](3)ProtoStuff
[](4)avro
4、Netty
[](1)基本案例
[](2)粘包问题解决
[](3)编码问题解决
[](4)实时通信问题解决
[](5)源码分析
5、远程调用
[](1)rmi
[](1)thrift
- ★★★ 各层协议的作用,以及 TCP/IP 协议的特点。
- ★★☆ 以太网的特点,以及帧结构。
- ★★☆ 集线器、交换机、路由器的作用,以及所属的网络层。
- ★★☆ IP 数据数据报常见字段的作用。
- ★☆☆ ARP 协议的作用,以及维护 ARP 缓存的过程。
- ★★☆ ICMP 报文种类以及作用;和 IP 数据报的关系;Ping 和 Traceroute 的具体原理。
- ★★★ UDP 与 TCP 比较,分析上层协议应该使用 UDP 还是 TCP。
- ★★★ 理解三次握手以及四次挥手具体过程,三次握手的原因、四次挥手原因、TIME_WAIT 的作用。
- ★★★ 可靠传输原理,并设计可靠 UDP 协议。
- ★★☆ TCP 拥塞控制的作用,理解具体原理。
- ★★☆ DNS 的端口号;TCP 还是 UDP;作为缓存、负载均衡。
- ★★★ GET 与 POST 比较:作用、参数、安全性、幂等性、可缓存。
- ★★☆ HTTP 状态码。
- ★★★ Cookie 作用、安全性问题、和 Session 的比较。
- ★★☆ 缓存 的Cache-Control 字段,特别是 Expires 和 max-age 的区别。ETag 验证原理。
- ★★★ 长连接与短连接原理以及使用场景,流水线。
- ★★★ HTTP 存在的安全性问题,以及 HTTPs 的加密、认证和完整性保护作用。
- ★★☆ HTTP/1.x 的缺陷,以及 HTTP/2 的特点。
- ★★★ HTTP/1.1 的特性。
- ★★☆ HTTP 与 FTP 的比较。
- ★★☆ 五种 IO 模型的特点以及比较。
- ★★★ select、poll、epoll 的原理、比较、以及使用场景;epoll 的水平触发与边缘触发。
阶段八:并发基础
1、基础知识
[](1)线程的概念以及案例
[](2)Thread生命周期状态
[](3)Thread构造函数
[](4)java内存模型
[](5)线程通信
[](6)sleep和wait的区别
[](7)synchronized
[](8)volatile
[](9)ThreadLocal
2、原子包
[](1)AtomicInteger
[](2)CAS原理
[](3)AtomicBoolean
[](4)AtomicStampedReferece
[](5)Unsafe
3、并发工具
[](1)CountDownLatch
[](2)CyclicBarrier
[](3)Semaphore
[](4)Exchanger
4、锁机制
[](1)ReentrantLock
[](2)ReenReadWriteLock
[](3)StampedLock
[](4)ForkJoin
[](5)Phaser
[](6)AQS原理
5、线程池
[](1)Excutor
[](1)Future&Callable
[](5)CompletionService
[](5)ExcutorService
[](5)ThreadFactory
[](5)CompleteableFuture
6、并发容器
[](1)ConcurrentHashMap
[](2)ConcurrentSkipListMap
[](3)ConcurrentSkipSet
[](4)ConcurrentLinkedQueue
[](5)CopyOnWriteArrayList
[](6)BlockingQueue
1、一共35个知识点,但是实际可能会更多,基本上都是重点,面试常考点
阶段九:微服务架构
1、servlet
[](1)servlet的生命周期
[](2)API(get和post区别、forward和redirect区别)
[](3)JSP和servlet的比较
[](4)四种会话跟踪技术
[](5)request对象的主要方法
[](6)cookie和session的比较
2、Srping
[](1)Spring架构(七大模块概述)
[](1)Spring上下文和容器
[](5)Spring加载机制
[](5)SpringBean探秘
[](5)AOP与代理
3、SpringMVC
[](1)SpringMVC架构与流程
[](1)DispatcherServlet的实现
[](5)每一控制器的流程解读
4、Springboot
[](1)SpringBoot入门
[](1)整合其他技术
[](5)打包部署
[](5)actuator监控
[](5)源码分析
5、SpringCloud
[](1)服务注册与发现Eureka
[](2)客户端负载均衡Ribbon
[](3)声明式Rest调用Feign
[](4)容错机制Hystrix
[](5)服务网关Zuul
[](6)配置中心Apollo
[] (7)负载均衡算法
Spring常见面试题
SpringMVC常见面试题
阶段十:分布式架构
1、基础
[](1)CAP理论
[](2)BASE理论
2、框架
[](1)Dubbo服务治理
[](1)Zookeeper协调
[](5)Nginx
阶段十一:数据库
1、Mysql
[](1)UML图
[](2)Mysql基本操作
[](3)视图、函数、存储过程、变量、事务、流程控制、游标、权限管理
[](4)索引
[](5)查询性能优化
[](6)存储引擎的比较
[](7)切分:水平和竖直,sharding策略和问题
[](8)复制:主从复制和读写分离
2、Redis
3、MongoDB
4、ElasticSearch
5、中间件:AQ、RQ、Kafka
6、JDBC
7、Mybatis
8、fastDFS
9、Mycat
- ★★★ B+ Tree 原理,与其它查找树的比较。
- ★★★ MySQL 索引以及优化。
- ★★★ 查询优化。
- ★★★ InnoDB 与 MyISAM 比较。
- ★★☆ 水平切分与垂直切分。
- ★★☆ 主从复制原理、作用、实现。
- ★☆☆ redo、undo、binlog 日志的作用。
- ★★☆ 字典和跳跃表原理分析。
- ★★★ 使用场景。
- ★★★ 与 Memchached 的比较。
- ★☆☆ 数据淘汰机制。
- ★★☆ RDB 和 AOF 持久化机制。
- ★★☆ 事件驱动模型。
- ★☆☆ 主从复制原理。
- ★★★ 集群与分布式。
- ★★☆ 事务原理。
- ★★★ 线程安全问题。
阶段十二:工具
1、git
2、日志
3、测试Junit
4、Docker
5、Tomcat
6、正则表达式
7、Maven
8、k8s
阶段十三:安全
1、Shiro
2、对称加密
3、数字签名
4、Base64
阶段十三:面试算法题
我的公众号:java的架构师技术栈。有本系列的文章还有教程