四面阿里巴巴回來(lái)分享面經(jīng)總結(jié),定級(jí)P7架構(gòu)師

阿里技術(shù)崗位要求及體系圖:

好多人對(duì)阿里巴巴技術(shù)崗的體系結(jié)構(gòu)及級(jí)別的技術(shù)要求設(shè)置不太清楚,想去面試也不知道面試什么級(jí)別的崗位,下面說(shuō)說(shuō)阿里的技術(shù)體系又是一個(gè)怎么樣的水平劃分!

阿里P6(技術(shù)主管)

工作要求:

能獨(dú)立解決問(wèn)題,制定系統(tǒng)的技術(shù)實(shí)現(xiàn)方案,考核會(huì)涉及部分技術(shù)深度。

技能要求:

除P5的技能外,還需掌握以下技能,以下技能至少需要做到熟悉。

架構(gòu)設(shè)計(jì),運(yùn)維能力,操作系統(tǒng)。

阿里P7(技術(shù)專家)

工作要求:

能獨(dú)立帶領(lǐng)產(chǎn)品或業(yè)務(wù)向前發(fā)展,并在產(chǎn)品或業(yè)務(wù)的規(guī)劃上具備一定的能力。

技能要求:

在P6的基礎(chǔ)上,需要在Java開發(fā)、Web開發(fā)上至少有一項(xiàng)能做到精通。

在架構(gòu)設(shè)計(jì)上至少在某一架構(gòu)領(lǐng)域達(dá)到精通。

附圖:

技術(shù)四面面試題如下

一面(問(wèn)了數(shù)據(jù)結(jié)構(gòu)、jvm、鎖等):

自我介紹和項(xiàng)目

HashMap底層如何實(shí)現(xiàn)?

Hash一致算法?

說(shuō)說(shuō)HashMap和ConcurrentHashMap的區(qū)別?treemap和HashMap的區(qū)別?

java的內(nèi)存分區(qū)?

java對(duì)象的回收方式,回收算法?

CMS和G1了解嗎?

CMS解決什么問(wèn)題,說(shuō)一下回收的過(guò)程?

CMS回收停頓了幾次?

java棧什么時(shí)候會(huì)內(nèi)存溢出,java堆呢,說(shuō)一種場(chǎng)景?

集合類如何解決這個(gè)問(wèn)題(軟引用和弱引用),講下這個(gè)兩個(gè)引用的區(qū)別?

java里的鎖了解哪些?

synchronized鎖升級(jí)的過(guò)程(偏向鎖到輕量鎖再到重量級(jí)鎖),分別如何實(shí)現(xiàn)的,解決的是哪些問(wèn)題?

Tomcat的基本架構(gòu)是什么?

什么是類加載器?

說(shuō)說(shuō)雙親委派模型機(jī)制?

GC的機(jī)制是什么?GC算法和回收策略?

未來(lái)的職業(yè)規(guī)劃?

二面(線程、數(shù)據(jù)庫(kù)、緩存、協(xié)議等):

講一下項(xiàng)目

線程池由哪些組件組成?

有哪些線程池,分別怎么使用?拒絕策略有哪些?

什么時(shí)候多線程會(huì)發(fā)生死鎖,寫一個(gè)例子?

Redis的數(shù)據(jù)結(jié)構(gòu)是什么? 線程模型說(shuō)一下?

講講Redis的數(shù)據(jù)淘汰機(jī)制?

說(shuō)說(shuō)Redis的數(shù)據(jù)一致性問(wèn)題?

Redis的分布式怎么做?

RPC講一下?

三次握手和四次揮手?如果沒有三次握手有問(wèn)題嗎?

Http請(qǐng)求過(guò)程,DNS解析的過(guò)程?

InnoDB支持的四種事務(wù)隔離級(jí)別名稱是什么?有什么卻別?說(shuō)說(shuō)MySQL隔離級(jí)別?

事務(wù)的特性及慢查詢?

BTree機(jī)制說(shuō)一下?

說(shuō)說(shuō)MySQL常用的優(yōu)化方法?

三面(分布式,消息隊(duì)列等):

自我介紹

cap了解嗎,分別指什么?

強(qiáng)一致性和弱一致性有什么方法來(lái)實(shí)現(xiàn)的?

負(fù)載均衡怎么實(shí)現(xiàn)?為什么這么做?

緩存雪崩說(shuō)下?

