2019年阿里java面试题

一、JVM与性能优化

描述一下 JVM 加载 Class 文件的原理机制?
什么是类加载器?
类加载器有哪些?
什么是tomcat类加载机制?
类加载器双亲委派模型机制?
Java 内存分配?
Java 堆的结构是什么样子的?
简述各个版本内存区域的变化?
说说各个区域的作用?
Java 中会存在内存泄漏吗,简述一下?
Java 类加载过程?
什么是GC? 为什么要有 GC?
简述一下Java 垃圾回收机制?
如何判断一个对象是否存活?
垃圾回收的优点和原理,并考虑 2 种回收机制?基本原理是什么?
深拷贝和浅拷贝?
什么是分布式垃圾回收(DGC)?它是如何工作的?
在 Java 中,对象什么时候可以被垃圾回收?
简述Minor GC 和 Major GC?
Java 中垃圾收集的方法有哪些?
讲讲你理解的性能评价及测试指标?
常用的性能优化方式有哪些?
说说分布式缓存和一致性哈希?
什么是GC调优?

二、Redis

redis数据结构有哪些?
Redis缓存穿透,缓存雪崩?
如何使用Redis来实现分布式锁?
Redis的并发竞争问题如何解决?
Redis持久化的几种方式,优缺点是什么,怎么实现的?
Redis的缓存失效策略?
Redis集群,高可用,原理?
Redis缓存分片?
Redis的数据淘汰策略?
redis队列应用场景?
分布式使用场景(储存session)?

三、网络编程

TCP建立连接和断开连接的过程?
HTTP协议的交互流程? HTTP和HTTPS的差异,SSL的交互流程?
TCP的滑动窗口协议有什么用?
HTTP协议都有哪些方法?
Socket交互的基本流程?
讲讲tcp协议(建连过程,慢启动,滑动窗口,七层模型)?
webservice协议(wsdl/soap格式,与restt办议的区别)?
说说Netty线程模型,什么是零拷贝?
TCP三次握手、四次挥手?
DNS解析过程?
TCP如何保证数据的可靠传输的?

四、设计模式与重构

说说几个常见的设计模式(23种设计模式)?
设计一个工厂的包的时候会遵循哪些原则?
列举一个使用了 Visitor/ Decorator模式的开源项目/库?
如何实现一个单例?
代理模式(动态代理)?
单例模式(懒汉模式,恶汉模式,并发初始化如何解决, volatile与lock的使用)?
JDK源码里面都有些什么让你印象深刻的设计模式使用,举例看看?

五、分布式

什么是CAP定理?
说说CAP理论和BASE理论?
什么是最终一致性?最终一致性实现方式?
什么是一致性Hash?
讲讲分布式事务?
如何实现分布式锁?
如何实现分布式 Session?
如何保证消息的一致性?
负载均衡的理解?
正向代理和反向代理?
CDN实现原理?
怎么提升系统的QPS和吞吐?
Dubbo的底层实现原理和机制?
描述一个服务从发布到被消费的详细过程?
分布式系统怎么做服务治理?
消息中间件如何解决消息丢失问题?
Dubbo的服务请求失败怎么处理?
对分布式事务的理解?
如何实现负载均衡,有哪些算法可以实现?
Zookeeper的用途,选举的原理是什么?
讲讲数据的垂直拆分水平拆分?
zookeeper原理和适用场景?
zookeeper watch机制?
redis/zk节点宕机如何处理?
分布式集群下如何做到唯一序列号?
用过哪些MQ,怎么用的,和其他mq比较有什么优缺点,MQ的连接是线程安全的吗?
MQ系统的数据如何保证不丢失?
列举出能想到的数据库分库分表策略?

 

转自:https://www.toutiao.com/a6718341264640573956/?tt_from=weixin&utm_campaign=client_share&wxshare_count=1&timestamp=1565147115&app=news_article&utm_source=weixin&utm_medium=toutiao_ios&req_id=201908071105151720170000011018D65&group_id=6718341264640573956

 

===========================

1、架构师筑基必备技能

1.1 并发编程进阶

  • 线程共享和协作
  • 并发工具类实战
  • 站在巨人肩上操作CAS
  • 阿里面试常问的显示锁和AQS
  • 并发容器源码解析及应用实战
  • 仅会用线程池是不够的
  • 架构师应该知道的并发安全解决方案
  • 性能优化实战
  • 并发编程面试题目汇集

