含面试题 阿里P8架构师谈:成为架构师必须掌握的七大知识点

不想当将军的兵不是好兵,就程序猿不想当架构师就不是好的程序员!
JAVA架构师主要需要做哪些工作呢?
1、负责设计和搭建软件系统架构(平台、数据库、接口和应用架构等),解决开发中各种系统架构问题 。
2、优化现有系统的性能,解决软件系统平台关键技术问题攻关、核心功能模块设计、核心代码开发 。
3、在项目需求不断细化的工程中校正整体的架构设计,以及详细模块拆分设计 。
4、营造技术学习氛围,带领团队不断完善开发开发方法及流程,提升开发效率与质量,加强技术标准及规范 。
5、带领团队攻克例如大数据量、高并发、高稳定性等带来的各种挑战及技术难关 。
6、责任心强,有团队合作精神,工作认真负责高效并具有一定抗压能力 。
7、参与讨论公司产品发展方向,完整的规划和把握产品研发架构 。
Java架构师要学习哪些知识点呢?
希望以下的学习路线能对你有帮助
1、并发编程
JAVA内存模型(JMM)
java当中的线程通讯和消息传递
什么是重排序和顺序一致性?HAppens-Before?As-If-Serial?
Synchronized的概念和分析
同步、重量级锁以及Synchronized的原理分析
自旋锁、偏向锁、轻量级锁、重量级锁的概念、使用以及如何来优化他们
Volatile和DCL的知识
Volatile的使用场景和Volatile实现机制、内存语义、内存模型
DCL的单例模式,什么是DCL?如何来解决DCL的问题
并发基础之AQS的深度分析

AbstractAueuedSynchronizer同步器的概念、CLH同步队列是什么?
同步状态的获取和释放、线程阻塞和唤醒
Lock和并发常用工具类
java当中的Lock、ReentrantLock、ReentrantReadWriteLock、Condition
java当中的并发工具类CyclicBarrier、CountDownLatch、Semphore
java当中的并发集合类ConcurrentHashMap、
ConcurrentLinkedQueue......
原子操作常用知识讲解
基本类型的原子操作比如经典的AtomicBoolean、AtomicLnteger、AtomicLong
数组类型的原子操作代表几个类AtomicIntegerArray、AtomicLongArray、AtomicReferenceArray
引用类型的原子操作的典型AtomicReference、
AtomicReferenceFieldUpdater......
CAS的概念和知识、Compare And Swap 以及他的缺陷
线程池和并发并行
Executor、ThreadPoolExecutor、Callable &Future、ScheduledExecutorService
ThreadLocal、Fork & Join?什么是并行?线程池如何保证核心线程不被销毁?
2、框架和源码应用
mybatis应用和源码解析
mybatis优缺点、spring 与mybatis 集成
Config、Sql配置、Mapper配置、有几种注册mapper的方法,优先级如何?
mybaits的一级缓存、二级缓存、mybatis的二级缓存为什么是鸡肋?
通用mapper的实现、mybaits编写sql语句的三种方式
@MapperScan的源码分析?mapperScan如何生效的?
mybatis如何扩展spring的扫描器的、mybatis扫描完之后如何利用FactoryBean的?
mybaits底层如何把一个代理对象放到spring容器中?用到了spring的哪些知识?
mybaits和spring的核心接口
ImportBeanDefinitionRegistrar之间千丝万缕的关系
从原来来说明mybaits的一级缓存为什么会失效?spring为什么把他失效?有没有办法解决?
从mybatis来分析mybatis的执行流程、mybaits的sql什么时候缓存的?缓存在哪里?
mybaits当中的方法名为什么需要和mapper当中的id一致?从源码来说明
Tomcat源码解析
tomat的总体概述和tomcat的启动流程源码分析
tomcat当中web请求的源码分析?一个http如何请求到tomcat的?tomcat如何处理的?
tomcat的协议分析,从源码来分析tomcat当中的各种详细配置的意义
tomcat和Apache、Nginx等等主流静态服务器的搭配使用
tomcat的性能调优?生成环境上如何让你的tomcat容器的性能达到最高
spring源码分析
spring的基本应用和spring源码的编译
java 混乱的日志系统,Jul、jcl、log4j、slf4j.....
spring4和spring在日志方面的源码对比
AspectJ和springAop,aspectj的静态织入
JDK动态代理的源码分析,JDK是如何操作字节码
spring通过cglib完成AOP,cglib如果完成方法拦截

AnnotationAwareAspectJAutoProxyCreator如何完成代理织入的
BeanDefinition是什么东西,sping当中的各种BeanDefinition的作用
BeanDefinition有什么作用?如果来改变一个bean的行为
BeanDefinitionRegistry的作用,源码分析
BeanNameGenerator如何改变beanName的生成策略
BeanPostProcessor如何插手bean的实例化过程、经典的应用场景有哪些?spring内部哪里用到了这个接口


推荐阅读