MySQL主從復(fù)制怎么實(shí)現(xiàn)的?具體原理是什么?有什么優(yōu)缺點(diǎn)?

講講分布式事務(wù)?

消息隊(duì)列,用到什么場(chǎng)景(削峰,限流,異步)?

zk的性能瓶頸怎么克服?

講了下kafka,怎么保證數(shù)據(jù)不丟失?確保消息不會(huì)重復(fù)消費(fèi)?

消息送達(dá)確認(rèn)是怎么實(shí)現(xiàn)的?

四面(從項(xiàng)目講起):

說(shuō)了自己的項(xiàng)目

主要用到的架構(gòu),做了些什么?

比較復(fù)雜的業(yè)務(wù)邏輯講一下?

遇到很難解決的問(wèn)題和突破收貨

以后的打算和未來(lái)的職業(yè)發(fā)展,談?wù)勛约旱目捶?/p>

BAT面試Java崗常問(wèn)題錦集

轉(zhuǎn)發(fā)+關(guān)注我私信回復(fù)【面試資料】領(lǐng)取面試答案

并發(fā)編程:

什么是多線程并發(fā)和并行?

什么是線程安全問(wèn)題?

什么是共享變量的內(nèi)存可見性問(wèn)題?

什么是Java中原子性操作?

什么是Java中的CAS操作,AtomicLong實(shí)現(xiàn)原理?

什么是Java指令重排序?

Java中Synchronized關(guān)鍵字的內(nèi)存語(yǔ)義是什么?

Java中Volatile關(guān)鍵字的內(nèi)存語(yǔ)義是什么?

什么是偽共享,為何會(huì)出現(xiàn),以及如何避免?

什么是可重入鎖、樂觀鎖、悲觀鎖、公平鎖、非公平鎖、獨(dú)占鎖、共享鎖?

講講ThreadLocal 的實(shí)現(xiàn)原理?

ThreadLocal 作為變量的線程隔離方式,其內(nèi)部是如何做的?

說(shuō)說(shuō)InheritableThreadLocal 的實(shí)現(xiàn)原理?

InheritableThreadLocal 是如何彌補(bǔ) ThreadLocal 不支持繼承的特性?

CyclicBarrier內(nèi)部的實(shí)現(xiàn)與 CountDownLatch 有何不同?

隨機(jī)數(shù)生成器 Random 類如何使用 CAS 算法保證多線程下新種子的唯一性?

ThreadLocalRandom 是如何利用 ThreadLocal 的原理來(lái)解決 Random 的局限性?

Spring 框架中如何使用 ThreadLocal 實(shí)現(xiàn) request scope 作用域 Bean?

并發(fā)包中鎖的實(shí)現(xiàn)底層(對(duì)AQS的理解)?

講講獨(dú)占鎖 ReentrantLock 原理?

談?wù)勛x寫鎖 ReentrantReadWriteLock 原理?

StampedLock 鎖原理的理解?

談下對(duì)基于鏈表的非阻塞無(wú)界隊(duì)列 ConcurrentLinkedQueue 原理的理解?

ConcurrentLinkedQueue 內(nèi)部是如何使用 CAS 非阻塞算法來(lái)保證多線程下入隊(duì)出隊(duì)操作的線程安全?

基于鏈表的阻塞隊(duì)列 LinkedBlockingQueue 原理。

阻塞隊(duì)列LinkedBlockingQueue 內(nèi)部是如何使用兩個(gè)獨(dú)占鎖 ReentrantLock 以及對(duì)應(yīng)的條件變量保證多線程先入隊(duì)出隊(duì)操作的線程安全?

為什么不使用一把鎖,使用兩把為何能提高并發(fā)度?

談?wù)剬?duì)無(wú)界優(yōu)先級(jí)隊(duì)列 PriorityBlockingQueue 原理?

PriorityBlockingQueue 內(nèi)部使用堆算法保證每次出隊(duì)都是優(yōu)先級(jí)最高的元素,元素入隊(duì)時(shí)候是如何建堆的,元素出隊(duì)后如何調(diào)整堆的平衡的?

分析下JUC 中倒數(shù)計(jì)數(shù)器 CountDownLatch 的使用與原理?

CountDownLatch 與線程的 Join 方法區(qū)別是什么?

講講對(duì)JUC 中回環(huán)屏障 CyclicBarrier 的使用?

