• 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 支付系统

    • 微信支付对接
    • 支付宝对接
    • 银联对接开发
  • 相关阅读:
    Java中的CopyOnWrite
    Collection和Collections的区别
    java中值类型与引用类型的关系
    Xml的用途
    js弹框的3种方法
    文件夹重定向失败解决方案
    网络管理人员经常遇到的十个问题(转载)
    QTP之下拉列表单选框…
    Windows脚本宿主对象模型
    QTP报错“缺少对象WScript”
  • 原文地址:https://www.cnblogs.com/yaoyuan2/p/11314463.html
Copyright © 2020-2023  润新知