BAT面試需要什么樣的程序員?阿里七年經(jīng)驗面試官現(xiàn)身說法;

每到一年一度的跳槽求職高峰季,就會有很多人問我,你們公司還缺人么,你們用哪些技術(shù)棧,有哪些是你們比較關(guān)注技術(shù)重點?

作為負(fù)責(zé)技術(shù)面試的我,每天面對數(shù)十甚至上百封簡歷,肯定要優(yōu)先做一輪篩選。那么哪些技術(shù)點或方向在篩選或面試時,會給我留下深刻印象呢?

我覺得優(yōu)秀的,有潛質(zhì)的程序員可以從以下幾點來體現(xiàn)。

一、性能調(diào)優(yōu)

幾乎每個JAVA后端開發(fā)程序員,都會在面試時碰到諸如如何性能調(diào)優(yōu)的問題,如何回答好這個問題,不僅僅是考察對JVM,內(nèi)存模型等的理解,更看中的是碰到性能問題時,排查問題的方法論和思路。

典型的一個場景是:在壓力測試時,發(fā)現(xiàn)FullGC頻率很高,如何解決?

此類問題一般從以下幾點入手:

  1. 觀察GC日志,判斷是否有內(nèi)存泄漏,或者存在的內(nèi)部不合理點。此處要求能熟悉各種linux命令,可以快速查看和定位。

  2. 調(diào)整JVM 參數(shù),如新生代,年老代大小,S0和S1大小比例,不同垃圾回收器的采用。并結(jié)合業(yè)務(wù)特點做進(jìn)一步分析。這里不但要求扎實的JVM內(nèi)存模型和理論,還要求對JVM的各種參數(shù)設(shè)置耳熟能詳,并能實踐操作。

  3. Dump內(nèi)存,做進(jìn)一步的對象分析。

  4. 壓測腳本的編寫,性能問題解決前可以發(fā)現(xiàn)問題,并能在問題解決后真實的驗證。

此類優(yōu)化不能用照本宣科式的回答,面試官一定會問實際中操作的場景,和解決問題的思路。雖然性能問題的原因是多種多樣的,但是解決問題的思路和方法論是可以明確的。

二、網(wǎng)絡(luò)框架的理解和使用

大家一定都聽過或使用過網(wǎng)絡(luò)異步框架Netty,甚至使用netty框架開發(fā)過一些應(yīng)用和功能。

但是大部分人僅限于對Netty的使用,甚至僅僅知道其他一些開源框架使用了Netty,但是在資深面試官眼里,Netty有很多值得學(xué)習(xí)和借鑒的地方,使用過Netty并且能對Netty的一些原理有一定的了解且能學(xué)以致用的Java程序員格外受歡迎。

一般來說,要求較高的面試官和技術(shù)經(jīng)理喜歡從Netty的設(shè)計模式角度深入的考察技術(shù)人員對網(wǎng)絡(luò)開發(fā)和相關(guān)理論的理解如:

1. Netty的Reactor模型如何設(shè)計,反應(yīng)在應(yīng)用里的模型是如何(見下圖)。

2. Netty的pipeline 責(zé)任鏈如何使用,業(yè)務(wù)場景中是否有類似的實踐經(jīng)驗。

3. 項目中有無使用Netty,并利用Netty進(jìn)行私有化協(xié)議設(shè)計。

同學(xué)們不僅要求能使用Netty,通過閱讀其源碼,理解其中的精髓,并能應(yīng)用在自己的實踐項目中,這個才是亮點和加分項。

三、開源服務(wù)化RPC框架的理解和使用

互聯(lián)網(wǎng)經(jīng)過十幾年的發(fā)展,早已經(jīng)從單體應(yīng)用發(fā)展為服務(wù)化應(yīng)用,大廠里系統(tǒng)和服務(wù)尤其如此。

拿經(jīng)典的dubbo 服務(wù)化框架舉例,當(dāng)前市面上有很多dubbo相關(guān)的文章和介紹,這里撇開不談,從技術(shù)負(fù)責(zé)人的角度來,我會更關(guān)心下面有關(guān)幾個dubbo相關(guān)的問題。

1. 技術(shù)選型:為什么選擇dubbo,而不選擇其他如spring cloud框架?

我認(rèn)為可以從如下考慮:

A)業(yè)務(wù)的特點以及可預(yù)見的后續(xù)的發(fā)展。作為高級技術(shù)人員,必須需要對業(yè)務(wù)的的發(fā)展做預(yù)計和規(guī)劃。

B)可用性要求,是否需要達(dá)到4個99(99.99%),需要支撐的峰值QPS,是否有業(yè)務(wù)的集中爆發(fā)點,如電商大促

C)團(tuán)隊的成熟度,一個成熟的團(tuán)隊可以很好的hold住復(fù)雜的開源框架,甚至做定制化開發(fā)。

技術(shù)選型話題雖然寬泛,但是最能體現(xiàn)體現(xiàn)技術(shù)人員的綜合能力,尤其結(jié)合業(yè)務(wù)特點后對技術(shù)框架深度和廣度的駕馭能力。

2. Dubbo底層走的是什么協(xié)議,如何處理異步轉(zhuǎn)同步?

