这次以准备蚂蚁面试的形式梳理知识树,并mark下
1、剽窃的知识树(转自支撑一亿人)

PlanX
# 2、Plan x(转)
要求:
1\. 扎实的JAVA基础,掌握JVM、并发编程、网络编程等基础知识;熟悉单元测试、WEB开发、数据库等基础技术。
2\. 熟悉Spring、SpringMVC、iBatis或其他主流开发框架;掌握常用数据结构、常见设计模式,拥有领域模型抽象能力。
3\. 具备大型网站核心开发、设计经验者优先;熟悉分布式系统设计、SOA、消息队列、缓存等技术者优先。
4\. 有强烈的技术热情和钻研精神,热爱新技术;有独立、主动的学习习惯和良好的沟通表达、团队协作能力。
5\. 具备较强的业务理解及业务抽象能力,能够快速从业务需求中找到技术设计的场景,有较强的业务sence。
6\. 要求3年以上开发经验,并对某一个或多个领域有较深入研究。
### Java基础
面试的目的不是为了看候选人懂多少技术,最基础的东西,往往反映的就是一个人学习的态度,是否沉得下心来,在平时工作之余了解下自己为什么这样写?
基础好的人,才能更容易应对上层复杂难题。
* 集合:Arrays.asList。List.subList。HashMap实现原理,ConcurrentHashMap实现原理
* 多线程:线程池执行原理,volatile和synchronized。线程的状态切换,线程池中工具类
* 额外:java正则,加密模块,反射
* 常见排序算法,之间的区别
### JVM
Java进阶部分内容,高级开发必备知识,如果连JVM都不了解,那么开发时确实学习主动性不够。
* 类的加载机制 :加载、链接(验证、准备、解析)初始化、使用、卸载。类加载器分类及其应用程序类加载器、自定义加载器。
* jvm内存结构:程序计数器、堆、虚拟机栈、本地方法栈、方法区(Java8已移除)、元空间(Java8新增)的作用及基本原理
* GC算法: 垃圾回收。对象存活判断
* GC分析 :命令调优 JVM内存参数设置及调优
### 存储
#### MySQL
* 理解至少两种数据库引擎(Inndb/Mysiam)的差异性
* 熟悉索引的内部数据结构,熟悉常见的索引方式(Btree,hash),和索引类型(unique,full text,normal)
* 会使用explain分析SQL语句,会优化SQL语句
* 熟悉一种NOSQL,知道内部实现原理(内部数据结构,在算法优化,内部机制)
* 掌握分布式数据库的知识,分表,分库,分区,分布式事务等,可以学习一个数据库中间件(TDDL/COBAR)熟悉高并发、大数据情况下的数据库开发。
#### Redis
* Redis支持的数据类型,使用过这些数据类型做过什么
* redis的数据淘汰策略
* Redis的持久化机制,AOF及RDB
* Redis哨兵原理
* 缓存穿透,缓存雪崩及如何处理
### 框架
* 认真看过SSM框架中的那部分知识点,能不能说下其中的内容?
* IOC和AOP,AOP实现原理?
* 事务实现原理? 涉及到那些关键的类
* 自定义Spring Boot starter
* MVC请求流程
### 分布式
* 分布式系统包含那些组件,常见的组件替换关系,用过那些组件
* 常见的分布式协议
* 如何自己设计一个RPC框架
### 额外
* 测试框架
* 高并发框架
* 平时是如何解决问题的?
* 平时是如何学习的?
作者:Real_man
链接:[https://www.jianshu.com/p/c01ae208c927](https://www.jianshu.com/p/c01ae208c927)
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
网友评论