1.2 JVM性能深度调优

  • 15种方式编写高效优雅Java程序实战
  • Java内村区域深入解析
  • 垃圾回收器和内存分配策略
  • 你必须知道的JVM执行子系统
  • JVM类加载机制及执行引擎原理
  • JVM性能优化实战
  • JVM面试锦囊妙计

1.3 网络编程与高效IO

  • http/tcp/udp网络协议原理透析
  • 原生JDK网络编程
  • Netty应用快速入门
  • Netty粘包/半包问题解决实战
  • Netty进阶和实战
  • Netty源码深入分析
  • Netty常被问到那些面试题汇集

1.4 深入Tomcat底层

  • 10分钟熟悉你常用却又不知道的Tomcat体系架构
  • 你必须得知道的Tomcat容器及运行机制
  • Tomcat类加载机制分析
  • Tomcat核心组件源码解读
  • Tomcat高级进阶
  • Tomcat面试题整理

1.5 MySQL深度优化

  • MySQL存储引荸选型及注意事项
  • 解读MySQL的共享锁及排它锁
  • MySQL事务及隔离性级别
  • 30分钟深入掌握执行计划
  • 解读BTree与B+ Tree索引
  • SQL慢查询配置及分析
  • SQL优化策略及实战
  • MySQL面试题汇总

1.6 架构基础必备Linux

  • Linux安装指南
  • Linux基础命令
  • 用户与用户组系列操作
  • 文件与权限系列操作
  • 架构师应该掌握的shell脚本基础

2、设计思想解读开源框架

2.1 六大原则

  • 单一职责原则
  • 开闭原则
  • 里氏替换原则
  • 依赖倒置原则
  • 接口隔离原则
  • 迪米特法则

2.2 结构型模式

  • 桥接模式
  • 适配器模式
  • 装饰器模式
  • 代理模式
  • 组合模式

2.3 创建型模式

  • 建造者模式
  • 单例模式
  • 抽象工厂模式
  • 工厂方法模式
  • 静态工厂模式

2.4 行为型模式

  • 模板方法模式
  • 策略模式
  • 观察者模式
  • 责任链模式
  • 命令模式
  • 访问者模式

2.5 Spring 5 源码解读

  • 5分钟快速理解Spring核心流程
  • 熟练掌握Spring工作常用注解及陷阱
  • 后置处理器源码解读
  • I0C容器源码解读
  • AOP源码解读
  • 声明式事务源码解读
  • Spring源码面试题汇总

2.6 Spring MVC 框架源码解读

  • Servlet3.0 6
  • 性能实战
  • 手写SpringMVC实战

2.7 Mybatis框架源码解读

  • 5分钟掌握MyBatis的配置使用
  • 动态SQL、缓存及关联查询深入讲解
  • 10分钟掌握Mybatis与Spring的集成实战
  • Mybatis插件开发及源码分析实战
  • 多级关联实战
  • 手写MyBatis框架实战
  • Mybatis常见面试题汇集

 

3、性能直升提升架构技术

3.1 分布式架构思维

  • 大型互联网架构演进过程
  • 架构师应具备的分布式知识
  • 主流分布式架构设计详解

3.2 Zookeeper

  • 5分钟搞定Zookeeper安装及指令解析
  • 原生客户端、zkclient、 curotor快速开发实战
  • Zookeeper应用实战
  • Zookeeper底层协议解读
  • Zookeeper面试资料整理

3.3 Nginx

  • 5分钟将你的项目实现Nginx分流
  • Nginx安装及基本使用
  • Nginx进程模型及配置详解
  • location规则及rewrite解析
  • 动静分离实战
  • 反向代理实战
  • 跨域配置实战
  • 缓存配置及Gzip配置实战
  • https安全认证实战
  • LVS高可用实战
  • Nginx那些面试题汇总

3.4 消息中间件概述

  • 消息中间件和RPC的区别
  • 消息中间件使用场景介绍
  • ActiveMQ、RabbitMQ、 RocketMQ、 Kafka对比
  • 消息中间件的编年史

3.5 ActiveMQ

  • 3分钟快速安装ActiveMQ
  • JMS规范解读
  • 原生ActiveMQ的API编程
  • ActiveMQ高级特性和用法
  • 限时订单实战
  • 用户注册的异步处理实战
  • 企业级高可用集群部署实战