CyclicBarrier內(nèi)部的實(shí)現(xiàn)與 CountDownLatch 有何不同?

Semaphore 的內(nèi)部實(shí)現(xiàn)是怎樣的?

簡(jiǎn)單對(duì)比同步器實(shí)現(xiàn),談?wù)勀愕目捶ǎ?/p>

并發(fā)組件CopyOnWriteArrayList 是如何通過(guò)寫時(shí)拷貝實(shí)現(xiàn)并發(fā)安全的 List?

JVM

Java 內(nèi)存分配?

Java 堆的結(jié)構(gòu)是什么樣子的?

什么是堆中的永久代(Perm Gen space)?

簡(jiǎn)述各個(gè)版本內(nèi)存區(qū)域的變化?

說(shuō)說(shuō)各個(gè)區(qū)域的作用?

Java 中會(huì)存在內(nèi)存泄漏嗎,簡(jiǎn)述一下?

Java 類加載過(guò)程?

描述一下 JVM 加載 Class 文件的原理機(jī)制?

什么是類加載器?

類加載器有哪些?

什么是tomcat類加載機(jī)制?

類加載器雙親委派模型機(jī)制?

什么是GC? 為什么要有 GC?

簡(jiǎn)述一下Java 垃圾回收機(jī)制?

如何判斷一個(gè)對(duì)象是否存活?

垃圾回收的優(yōu)點(diǎn)和原理,并考慮 2 種回收機(jī)制?

垃圾回收器的基本原理是什么?

垃圾回收器可以馬上回收內(nèi)存嗎?有什么辦法主動(dòng)通知虛擬機(jī)進(jìn)行垃圾回收?

深拷貝和淺拷貝?

System.gc() 和 Runtime.gc() 會(huì)做些什么?

如果對(duì)象的引用被置為 null,垃圾收集器是否會(huì)立即釋放對(duì)象占用的內(nèi)存?

什么是分布式垃圾回收(DGC)?它是如何工作的?

串行(serial)收集器和吞吐量(throughput)收集器的區(qū)別是什么?

在 Java 中,對(duì)象什么時(shí)候可以被垃圾回收?

簡(jiǎn)述Minor GC 和 Major GC?

JVM 的永久代中會(huì)發(fā)生垃圾回收么?

Java 中垃圾收集的方法有哪些?

講講你理解的性能評(píng)價(jià)及測(cè)試指標(biāo)?

常用的性能優(yōu)化方式有哪些?

說(shuō)說(shuō)分布式緩存和一致性哈希?

同步與異步?阻塞與非阻塞?

什么是GC調(diào)優(yōu)?

常見異步的手段有哪些?

Spring

為什么需要代理模式?

講講靜態(tài)代理模式的優(yōu)點(diǎn)及其瓶頸?

對(duì)Java 接口代理模式的實(shí)現(xiàn)原理的理解?

如何使用 Java 反射實(shí)現(xiàn)動(dòng)態(tài)代理?

Java 接口代理模式的指定增強(qiáng)?

談?wù)剬?duì)Cglib 類增強(qiáng)動(dòng)態(tài)代理的實(shí)現(xiàn)?

point cut,advice,Join point是什么?

join point 和 point cut 的區(qū)別?

怎么理解面向切面編程的切面?

談?wù)剬?duì)SpringAOP Weaving(織入)的理解?

談?wù)凷pringAOP Introduction(引入)的理解?

講解OOP與AOP的簡(jiǎn)單對(duì)比?

講解JDK 動(dòng)態(tài)代理和 CGLIB 代理原理以及區(qū)別?

講解Spring 框架中基于 Schema 的 AOP 實(shí)現(xiàn)原理?

講解Spring 框架中如何基于 AOP 實(shí)現(xiàn)的事務(wù)管理?

談?wù)剬?duì)控制反轉(zhuǎn)的設(shè)計(jì)思想的理解?

怎么理解 Spring IOC 容器?

Spring 中有多少種 IOC 容器?

Spring IOC 怎么管理 Bean 之間的依賴關(guān)系,怎么避免循環(huán)依賴?

對(duì)Spring IOC 容器的依賴注入的理解?

說(shuō)說(shuō)對(duì)Spring IOC 的單例模式和高級(jí)特性?

BeanFactory 和 FactoryBean 有什么區(qū)別,BeanFactory 和 ApplicationContext 又有什么不同?

