每到一年一度的跳槽求職高峰季,就會有很多人問我,你們公司還缺人么,你們用哪些技術(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頻率很高,如何解決?
此類問題一般從以下幾點入手:
觀察GC日志,判斷是否有內(nèi)存泄漏,或者存在的內(nèi)部不合理點。此處要求能熟悉各種linux命令,可以快速查看和定位。
調(diào)整JVM 參數(shù),如新生代,年老代大小,S0和S1大小比例,不同垃圾回收器的采用。并結(jié)合業(yè)務(wù)特點做進(jìn)一步分析。這里不但要求扎實的JVM內(nèi)存模型和理論,還要求對JVM的各種參數(shù)設(shè)置耳熟能詳,并能實踐操作。
Dump內(nèi)存,做進(jìn)一步的對象分析。
壓測腳本的編寫,性能問題解決前可以發(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è)計的很好,非常值得思考和借鑒。
自身多年的面試體會
項目中盡量多思考,迎難而上,如碰到復(fù)雜的性能,內(nèi)存泄露等問題的問題,往往是提升自己的機(jī)會,千萬要仔細(xì)研究解決,可以參考其他解決類似問題的文章和實踐經(jīng)驗,對技術(shù)深度的提升是很大的,關(guān)鍵時候可以讓你的面試官突然覺得面耳目一新。
重視解決問題的思路和方法,很多時候技術(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 找管理免費獲取
部分資料展示