3.6 RabbitMQ

  • Linux下安装与配置
  • 消息发布与消费权衡
  • 消息的拒绝怎么解决
  • 控制队列与消息属性
  • 与Spring集成完成应用解耦实战
  • 集群化与镜像队列实战
  • RabbitMQ常见面试题汇总

3.7 RocketMQ

  • RocketMQ快速安装与配置
  • 消息发送与消费流程解读
  • RocketMQ消息存储、消息过滤及事务消息
  • RocketMQ高可用实战
  • 整体Spring完成用户注册的异步处理实战
  • 整合Spring完成限时订单实战
  • RocketMQ面试题汇集

3.8 Kafka

  • Kafka快速安装部署
  • 开启Kafka的集群模式
  • Kafka的生产者和消费者
  • Kafka高级特性解读
  • Kafka处理请求的内部机制剖析
  • 整合Spring完成削峰填谷实战
  • Kafka面试题汇集

3.9 Elastic

  • ElasticSearch
  • Logstash
  • Kibana
  • ELK常见面试题汇总

4、高效存储让项目性能起飞

4.1Redis

  • 5分钟搞定Linux下Redis安装
  • String, List, Hash、 Set、 Zset类型使用场景
  • 时间轴、队列应用场最设计实战
  • 购物车开发与设计实战
  • Redis与Lua模拟抢红包实战
  • 网站投票设计与开发实战
  • Lua+ Redis联合开发指南
  • Redis慢操作优化
  • Redis哨兵机制及底层机制分析
  • 10分钟搭建Redis高可用集群实战
  • 动态扩容、缩减集群节点实战
  • Redis常见面试题汇总

