首页
登录 | 注册

Java架构师必须掌握的七大知识点

微信公众号中看到的一篇文章,挺全的,想要走架构师这条路的程序员可以作为参考学习计划,个人感觉深度有余,广度不足。
Java
架构师主要需要做哪些工作呢?

1、负责设计和搭建软件系统架构(平台、数据库、接口和应用架构等),解决开发中各种系统架构问题。

2、优化现有系统的性能,解决软件系统平台关键技术问题攻关、核心功能模块设计、核心代码开发。

3、在项目需求不断细化的工程中校正整体的架构设计,以及详细模块拆分设计。

4、营造技术学习氛围,带领团队不断完善开发开发方法及流程,提升开发效率与质量,加强技术标准及规范。

5、带领团队攻克例如大数据量、高并发、高稳定性等带来的各种挑战及技术难关。

6、责任心强,有团队合作精神,工作认真负责高效并具有一定抗压能力。

7、参与讨论公司产品发展方向,完整的规划和把握产品研发架构。

1、并发编程

JAVA内存模型(JMM

·      java当中的线程通讯和消息传递

·      什么是重排序和顺序一致性?Happens-BeforeAs-If-Serial

Synchronized的概念和分析

·      同步、重量级锁以及Synchronized的原理分析

·      自旋锁、偏向锁、轻量级锁、重量级锁的概念、使用以及如何来优化他们

VolatileDCL的知识

·      Volatile的使用场景和Volatile实现机制、内存语义、内存模型

·      DCL的单例模式,什么是DCL?如何来解决DCL的问题

并发基础之AQS的深度分析

·      AbstractAueuedSynchronizer同步器的概念、CLH同步队列是什么?

·      同步状态的获取和释放、线程阻塞和唤醒

Lock和并发常用工具类

·      java当中的LockReentrantLockReentrantReadWriteLockCondition

·      java当中的并发工具类CyclicBarrierCountDownLatchSemphore

·      java当中的并发集合类ConcurrentHashMapConcurrentLinkedQueue......

原子操作常用知识讲解

·      基本类型的原子操作比如经典的AtomicBooleanAtomicLntegerAtomicLong

·      数组类型的原子操作代表几个类AtomicIntegerArrayAtomicLongArrayAtomicReferenceArray

·      引用类型的原子操作的典型AtomicReferenceAtomicReferenceFieldUpdater......

·      CAS的概念和知识、Compare And Swap 以及他的缺陷

线程池和并发并行

·      Executor、ThreadPoolExecutorCallable &FutureScheduledExecutorService

·      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的执行流程、mybaitssql什么时候缓存的?缓存在哪里?

·      mybaits当中的方法名为什么需要和mapper当中的id一致?从源码来说明

 

tomcat源码解析

·      tomat的总体概述和tomcat的启动流程源码分析

·      tomcat当中web请求的源码分析?一个http如何请求到tomcat的?tomcat如何处理的?

·      tomcat的协议分析,从源码来分析tomcat当中的各种详细配置的意义

·      tomcat和apachenginx等等主流静态服务器的搭配使用

·      tomcat的性能调优?生成环境上如何让你的tomcat容器的性能达到最高

 

spring源码分析 

·      spring的基本应用和spring源码的编译

·      java 混乱的日志系统,Juljcllog4jslf4j.....

·      spring4和spring在日志方面的源码对比

·      AspectJ和springAopaspectj的静态织入

·      JDK动态代理的源码分析,JDK是如何操作字节码

·      spring通过cglib完成AOPcglib如果完成方法拦截

·      AnnotationAwareAspectJAutoProxyCreator如何完成代理织入的

·      BeanDefinition是什么东西,sping当中的各种BeanDefinition的作用

·      BeanDefinition有什么作用?如果来改变一个bean的行为

·      BeanDefinitionRegistry的作用,源码分析

·      BeanNameGenerator如何改变beanName的生成策略

·      BeanPostProcessor如何插手bean的实例化过程、经典的应用场景有哪些?spring内部哪里用到了这个接口

·      BeanFactoryPostProcessor和BeanPostProcessor的区别、经典应用场景、spring内部如何把他应用起来的

·      BeanDefinitionRegistryPostProcessor和BeanFactoryPostProcessor的关系已经区别,spring底层如何调用他们

·      ConfigurationClassPostProcessor这个类如何完成bean的扫描,如何完成@Bean的扫描、如何完成对@Import的解析

·      @Imoprt的三种类型,普通类、配置类、ImportSelector

·      如何利用ImportSelector来完成对spring的扩展?

·      @Configuration这注解为什么可以不加?加了和不加的区别,底层为什么使用cglib

·      @Bean的方法是如何保证单例的?如果不需要单例需要这么配置?为什么需要这么配置

·      springFacoryBean和BeanFacory的区别,有哪些经典应用场景?springfactoryMethod的经典应用场景?

·      ImportBeanDefinitionRegistrar这个接口的作用,其他主流框架如何利用这个类来完成和spring的结合的?

·      spring是什么时候来执行后置处理器的?有哪些重要的后置处理器,比如CommonAnnotationBeanPostProcessor

·      CommonAnnotationBeanPostProcessor如何来完成spring初始化方法的回调。spring内部的各种Procesor的作用分别是什么

·      spring和springBoot当中的各种@Enablexxxx的原理是什么?如何自己实现一个?比如动态开启某某些自定义功能

·      spring如何来完成bean的循环依赖并且实例化的,什么是springIOC容器,怎么通过源码来理解?

·      其他,比如Bean的实例化过程,源码中的两次gegetSingleton的不同和相比如SpringMvc的源码分析等等......

3Spring微服务

Spring Cloud  

·      Eureka的源码分析服务注册和服务发现以及心跳机制和保护机制,对比eurekazookeeper,什么是CAP原则?

·      Ribbon源码分析和客服端负载均衡,客户端负载均衡?服务端负载均衡? Ribbon核心组件IRule以及重写IRule

·      Fegin源码分析和声明式服务调用,Fegin负载均衡,Fegin如何与Hystrix结合使用? 有什么问题?

·      Hystrix实现服务限流、降级,大型分布式项目服务雪崩如何解决? 服务熔断到底是什么?一线公司的解决方案

·      HystrixDoashboard如何实现自定义接口降级、监控数据、数据聚合等等

·      Zuul统一网关详解、服务路由、过滤器使用等,从源头来拦截掉一些不良请求

·      分布式配置中心Config详解,如何与github或是其他自定义的git平台结合、比如gitlab

·      分布式链路跟踪详解,串联调用链,,Bug无处可藏,如何厘清微服务之间的依赖关系?如何跟踪业务流的处理顺序?

 

Spring Boot

·      Spring Boot的源码分析和基本应用、利用springmvc的知识模拟和手写一个springboot

·      springmvc的零配置如何实现的?利用servelt3.0的哪些新知识?在springmvc中如何内嵌一个tomcat,如何把web.xml去掉

·      springboot当中的监听器和设计模式中观察者模式的关系、模拟java当中的事件驱动编程模型

·      springboot的启动流程分析、springboot如何初始化springcontext?如何初始化DispacterServlet的、如何启动tomcat

·      springboot的配置文件类型、配置文件的语法、配置文件的加载顺序、模拟springboot的自动配置

·      l springboot的日志系统、springboot如何设计他的日志系统的,有什么优势?如何做到统一日志的?

·      Docker 

·      什么是Docker、为什么要使用他、和开发有什么关系?能否带来便捷、Docker简介、入门,Docker的架构是怎样的?

·      Docker的三大核心概念:镜像(Images)、容器(Containers)、仓库服务注册器(Registry)他们分别是什么?

·      Docker的基础用法以及Docker镜像的基本操作

·      容器技术入门、Docker容器基本操作、容器虚拟化网络概述以及Docker的容器网络是怎样的?

·      程序员如何利用Dockerfile格式、Dockerfile命令以及docker build构建镜像

·      Compose和Dockerfile的区别是什么?Compose的配置文件以及使用Compose运行容器、Docker的实战应用

4、性能调优

mysql性能调优   

·      mysql中为什么不使用其他数据结构而就用B+树作为索引的数据结构

·      mysql执行计划详解&mysql查询优化器详解

·      mysql索引优化实战,包括普通查询、group byorder by

 

java数据结构算法

·      hash算法详解、java当中hashmap源码解析、手写一个hashmap

·      从源码理解hashmapJDK7JDK8的变化、为什么有这样的变化,Java8新特性

·      顺序存储、双向链表、单向链表、java当中linkedList的源码分析

·      java当中线性结构、树形结构以及图形结构分析以及应用场景和经典使用

·      大数字运算和经典排序、二叉树红黑树排序、查找

 

JVM性能调优

·      java内存模型总体概述、类加载过程和classloader、运行时数据区当中的总体内容、编译原理

·      内存区域与内存溢出异常、虚拟机对象、程序计数器、java栈、本地方法栈、操作数、方法区、堆内存和元数据等等

·      Classloader的知识详细、默认全盘负责机制、从JDK源码来理解双亲委派模式、如何打破双亲委派?为什么需要打破?

·      虚拟机性能监控与故障处理、jvm基本命令,jinfo命令的使用jmap命令使用、jstak命令的使用、使用jvisualvm分析

·      垃圾收集器与内存分配策略、垃圾回收算法与基础、串型收集器、并行收集器、内存分配与回收策略。

·      程序编译与代码优化、运行期优化、编译期优化、JVM调优的本质是什么?什么是轻gc?什么是Full gc?如何调优

·      JVM执行子系统、类文件结构、类加载机制、字节码执行引擎、字节码编译模式、如何改变字节码编译模式?

5、互联网工程

Maven

·      整体认知maven的体系结构

·      maven核心命令

·      maven的pom配置体系

·      搭建Nexus私服

 

Git

·      动手搭建Git客户端与服务端

·      Git的核心命令

·      Git企业应用

·      git的原理,git底层指针介绍

 

Linux

·      Linux原理、启动、目录介绍

·      Linux运维常用命令、Linux用户与权限介绍

·      shell脚本编写

6、分布式

分布式协调框架(Zookeeper)

·      什么是分布式系统?分布式系统有何挑战?Zookeeper快速入门&集群搭建基本使用

·      Zookeeper有哪些常用命令以及注意事项、zkclient客户端与curator框架有什么功能以及如何使用

·      手写Zookeeper常见应用场景:分布式配置中心、分布式锁、分布式定时任务

·      Zookeeper核心概念znodewatch机制、序列化、持久化机制讲解及其源码解析

·      Zookeeper怎么解决分布式中的一致性问题?领导选举流程讲解及其源码解析

 

RPC服务框架(Dubbo) 

·      手写RPC框架以及为什么要使用Dubbo? 传统应用系统如何演变成分布式系统详解

·      Dubbo的六大特性是什么?对企业级开发有何好处?Dubbo的作用简要说明、快速演示Dubbo调用示例

·      Dubbo中协议、注册中心、动态代理机制是怎么达到可扩展的?Dubbo的扩展机制源码解析

·      Dubbo从服务提供者到注册中心到消费者调用服务中间的流程源码解析

·      Dubbo的监控中心以及管理平台的使用,方便企业级开发与管理

 

分布式数据缓存(Redis)   

·      关系型数据库瓶颈与优化、ehcacheredis的对比?nosql的使用场景

·      Redis基本数据类型、比如map的使用场景?有什么优缺点?什么时候用map等等

·      Redis高级特性、如何来理解redis的单线程但是高性能?如何理解redisepoll

·      Redis持久化、什么情况下需要持久化?方案是什么?有什么优缺点?如何优雅的选择持久化方案

·      Redis项目中应用、reids的高级命令mgetscan?为什么有scan这条命令,如何理解redis的游标?

·      单机版redis的安装以及redis生产环境启动方案

·      redis持久化机对于生产环境中的灾难恢复的意义

·      redis主从架构下如何才能做到99.99%的高可用性

·      在项目中重新搭建一套主从复制+高可用+masterredis cluster集群

·      redis在实践中的一些常见问题以及优化思路(包含linux内核参数优化)

·      redis的RDB持久化配置以及数据恢复实验

·      redis的RDBAOF两种持久化机制的优劣势对比

 

分布式数据存储(mycat)   

·      分库分表场景介绍

·      Mycat原理解析

·      分库分表实战

 

分布式Rabbitmq 

·      RabbitMQ环境安装&RabbitMQ整体架构与消息流转&交换机详解

·      消息如何保障 100% 的投递成功方案&企业消息幂等性概念及业界主流解决方案

·      Confirm确认消息详解&Return返回消息详解&消费端的限流策略&消费端ACK与重回队列机制

·      SpringAMQP用户管理组件-RabbitAdmin应用&SpringAMQP消息模板组件-RabbitTemplate实战

·      SpringAMQP消息容器-SimpleMessageListenerContainer详解&SpringAMQP消息适配器-MessageListenerAdapter使用

·      RabbitMQ与SpringBoot2.0整合实战&RabbitMQSpring Cloud Stream整合实战

·      RabbitMQ集群架构模式&RabbitMQ集群镜像队列构建实现可靠性存储&RabbitMQ集群整合负载均衡基础组件HaProxy_

7、项目实战

· 


相关文章

  • 我的Java秋招面经大合集(包含BAT头条网易等公司)
    阿里面经 蚂蚁金服研发面经 我参与了阿里巴巴中间件部门的提前批面试,一共经历了四次面试,拿到了口头offer. 最后我走的是蚂蚁金服财富事业群的流程,经历了四次面试,包括一次交叉面,最终拿到了蚂蚁金服的意向书,评级为A. 腾讯面经 岗位是后 ...
  • Java基础12:深入理解Class类和Object类
    这是一位阿里 Java 工程师的技术小站,作者黄小斜,专注 Java 相关技术:SSM.SpringBoot.MySQL.分布式.中间件.集群.Linux.网络.多线程,偶尔讲点Docker.ELK,同时也分享技术干货和学习经验,致力于Ja ...
  • 鉴于Java 7 SE(标准版)现已正式发布,甲骨文和Java社区进程组织(JCP)的成员们已开始仔细考虑为这种编程语言的下一个版本Java SE 8添加什么功能特性.为这个新版本提上议程的工作是:设计面向云计算的Java. Mark Li ...
  • 【Docker系列】全面认识Docker和基本指令
    什么是Docker Docker 是一个开源的应用容器引擎,基于Go语言,诞生于2013年初,最初发起者是dotCloud公司,开发者可以打包应用到一个轻量级.可移植的容器中,然后发布到主流Linux系统上运行. Docker与传统虚拟机差 ...
  • http://blog.csdn.net/qq_19776363/article/details/47440873 一:对象模块. 一.初始化 1.对this.super,构造函数,构造代码块,静态代码块总结. this:代表当前对象,也就 ...

2020 unjeep.com webmaster#unjeep.com
12 q. 0.012 s.
京ICP备10005923号