java架构师学习路线(BAT必备)

简介: 废话不多说,直接上路线,分阶段进行的,从简单基础入手

阶段一:数据结构


一、基础


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)责任链模式

(6)命令模式

(7)备忘录模式

(8)状态模式

(9)访问者模式

(10)中介者模式

(11)解释器模式

  • ★★☆ 设计模式的作用。
  • ★★★ 手写单例模式,特别是双重检验锁以及静态内部类。
  • ★★★ 手写工厂模式。
  • ★★★ 理解 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、Linux加密解密原理以及数据安全

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

(2)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

(2)Future&Callable

(3)CompletionService

(4)ExcutorService

(5)ThreadFactory

(6)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架构(七大模块概述)

(2)Spring上下文和容器

(3)Spring加载机制

(4)SpringBean探秘

(5)AOP与代理


3、SpringMVC


(1)SpringMVC架构与流程

(2)DispatcherServlet的实现

(3)每一控制器的流程解读


4、Springboot


(1)SpringBoot入门

(2)整合其他技术

(3)打包部署

(4)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服务治理

(2)Zookeeper协调

(3)Nginx


Spring常见面试题

SpringMVC常见面试题


阶段十一:数据库


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

5、Tomcat

6、正则表达式

7、Maven

8、k8s

相关文章
|
3月前
|
设计模式 Java 关系型数据库
【Java笔记+踩坑汇总】Java基础+JavaWeb+SSM+SpringBoot+SpringCloud+瑞吉外卖/谷粒商城/学成在线+设计模式+面试题汇总+性能调优/架构设计+源码解析
本文是“Java学习路线”专栏的导航文章,目标是为Java初学者和初中高级工程师提供一套完整的Java学习路线。
444 37
|
3月前
|
设计模式 架构师 Java
Java开发工程师转架构师需要学习什么
Java开发工程师转型为架构师需掌握多项技能:精通Java及框架、数据库与分布式系统;熟悉设计模式与架构模式;积累项目经验;提升沟通与领导力;持续学习新技术;培养系统设计与抽象能力;了解中间件及开发工具;并注重个人特质与职业发展。具体路径应结合个人目标与实际情况制定。
71 18
|
3月前
|
Kubernetes Java Android开发
用 Quarkus 框架优化 Java 微服务架构的设计与实现
Quarkus 是专为 GraalVM 和 OpenJDK HotSpot 设计的 Kubernetes Native Java 框架,提供快速启动、低内存占用及高效开发体验,显著优化了 Java 在微服务架构中的表现。它采用提前编译和懒加载技术实现毫秒级启动,通过优化类加载机制降低内存消耗,并支持多种技术和框架集成,如 Kubernetes、Docker 及 Eclipse MicroProfile,助力开发者轻松构建强大微服务应用。例如,在电商场景中,可利用 Quarkus 快速搭建商品管理和订单管理等微服务,提升系统响应速度与稳定性。
78 5
|
3月前
|
Java API 开发者
【Java模块化新飞跃】JDK 22模块化增强:构建更灵活、更可维护的应用架构!
【9月更文挑战第9天】JDK 22的模块化增强为开发者构建更灵活、更可维护的应用架构提供了强有力的支持。通过模块化设计、精细的依赖管理和丰富的工具支持,开发者可以更加高效地开发和管理应用,提高应用的性能和可维护性。
93 10
|
4月前
|
存储 NoSQL Java
一天五道Java面试题----第十一天(分布式架构下,Session共享有什么方案--------->分布式事务解决方案)
这篇文章是关于Java面试中的分布式架构问题的笔记,包括分布式架构下的Session共享方案、RPC和RMI的理解、分布式ID生成方案、分布式锁解决方案以及分布式事务解决方案。
一天五道Java面试题----第十一天(分布式架构下,Session共享有什么方案--------->分布式事务解决方案)
|
3月前
|
存储 缓存 Java
JAVA并发编程系列(11)线程池底层原理架构剖析
本文详细解析了Java线程池的核心参数及其意义,包括核心线程数量(corePoolSize)、最大线程数量(maximumPoolSize)、线程空闲时间(keepAliveTime)、任务存储队列(workQueue)、线程工厂(threadFactory)及拒绝策略(handler)。此外,还介绍了四种常见的线程池:可缓存线程池(newCachedThreadPool)、定时调度线程池(newScheduledThreadPool)、单线程池(newSingleThreadExecutor)及固定长度线程池(newFixedThreadPool)。
|
4月前
|
消息中间件 Java 数据库
解密 Java 后台架构设计之道
解密 Java 后台架构设计之道
66 2
|
3月前
|
架构师 Java 程序员
Java架构师的工作年龄是什么?
Java架构师的工作年龄是什么?
67 0
|
4月前
|
Java Docker 微服务
微服务架构的概念、特点以及如何在Java Web开发中实现微服务。
微服务架构的概念、特点以及如何在Java Web开发中实现微服务。
98 1
|
4月前
|
Java Docker 微服务
微服务架构已成为Java Web开发的新趋势,它通过将应用分解为独立、可部署的服务单元,提升了系统的灵活性与可维护性。
微服务架构已成为Java Web开发的新趋势,它通过将应用分解为独立、可部署的服务单元,提升了系统的灵活性与可维护性。每个服务负责特定功能,通过轻量通信机制协作。利用Spring Boot与Spring Cloud等框架可简化开发流程,支持模块化设计、独立部署、技术多样性和容错性,适应快速迭代的需求。
78 1