4.2 缓存解决方案

  • 15分钟掌握项目中SpringCache的用法
  • 缓存的一致性策略(更新及失效处理机制
  • 缓存雪崩解决方案
  • 缓存穿透方案

4.3 MongoDB

  • Mongodb使用场景分析
  • 20分钟玩转增删改查
  • MongoDB开发时你应该注意的事项
  • 安全设置及存储引擎分析指南
  • 性能调优与索实战
  • 复制架构解析实战
  • MongoDB分区实战

4.4 MySQL高可用

  • Mysql主从复制、读写分离高可用方案实战
  • Mysql+ Keepalived实现双主高可用方案实战
  • Mysq|实现分库分表高性能解决方案实战

4.5 Mycat

  • Mycat简介及用途
  • 基于Mycat实现Mysql读写分离实战
  • 基于Mycat实现数据库切分实战
  • 全局表、ER表、分片机制分析

4.6 Sharding-Sphere

  • Sharding-JDBC
  • 引擎原理与数据分片剖析
  • 读写分离
  • 编排治理
  • 分布式事务
  • 数据脱敏
  • Sharding-Proxy

4.7 FastDFS

  • 文件存储实战
  • 文件同步实战
  • 文件查询实战
  • 分布式部署实战

5、分布式扩展到微服务架构

5.1 从RPC开始

  • 服务注册与发布
  • 动态代理
  • 序列化与反射
  • 手写RPC框架实战

5.2 Dubbo

  • 10分钟学会Dubbo使用
  • 项目之间的依赖划分实战
  • 传统项目拆解分布式实战
  • Dubbo spi扩展实战
  • Dubbo源码深度解读
  • Dubbo面试题指南

5.3 Spring Boot

  • SpringBoot快速入门
  • 核心组件分析
  • 性能优化
  • jta+ atomikos分布式事务
  • SpringBoot核心源码解读
  • 手写SpringBoot实战
  • SpringBoot面试汇总

5.4 Spring Cloud Netflix

  • Zuul路由网关详解及源码探析
  • Ribbon客户端负载均衡原理与算法详解
  • Feign声明式服务调用方式实现
  • Hystrix服务熔断及服务降级实战
  • Eureka注册中心构件分析
  • Config配置服务中心与svn、git快速集成
  • BUS消息总线技术
  • Sleuth调用链路跟踪
  • Stream消息驱动的微服务
  • SpringCloud面试题目汇总

5.5 Spring Cloud Alibaba

  • NACOS
  • Nacos概述
  • Nacos- Discovery服务发现
  • 配置中心Nacos-Config
  • Sky Walking
  • 链路跟踪概述
  • 客户端/服务端实战
  • Assembly Plugin
  • Sentinel限流
  • Sentinel熔断器特性
  • Sentinel回退机制
  • Feign集成Sentinel
  • Sentinel-Dashboard
  • Seala分布式事务
  • 角色中的角色
  • Seata Server
  • Seata请求逻辑
  • 实战分布式事务

5.6 Docker

  • 5分搞懂定Docker安装与使用
  • Docker的基础操作
  • Docker File快速进阶
  • Docker网络与存储那些事
  • DockerCompose高阶用法
  • 微服务与Docker集成实现动态扩容实战

5.7 Kubernetes

  • Kubernetes简介及安装配置
  • Kubernetes核心原理
  • Kubernetes集群管理方案实战

5.8 Service Mesh

  • 10分钟快速入门与介绍
  • 核心组件解析
  • 如何用Helm部署Istio
  • 快速解析Istio的常用功能
  • Mixer适配器的应用
  • http流量管理实战
  • Istio的安全加固实战

6、分布式方案及团队协作工具

6.1 分布式事务解决方案

  • 事务与锁
  • 标准分布式事务
  • 两阶段提交
  • BASE理论与柔性事务
  • TCC方案
  • 补偿性方案
  • 异步确保型与最大努力型

6.2 单点登陆方案

  • 单点登陆的问题背景
  • 页面跨域问题
  • Session跨域共享方案
  • session的扩展

6.3 分布式任务调度方案

  • Quartz调度的用法
  • Elastic-Job示例
  • 分布式调度的疑难点
  • Quartz集群定制化分布式调度

6.4 Maven

  • 安装和配置
  • 使用入门
  • 坐标和依赖
  • 聚合与继承
  • 生命周期与插件
  • 仓库及版本管理
  • 私服- Nexus
  • 手写Maven插件实战

6.5 Jenkins

  • Jenkins远程测试
  • Jenkins持续部署
  • Jenkins自动部署
  • Jenkins分布式构建
  • Jenkins管理
  • Jekins安装

6.6 Git

  • 与SVN对比
  • 基本运作流程
  • Git常用操作及问题处理

7、架构师应具备职场软技能

7.1 自我修养

  • 职业路线图和个人发展
  • 程序员职业的四大象限
  • 需求分析和调整定位
  • 职涯经验和建议
  • 不仅仅是程序员
  • 观察潮流和市场
  • 建立个人品牌
  • 分享和传递价值
  • 开源项目
  • 跳槽篇
  • 跳槽为了什么?不为什么?
  • 跳槽的意义和原则
  • 跳槽的节奏和路线图
  • 实操篇
  • 求职材料应该如何写
  • 寻找求职渠道
  • 面试准备及总结

7.2 项目管理

  • 什么是敏捷管理
  • 敏捷开发与传统项目管理区别
  • 数捷开发的要素
  • 敏捷开发的关键角色
  • 敏捷开发的流程和工具
  • Product Backlog和Sprint Backlog
  • 冲刺( Sprint )
  • 燃尽图( Burn Down Chart )
  • 利用看板进行可视化管理
  • 关于敏捷开发的会议
  • 阿里项目实战讲解

8、零距离互联网项目实战

8.1 系统设计

  • 架构设计
  • 数据库设计
  • 部署设计
  • 基础开发框架讲解

8.2 商品管理子系统

  • 商品管理( mongodb )
  • 商品分类( mongodb )
  • 商品发布( nosql与mysq|数据同步)
  • 热卖商品排行( redis )

8.3 订单子系统

  • 分布式环境生成唯一编号( ZooKeeper )
  • 下单业务流程(消息中间件)
  • 订单可靠性
  • 秒杀功能( Redis )
  • 订单管理
  • 购物车功能( MongoDB)

8.4 搜索子系统

  • 基于ElasticSearch搜索引|擎的全文检索
  • 检索需求分析
  • 检索策略
  • 索引设置
  • 分词算法
  • 命中率优化
  • 订单实时统计

8.5 后台系统

  • 日常管理
  • 在线IM系统( WebSocket NO )
  • 用户行为分析
  • 报表大数据查询优化

8.6 分布式调度系统

  • 数据统计
  • 数据同步
  • 任务调度配置

8.7 用户管理子系统

  • 用户注册登录(二维码技术)
  • 权限控制( shiro )
  • 单点登录( session统-缓存、sso )

8.7 支付系统

  • 微信支付对接
  • 支付宝对接
  • 银联对接开发
posted @ 2019-08-07 11:55  遥远2  阅读(1254)  评论(0编辑  收藏  举报