Spring 在 Bean 創(chuàng)建過(guò)程中是如何解決循環(huán)依賴的?

談?wù)凷pring Bean 創(chuàng)建過(guò)程中的設(shè)計(jì)模式?

數(shù)據(jù)庫(kù)

MySQL 有哪些存儲(chǔ)引擎啊?都有什么區(qū)別?

Float、Decimal 存儲(chǔ)金額的區(qū)別?

Datetime、Timestamp 存儲(chǔ)時(shí)間的區(qū)別?

Char、Varchar、Varbinary 存儲(chǔ)字符的區(qū)別?

什么是索引?

對(duì)比一下B+樹索引和 Hash索引?

MySQL索引類型有?

如何管理 MySQL索引?

對(duì)Explain參數(shù)及重要參數(shù)的理解?

索引利弊是什么及索引分類?

二叉樹的轉(zhuǎn)置是什么?

聚簇索引和非聚簇索引的區(qū)別?

B+tree 如何進(jìn)行優(yōu)化?索引遵循哪些原則?存儲(chǔ)引擎會(huì)進(jìn)行哪些自動(dòng)優(yōu)化?到底何時(shí)索引會(huì)失效?

索引與鎖有什么關(guān)系?

還有什么其他的索引類型,各自索引有哪些優(yōu)缺點(diǎn)?

談?wù)剬?duì)Innodb事務(wù)的理解?

說(shuō)說(shuō)數(shù)據(jù)庫(kù)事務(wù)特點(diǎn)及潛在問(wèn)題?

什么是MySQL隔離級(jí)別?

有多少種事務(wù)失效的場(chǎng)景,如何解決?

一致性非鎖定讀和一致性鎖定讀是什么?

Innodb如何解決幻讀?

講講Innodb行鎖?

死鎖及監(jiān)控是什么?

自增長(zhǎng)與鎖 ,鎖的算法,鎖問(wèn)題,鎖升級(jí)是什么?

樂觀鎖的線程如何做失敗補(bǔ)償?

高并發(fā)場(chǎng)景(領(lǐng)紅包)如何防止死鎖,保證數(shù)據(jù)一致性?

談?wù)凪ySQL的鎖并發(fā)?

回表和集群因子是什么?

講講表與表之間的關(guān)系?

了解查詢優(yōu)化器模塊;

查詢優(yōu)化的基本思路是什么?

說(shuō)說(shuō)MySQL讀寫分離、分庫(kù)分表?

Query語(yǔ)句對(duì)數(shù)據(jù)庫(kù)性能有什么影響?

Schema設(shè)計(jì)對(duì)系統(tǒng)性能有什么影響?

硬件環(huán)境對(duì)數(shù)據(jù)庫(kù)的性能有什么影響?

表結(jié)構(gòu)對(duì)性能有什么影響?

淺談索引優(yōu)化?

JOIN的原理是什么?

說(shuō)說(shuō)Sql優(yōu)化的幾點(diǎn)原則?

MySQL表設(shè)計(jì)及規(guī)范?

說(shuō)說(shuō)MySQL幾種存儲(chǔ)引擎應(yīng)用場(chǎng)景?

MySQL常用優(yōu)化方式有哪些?

MySQL常用監(jiān)控?

MySQL瓶頸分析?

緩存

redis數(shù)據(jù)結(jié)構(gòu)有哪些?

Redis緩存穿透,緩存雪崩?

如何使用Redis來(lái)實(shí)現(xiàn)分布式鎖?

Redis的并發(fā)競(jìng)爭(zhēng)問(wèn)題如何解決?

Redis持久化的幾種方式,優(yōu)缺點(diǎn)是什么,怎么實(shí)現(xiàn)的?

Redis的緩存失效策略?

Redis集群,高可用,原理?

Redis緩存分片?

Redis的數(shù)據(jù)淘汰策略?

redis隊(duì)列應(yīng)用場(chǎng)景?

分布式使用場(chǎng)景(儲(chǔ)存session)?

網(wǎng)絡(luò)編程

TCP建立連接和斷開連接的過(guò)程?

HTTP協(xié)議的交互流程,HTTP和HTTPS的差異,SSL的交互流程?

TCP的滑動(dòng)窗口協(xié)議有什么用?

HTTP協(xié)議都有哪些方法?

Socket交互的基本流程?

講講tcp協(xié)議(建連過(guò)程,慢啟動(dòng),滑動(dòng)窗口,七層模型)?

