2019年阿里java面試題

1、JVM與性能優化ios

描述一下 JVM 加載 Class 文件的原理機制?
什麼是類加載器?
類加載器有哪些?
什麼是tomcat類加載機制?
類加載器雙親委派模型機制?
Java 內存分配?
Java 堆的結構是什麼樣子的?
簡述各個版本內存區域的變化?
說說各個區域的做用?
Java 中會存在內存泄漏嗎,簡述一下?
Java 類加載過程?
什麼是GC? 爲何要有 GC?
簡述一下Java 垃圾回收機制?
如何判斷一個對象是否存活?
垃圾回收的優勢和原理,並考慮 2 種回收機制?基本原理是什麼?
深拷貝和淺拷貝?
什麼是分佈式垃圾回收(DGC)?它是如何工做的?
在 Java 中,對象何時能夠被垃圾回收?
簡述Minor GC 和 Major GC?
Java 中垃圾收集的方法有哪些?
講講你理解的性能評價及測試指標?
經常使用的性能優化方式有哪些?
說說分佈式緩存和一致性哈希?
什麼是GC調優?

2、Redisgit

redis數據結構有哪些?
Redis緩存穿透,緩存雪崩?
如何使用Redis來實現分佈式鎖?
Redis的併發競爭問題如何解決?
Redis持久化的幾種方式,優缺點是什麼,怎麼實現的?
Redis的緩存失效策略?
Redis集羣,高可用,原理?
Redis緩存分片?
Redis的數據淘汰策略?
redis隊列應用場景?
分佈式使用場景(儲存session)?

3、網絡編程程序員

TCP創建鏈接和斷開鏈接的過程?
HTTP協議的交互流程? HTTP和HTTPS的差別,SSL的交互流程?
TCP的滑動窗口協議有什麼用?
HTTP協議都有哪些方法?
Socket交互的基本流程?
講講tcp協議(建連過程,慢啓動,滑動窗口,七層模型)?
webservice協議(wsdl/soap格式,與restt辦議的區別)?
說說Netty線程模型,什麼是零拷貝?
TCP三次握手、四次揮手?
DNS解析過程?
TCP如何保證數據的可靠傳輸的?

4、設計模式與重構web

說說幾個常見的設計模式(23種設計模式)?
設計一個工廠的包的時候會遵循哪些原則?
列舉一個使用了 Visitor/ Decorator模式的開源項目/庫?
如何實現一個單例?
代理模式(動態代理)?
單例模式(懶漢模式,惡漢模式,併發初始化如何解決, volatile與lock的使用)?
JDK源碼裏面都有些什麼讓你印象深入的設計模式使用,舉例看看?

5、分佈式面試

什麼是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=6718341264640573956redis

 

===========================算法

一、架構師築基必備技能

1.1 併發編程進階sql

  • 線程共享和協做
  • 併發工具類實戰
  • 站在巨人肩上操做CAS
  • 阿里面試常問的顯示鎖和AQS
  • 併發容器源碼解析及應用實戰
  • 僅會用線程池是不夠的
  • 架構師應該知道的併發安全解決方案
  • 性能優化實戰
  • 併發編程面試題目聚集

1.2 JVM性能深度調優mongodb

  • 15種方式編寫高效優雅Java程序實戰
  • Java內村區域深刻解析
  • 垃圾回收器和內存分配策略
  • 你必須知道的JVM執行子系統
  • JVM類加載機制及執行引擎原理
  • JVM性能優化實戰
  • JVM面試錦囊妙計

1.3 網絡編程與高效IOshell

  • 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.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.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.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.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.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.1 自我修養

  • 職業路線圖和我的發展
  • 程序員職業的四大象限
  • 需求分析和調整定位
  • 職涯經驗和建議
  • 不只僅是程序員
  • 觀察潮流和市場
  • 創建我的品牌
  • 分享和傳遞價值
  • 開源項目
  • 跳槽篇
  • 跳槽爲了什麼?不爲何?
  • 跳槽的意義和原則
  • 跳槽的節奏和路線圖
  • 實操篇
  • 求職材料應該如何寫
  • 尋找求職渠道
  • 面試準備及總結

7.2 項目管理

  • 什麼是敏捷管理
  • 敏捷開發與傳統項目管理區別
  • 數捷開發的要素
  • 敏捷開發的關鍵角色
  • 敏捷開發的流程和工具
  • Product Backlog和Sprint Backlog
  • 衝刺( Sprint )
  • 燃盡圖( Burn Down Chart )
  • 利用看板進行可視化管理
  • 關於敏捷開發的會議
  • 阿里項目實戰講解

八、零距離互聯網項目實戰

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 支付系統

  • 微信支付對接
  • 支付寶對接
  • 銀聯對接開發
相關文章
相關標籤/搜索