阿里技術崗位要求及體系圖:
好多人對阿里巴巴技術崗的體系結構及級別的技術要求設定不太清楚,想去面試也不知道面試什么級別的崗位,下面說說阿里的技術體系又是一個怎么樣的水平劃分!
阿里P6(技術主管)
作業要求:
能獨立解決問題,制定系統的技術實作方案,考核會涉及部分技術深度,
技能要求:
除P5的技能外,還需掌握以下技能,以下技能至少需要做到熟悉,
架構設計,運維能力,作業系統,
附圖:

技術四面面試題如下
一面(問了資料結構、jvm、鎖等):
-
自我介紹和專案
-
HashMap底層如何實作?
-
Hash一致演算法?
-
說說HashMap和ConcurrentHashMap的區別?treemap和HashMap的區別?
-
java的記憶體磁區?
-
java物件的回收方式,回收演算法?
-
CMS和G1了解嗎?
-
CMS解決什么問題,說一下回收的程序?
-
CMS回收停頓了幾次?
-
java堆疊什么時候會記憶體溢位,java堆呢,說一種場景?
-
集合類如何解決這個問題(軟參考和弱參考),講下這個兩個參考的區別?
-
java里的鎖了解哪些?
-
synchronized鎖升級的程序(偏向鎖到輕量鎖再到重量級鎖),分別如何實作的,解決的是哪些問題?
-
Tomcat的基本架構是什么?
-
什么是類加載器?
-
說說雙親委派模型機制?
-
GC的機制是什么?GC演算法和回收策略?
-
未來的職業規劃?
二面(執行緒、資料庫、快取、協議等):
-
講一下專案
-
執行緒池由哪些組件組成?
-
有哪些執行緒池,分別怎么使用?拒絕策略有哪些?
-
什么時候多執行緒會發生死鎖,寫一個例子?
-
Redis的資料結構是什么?執行緒模型說一下?
-
講講Redis的資料淘汰機制?
-
說說Redis的資料一致性問題?
-
Redis的分布式怎么做?
-
RPC講一下?
-
三次握手和四次揮手?如果沒有三次握手有問題嗎?
-
Http請求程序,DNS決議的程序?
-
InnoDB支持的四種事務隔離級別名稱是什么?有什么區別?說說MySQL隔離級別?
-
事務的特性及慢查詢?
-
BTree機制說一下?
-
說說MySQL常用的優化方法
三面(分布式,訊息佇列等):
-
自我介紹
-
cap了解嗎,分別指什么?
-
強一致性和弱一致性有什么方法來實作的?
-
負載均衡怎么實作?為什么這么做?
-
快取雪崩說下?
-
MySQL主從復制怎么實作的?具體原理是什么?有什么優缺點?
-
講講分布式事務?
-
訊息佇列,用到什么場景(削峰,限流,異步)?
-
zk的性能瓶頸怎么克服?
-
講了下kafka,怎么保證資料不丟失?確保訊息不會重復消費?
-
訊息送達確認是怎么實作的?
四面(從專案講起):
-
說了自己的專案
-
主要用到的架構,做了些什么?
-
比較復雜的業務邏輯講一下?
-
遇到很難解決的問題和突破識訓
-
以后的打算和未來的職業發展,談談自己的看法
并發編程:
-
什么是多執行緒并發和并行?
-
什么是執行緒安全問題?
-
什么是共享變數的記憶體可見性問題?
-
什么是Java中原子性操作?
-
什么是Java中的CAS操作,AtomicLong實作原理?
-
什么是Java指令重排序?
-
Java中Synchronized關鍵字的記憶體語意是什么?
-
Java中Volatile關鍵字的記憶體語意是什么?
-
什么是偽共享,為何會出現,以及如何避免?
-
什么是可重入鎖、樂觀鎖、悲觀鎖、公平鎖、非公平鎖、獨占鎖、共享鎖?
-
講講ThreadLocal 的實作原理?
-
ThreadLocal 作為變數的執行緒隔離方式,其內部是如何做的?
-
說說InheritableThreadLocal 的實作原理?
-
InheritableThreadLocal 是如何彌補 ThreadLocal 不支持繼承的特性?
-
CyclicBarrier內部的實作與 CountDownLatch 有何不同?
-
亂數生成器 Random 類如何使用 CAS 演算法保證多執行緒下新種子的唯一性?
-
ThreadLocalRandom 是如何利用 ThreadLocal 的原理來解決 Random 的局限性?
-
Spring 框架中如何使用 ThreadLocal 實作 request scope 作用域 Bean?
-
并發包中鎖的實作底層(對AQS的理解)?
-
講講獨占鎖 ReentrantLock 原理?
-
談談讀寫鎖 ReentrantReadWriteLock 原理?
-
StampedLock 鎖原理的理解?
-
談下對基于鏈表的非阻塞無界佇列 ConcurrentLinkedQueue 原理的理解?
-
ConcurrentLinkedQueue 內部是如何使用 CAS 非阻塞演算法來保證多執行緒下入隊出隊操作的執行緒安全?
-
基于鏈表的阻塞佇列 LinkedBlockingQueue 原理,
JVM
-
Java 記憶體分配?
-
Java 堆的結構是什么樣子的?
-
什么是堆中的永久代(Perm Gen space)?
-
簡述各個版本記憶體區域的變化?
-
說說各個區域的作用?
-
Java 中會存在記憶體泄漏嗎,簡述一下?
-
Java 類加載程序?
-
描述一下 JVM 加載 Class 檔案的原理機制?
-
什么是類加載器?
-
類加載器有哪些?
-
什么是tomcat類加載機制?
-
類加載器雙親委派模型機制?
-
什么是GC? 為什么要有 GC?
-
簡述一下Java 垃圾回識訓制?
-
如何判斷一個物件是否存活?
-
垃圾回收的優點和原理,并考慮 2 種回識訓制?
-
垃圾回收器的基本原理是什么?
-
垃圾回收器可以馬上回收記憶體嗎?有什么辦法主動通知虛擬機進行垃圾回收?
-
深拷貝和淺拷貝?
-
System.gc() 和 Runtime.gc() 會做些什么?
-
如果物件的參考被置為 null,垃圾收集器是否會立即釋放物件占用的記憶體?
-
什么是分布式垃圾回收(DGC)?它是如何作業的?
Spring
-
為什么需要代理模式?
-
講講靜態代理模式的優點及其瓶頸?
-
對Java 介面代理模式的實作原理的理解?
-
如何使用 Java 反射實作動態代理?
-
Java 介面代理模式的指定增強?
-
談談對Cglib 類增強動態代理的實作?
-
point cut,advice,Join point是什么?
-
join point 和 point cut 的區別?
-
怎么理解面向切面編程的切面?
-
談談對SpringAOP Weaving(織入)的理解?
-
談談SpringAOP Introduction(引入)的理解?
-
講解OOP與AOP的簡單對比?
-
講解JDK 動態代理和 CGLIB 代理原理以及區別?
-
講解Spring 框架中基于 Schema 的 AOP 實作原理?
-
講解Spring 框架中如何基于 AOP 實作的事務管理?
-
談談對控制反轉的設計思想的理解?
-
怎么理解 Spring IOC 容器?點擊這里統統拿走
資料庫
-
MySQL 有哪些存盤引擎啊?都有什么區別?
-
Float、Decimal 存盤金額的區別?
-
Datetime、Timestamp 存盤時間的區別?
-
Char、Varchar、Varbinary 存盤字符的區別?
-
什么是索引?
-
對比一下B+樹索引和 Hash索引?
-
MySQL索引型別有?
-
如何管理 MySQL索引?
-
對Explain引數及重要引數的理解?
-
索引利弊是什么及索引分類?
-
二叉樹的裝置是什么?
-
聚簇索引和非聚簇索引的區別?
-
B+tree 如何進行優化?索引遵循哪些原則?存盤引擎會進行哪些自動優化?到底何時索引會失效?
-
索引與鎖有什么關系?
-
還有什么其他的索引型別,各自索引有哪些優缺點?
-
談談對Innodb事務的理解?
-
說說資料庫事務特點及潛在問題?
-
什么是MySQL隔離級別?
-
有多少種事務失效的場景,如何解決?
快取
-
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如何保證資料的可靠傳輸的?
分布式
-
什么是CAP定理?
-
說說CAP理論和BASE理論?
-
什么是最終一致性?最終一致性實作方式?
-
什么是一致性Hash?
-
講講分布式事務?
-
如何實作分布式鎖?
-
如何實作分布式 Session?
-
如何保證訊息的一致性?
-
負載均衡的理解?
-
正向代理和反向代理?
-
CDN實作原理?
-
怎么提升系統的QPS和吞吐?
-
Dubbo的底層實作原理和機制?
-
描述一個服務從發布到被消費的詳細程序?
-
分布式系統怎么做服務治理?
-
訊息中間件如何解決訊息丟失問題?
-
Dubbo的服務請求失敗怎么處理?
-
對分布式事務的理解?
-
如何實作負載均衡,有哪些演算法可以實作?
-
Zookeeper的用途,選舉的原理是什么?
-
講講資料的垂直拆分水平拆分?
面試經驗總結
一定要謹慎對待寫在簡歷上的東西,一定要對簡歷上的東西非常熟悉,因為一般情況下,面試官都是會根據你 的簡歷來問的;
能有一個上得了臺面的專案也非常重要,這很可能是面試官會大量發問的地方,所以在面試 之前好好回顧一下自己所做的專案;
和面試官聊基礎知識比如設計模式的使用、多執行緒的使用等等,可以結合具體的專案場景或者是自己在平時是 如何使用的;
建議提前了解一下自己想要面試的公司的價值觀,判斷一下自己究竟是否適合這個公司,
另外,我個人覺得面試也像是一場全新的征程,失敗和勝利都是平常之事,所以,勸各位不要因為面試失敗而灰心、 喪失斗志,也不要因為面試通過而沾沾自喜,等待你的將是更美好的未來,繼續加油!
看完上面的內容,相信大家已經有了清晰的目標與方向,針對部分同學年后跳槽面試,我們為大家準備了十分全面的復習檔案,
轉發+關注,然后添加我的 VX (tkzl6666)即可獲得這些Java面試復習資料的免費領取方式



轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/163477.html
標籤:java