webservice協(xié)議(wsdl/soap格式,與restt辦議的區(qū)別)?

說(shuō)說(shuō)Netty線程模型,什么是零拷貝?

TCP三次握手、四次揮手?

DNS解析過(guò)程?

TCP如何保證數(shù)據(jù)的可靠傳輸?shù)模?/p>

分布式

什么是CAP定理?

說(shuō)說(shuō)CAP理論和BASE理論?

什么是最終一致性?最終一致性實(shí)現(xiàn)方式?

什么是一致性Hash?

講講分布式事務(wù)?

如何實(shí)現(xiàn)分布式鎖?

如何實(shí)現(xiàn)分布式 Session?

如何保證消息的一致性?

負(fù)載均衡的理解?

正向代理和反向代理?

CDN實(shí)現(xiàn)原理?

怎么提升系統(tǒng)的QPS和吞吐?

Dubbo的底層實(shí)現(xiàn)原理和機(jī)制?

描述一個(gè)服務(wù)從發(fā)布到被消費(fèi)的詳細(xì)過(guò)程?

分布式系統(tǒng)怎么做服務(wù)治理?

消息中間件如何解決消息丟失問(wèn)題?

Dubbo的服務(wù)請(qǐng)求失敗怎么處理?

對(duì)分布式事務(wù)的理解?

如何實(shí)現(xiàn)負(fù)載均衡,有哪些算法可以實(shí)現(xiàn)?

Zookeeper的用途,選舉的原理是什么?

講講數(shù)據(jù)的垂直拆分水平拆分?

zookeeper原理和適用場(chǎng)景?

zookeeper watch機(jī)制?

redis/zk節(jié)點(diǎn)宕機(jī)如何處理?

分布式集群下如何做到唯一序列號(hào)?

用過(guò)哪些MQ,怎么用的,和其他mq比較有什么優(yōu)缺點(diǎn),MQ的連接是線程安全的嗎?

MQ系統(tǒng)的數(shù)據(jù)如何保證不丟失?

列舉出能想到的數(shù)據(jù)庫(kù)分庫(kù)分表策略?

面試經(jīng)驗(yàn)總結(jié)

一定要謹(jǐn)慎對(duì)待寫在簡(jiǎn)歷上的東西,一定要對(duì)簡(jiǎn)歷上的東西非常熟悉。因?yàn)橐话闱闆r下,面試官都是會(huì)根據(jù)你 的簡(jiǎn)歷來(lái)問(wèn)的;

能有一個(gè)上得了臺(tái)面的項(xiàng)目也非常重要,這很可能是面試官會(huì)大量發(fā)問(wèn)的地方,所以在面試 之前好好回顧一下自己所做的項(xiàng)目;

和面試官聊基礎(chǔ)知識(shí)比如設(shè)計(jì)模式的使用、多線程的使用等等,可以結(jié)合具體的項(xiàng)目場(chǎng)景或者是自己在平時(shí)是 如何使用的;

建議提前了解一下自己想要面試的公司的價(jià)值觀,判斷一下自己究竟是否適合這個(gè)公司。

另外,我個(gè)人覺得面試也像是一場(chǎng)全新的征程,失敗和勝利都是平常之事。所以,勸各位不要因?yàn)槊嬖囀《倚摹?喪失斗志。也不要因?yàn)槊嬖囃ㄟ^(guò)而沾沾自喜,等待你的將是更美好的未來(lái),繼續(xù)加油!

最后針對(duì)于上面的面試問(wèn)到的知識(shí)點(diǎn)我總結(jié)出了互聯(lián)網(wǎng)公司Java程序員面試涉及到的絕大部分面試題及答案做成了文檔和架構(gòu)視頻資料免費(fèi)分享給大,家希望能幫助到您面試前的復(fù)習(xí)且找到一個(gè)好的工作,也節(jié)省大家在網(wǎng)上搜索資料的時(shí)間來(lái)學(xué)習(xí),也可以關(guān)注我一下以后會(huì)有更多干貨分享。

轉(zhuǎn)發(fā)+關(guān)注私信回復(fù)【面試資料】領(lǐng)取面試資料以及阿里面試答案(威xuanwo013)

想要全套資料的可以私信我哦,喜歡的話點(diǎn)個(gè)小關(guān)注,來(lái)個(gè)小贊吧!!!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。