大部分的Java開發(fā)都會直接使用dubbo,而不會去關(guān)心其底層一些技術(shù)細(xì)節(jié),但是一些細(xì)節(jié),如dubbo如何對對象進(jìn)行序列化,用了哪些序列化方式,這些在分布式項目中對提高應(yīng)用的處理速度,減少網(wǎng)絡(luò)開銷,都很大幫助。

同時RPC框架里如何將異步轉(zhuǎn)同步,也是需要技術(shù)人員非常關(guān)注的一面,里面相關(guān)的設(shè)計模式,多線程程高并發(fā)場景都是很多業(yè)務(wù)系統(tǒng)里真實需要和借鑒的。

3. Dubbo在高并發(fā)高可用等實踐場景需要認(rèn)真考慮的其他問題

使用了dubbo后,很多人覺得萬事大吉,其實并不是這樣,下面幾點還需要關(guān)心,并且這些就是體現(xiàn)你價值的地方

A) dubbo依賴了zooKeeper,但是萬一ZooKeeper宕機(jī)了怎么辦

B) 如果ZooKeeper假死,客戶端對服務(wù)端的調(diào)用是否會全部下線,如果是該如何避免

C) 如何監(jiān)控duubo的調(diào)用,并做到優(yōu)雅的客戶端無感發(fā)布

同學(xué)們可以自行思考,答案不是唯一,阿里有很多類似的項目,設(shè)計的很好,非常值得思考和借鑒。

自身多年的面試體會

  1. 項目中盡量多思考,迎難而上,如碰到復(fù)雜的性能,內(nèi)存泄露等問題的問題,往往是提升自己的機(jī)會,千萬要仔細(xì)研究解決,可以參考其他解決類似問題的文章和實踐經(jīng)驗,對技術(shù)深度的提升是很大的,關(guān)鍵時候可以讓你的面試官突然覺得面耳目一新。

  2. 重視解決問題的思路和方法,很多時候技術(shù)人員可以快速設(shè)計一個系統(tǒng)或解決一個問題,但是在資深工程師或面試官眼里可能并不是最優(yōu)方案。如何解決?

很多技術(shù)人員的項目和技術(shù)相對單一,長久以往,容易造成技術(shù)思路和視野的狹窄,接觸不到行業(yè)最新思路和動態(tài)或者當(dāng)前疑難問題的最佳解決方案。

阿里的產(chǎn)品覆蓋了互聯(lián)網(wǎng)的方方面面,期間碰到各種產(chǎn)品各種場景下的各種問題,很值得大家借鑒和學(xué)習(xí),擴(kuò)展自己的技術(shù)廣度和知識面。對于渴望實現(xiàn)技術(shù)和職業(yè)成長的程序員,可以看下以下福利:

大廠的Java程序員應(yīng)該掌握什么技術(shù)?

基礎(chǔ)板塊:

  • JVM性能調(diào)優(yōu)
  • Java程序性能優(yōu)化
  • Tomcat
  • 并發(fā)編程進(jìn)階
  • Mysql
  • 高性能Netty框架
  • Linux基礎(chǔ)與進(jìn)階

框架板塊:

  • IOC源碼解析
  • AOP源碼解析
  • Spring MVC
  • Mybatis

高性能板塊:

  • 分布式架構(gòu)思維
  • Zookeeper分布式環(huán)境指揮官
  • Nginx高并發(fā)分流進(jìn)階實戰(zhàn)
  • ActiveMq消息中間件
  • RabbitMq消息中間件
  • Kafka百萬級吞實戰(zhàn)
  • Memcached進(jìn)階實戰(zhàn)
  • .Redis高性能緩存數(shù)據(jù)庫
  • MongoDB進(jìn)階實戰(zhàn)
  • 高性能緩存開發(fā)實戰(zhàn)
  • Mysql高性能存儲實戰(zhàn)
  • FastDFS分布式文件存儲實戰(zhàn)
  • 高并發(fā)場景分布式解決方案實戰(zhàn)

微服務(wù)板塊

  • 基于分布式思想下的RPC解決方案
  • Dubbo應(yīng)用及源碼解讀
  • SpringBoot
  • SpringCloud應(yīng)用及源碼解讀
  • Docker虛擬化技術(shù)

團(tuán)隊開發(fā)工具:

  • Git
  • Maven
  • Jenkins
  • Sonar

項目實戰(zhàn)(這里以b2c商城為例)

  • 系統(tǒng)設(shè)計
  • 用戶管理子系統(tǒng)
  • 商品管理子系統(tǒng)
  • 搜索子系統(tǒng)
  • 訂單子系統(tǒng)
  • 支付系統(tǒng)
  • 分布式調(diào)度系統(tǒng)
  • 后臺系統(tǒng)

設(shè)計模式

  • 結(jié)構(gòu)型模式
  • UML
  • 創(chuàng)建型模式
  • 行為型模式

平臺限制,圖片需壓縮,需要以上架構(gòu)知識思維導(dǎo)圖高清Xmind版的進(jìn)我的一個學(xué)習(xí)交流平臺Q群:909666042 免費獲??!

最后福利來了:

Java核心知識點筆記、BAT大廠面試真題500+、嘔心瀝血整理的Java最全電子書180+及海量架構(gòu)視頻資料

資料領(lǐng)取方式:加群:909666042 找管理免費獲取

部分資料展示

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容