資料內(nèi)容:
該在哪些方面準(zhǔn)備面試?
我們大部分去準(zhǔn)備面試的時(shí)候,可能會(huì)去看很多的八股文,覺得只要熟練掌握了這些答案,就可以面到很好的薪
資,找到理想的工作
但是其實(shí)不是這樣的,八股文只是你的 基礎(chǔ)能力 ,稍微有一點(diǎn)水平的面試官都不會(huì)去像一個(gè)提問機(jī)器一樣,一道
一道題去問你,而是希望通過對(duì)話去了解你對(duì)項(xiàng)目、對(duì)技術(shù)的看法,以及你解決問題的能力, 因此需要從面試底層
的思維去了解面試,再針對(duì)性的學(xué)習(xí),才可以有一個(gè)比較好的效果!
你可以這樣想一下,假如你是面試官,你會(huì)怎樣去考察面試者的一個(gè)綜合能力呢?作為面試官,你肯定知道面試者
背了許多的八股文,所以八股文只是你去找工作要過的第一關(guān),接下來,面試官會(huì)通過某一個(gè)具體問題,一點(diǎn)一點(diǎn)
追問細(xì)節(jié),以及生產(chǎn)中所需要的一些問題,通過這些才可以真正看出來你是否真的掌握了這些積能,以及你在做項(xiàng)
目中,是否有自己的思考!
接下來,從 5 個(gè)方面來說一下去面試的話,需要從哪幾個(gè)方面準(zhǔn)備
首先是 技術(shù)廣度
因?yàn)槊嬖嚬僬衅改?,是需要去做?xiàng)目干活的,那么首先你的技術(shù)棧必須要匹配到公司的技術(shù)棧,并且到公司可以直
接上手做項(xiàng)目,而不是再從零去培養(yǎng),因此會(huì)先考察技術(shù)的廣度,判斷你都了解學(xué)習(xí)過哪些技術(shù)
就比如 Redis 用過嗎?項(xiàng)目中哪里用到了 Redis 呢?原理了解嗎?集群部署?高可用原理?單線程高并發(fā)的原理?
Dubbo 用過嗎?底層原理?用在項(xiàng)目中是做什么?
RocketMQ 用過嗎?為什么用呢?那里引入了?底層原理?遇到過消息丟失的問題嗎?集群部署?高可用如何保
證?
還有就是基礎(chǔ)的 JVM、數(shù)據(jù)庫(事務(wù)、索引、sql 優(yōu)化、鎖)、并發(fā)方面的內(nèi)容
如果這些都答得比較好的話,證明這些技術(shù)是掌握了的,那么招你來工作基本可以直接上手,一般薪資在 10-20k
之間
第二點(diǎn)是 項(xiàng)目經(jīng)驗(yàn)
通過項(xiàng)目經(jīng)驗(yàn)一般就能看出來你做項(xiàng)目中有沒有自己的一些想法以及思考,項(xiàng)目經(jīng)驗(yàn)方面通常會(huì)問你學(xué)到的各種技
術(shù)是如何結(jié)合項(xiàng)目進(jìn)行落地的,以及落地之后碰到的一些實(shí)踐中的問題,如何解決,有沒有對(duì)項(xiàng)目做過一些優(yōu)化之
類的?
比如說你學(xué)了 RocketMQ,那么你在項(xiàng)目中怎么去使用 RocketMQ 了呢?具體在那些場(chǎng)景下引入了 RocketMQ,不引
入的話會(huì)有什么問題呢?
如果使用 RocketMQ,碰到消息丟失了怎么處理呢?消息如果大量積壓怎么處理呢?
如果使用分庫分表,那么核心的表每天新增了多少 GB 的數(shù)據(jù)呢?目前表中已經(jīng)有多少的數(shù)據(jù)了?什么時(shí)候分的
表?什么時(shí)候分的庫?
在分表之前,SQL 性能是怎樣的呢?分表之后 SQL 性能提升了多少?
分庫之前每個(gè)數(shù)據(jù)庫上放多少 GB 的數(shù)據(jù)?分庫之后拆分到了幾臺(tái)數(shù)據(jù)庫服務(wù)器上去?每臺(tái)服務(wù)器存放多少的數(shù)據(jù)
呢?
像這些問題,在自己學(xué)習(xí)的時(shí)候可能就忽略了,并且缺乏一些自己的思考,以及由于是自己學(xué)習(xí)的項(xiàng)目,確實(shí)沒有
碰到過這些場(chǎng)景,因此對(duì)于這些 細(xì)節(jié)性 問題,一定要去多查一些資料,提前準(zhǔn)備,多思考!
第三點(diǎn)是 生產(chǎn)經(jīng)驗(yàn)
這塊主要是去問真正將項(xiàng)目部署在生產(chǎn)環(huán)境中,會(huì)遇到的一些情況以及在技術(shù)調(diào)研時(shí),你是如何進(jìn)行技術(shù)選型的?
就比如在分布式這塊,如果項(xiàng)目中使用了 網(wǎng)關(guān) ,那么在使用網(wǎng)關(guān)之前,你都調(diào)研了哪幾種網(wǎng)關(guān),為什么選
用了某一個(gè)網(wǎng)關(guān)?
這一塊內(nèi)容的話,其實(shí)也就是考察你使用網(wǎng)關(guān)的時(shí)候,有沒有去了解其他同樣類型的產(chǎn)品,其實(shí)選用網(wǎng)關(guān)主要就是
看這個(gè)網(wǎng)關(guān)的功能、使用的開發(fā)語言、以及擴(kuò)展性方面是否符合自己公司的需要
那么項(xiàng)目在上線之后,你們公司的系統(tǒng)每天的訪問量是多少呢?高峰期的訪問量呢?
對(duì)于訪問量,可能大多數(shù)人心里不太有底,因?yàn)榭赡芷綍r(shí)做的項(xiàng)目訪問量并不算太高并且項(xiàng)目也可能是自己學(xué)習(xí)做
的,根本就沒有訪問量,那么怎么去知道系統(tǒng)的訪問量呢?可以對(duì)不同配置的機(jī)器進(jìn)行 壓測(cè) 分析,壓的多了,心
里就有數(shù)了
網(wǎng)關(guān)一般都怎么部署了?部署了幾臺(tái)機(jī)器?每臺(tái)機(jī)器的配置是怎樣的呢?如果服務(wù)上下線,網(wǎng)關(guān)如何實(shí)現(xiàn)的
動(dòng)態(tài)路由呢?
其實(shí)網(wǎng)關(guān)一般部署 2-3 臺(tái)就可以,每臺(tái)的配置的話,看自己系統(tǒng)的訪問量,4C8G 的服務(wù)器,每秒鐘扛?jìng)€(gè)幾百的請(qǐng)求
肯定是沒有問題的,8C16G 的機(jī)器可以進(jìn)一步抗上千的請(qǐng)求,16C32G 和 32C64G 的機(jī)器當(dāng)然抗的請(qǐng)求量就更多了
有沒有網(wǎng)關(guān)的擴(kuò)容方案呢?如果壓力過大,網(wǎng)關(guān)如何擴(kuò)容?有沒有計(jì)算過網(wǎng)關(guān)請(qǐng)求路由的性能如何?一個(gè)請(qǐng)
求經(jīng)過網(wǎng)關(guān)路由的平均時(shí)長(zhǎng)是多少呢?
這其實(shí)就是考察對(duì)網(wǎng)關(guān)的一些監(jiān)控指標(biāo)有沒有做過,以及并發(fā)量上來之后,有沒有什么具體的應(yīng)對(duì)方案
生產(chǎn)經(jīng)驗(yàn)這一塊的內(nèi)容,可能對(duì)于很多應(yīng)屆生來說不會(huì)考,這屬于是工作 5 年左右的工程師所需要掌握的內(nèi)容,但
是了解一下,以后在工作中會(huì)更加注意這方面的細(xì)節(jié),如果生產(chǎn)經(jīng)驗(yàn)的內(nèi)容掌握的沒有問題的話,30k 左右還是可
以的
第四點(diǎn)是 技術(shù)深度
這一點(diǎn)就是考察某一個(gè)技術(shù)的底層原理了,比如 RocketMQ 的源碼、Dubbo 的源碼等等
那么你可能會(huì)有疑問,有必要學(xué)習(xí)源碼嗎?學(xué)習(xí)那么多有什么用呢?
你對(duì)源碼的掌握程度其實(shí)就決定了你的技術(shù)深度,在生產(chǎn)環(huán)境中,如果碰到了一些異?;蛘邎?bào)錯(cuò),導(dǎo)致系統(tǒng)掛掉,
了解源碼,你可以很快的就去定位到問題出現(xiàn)在了哪里,可以直接根據(jù)異常去分析技術(shù)的源碼, 從源碼級(jí)別定位到
問題的所在 ,再去解決問題,這就是學(xué)習(xí)源碼帶來的 競(jìng)爭(zhēng)力
比如,Dubbo 報(bào)錯(cuò),RocketMQ 出現(xiàn)異常無法寫入下消息,ES 查詢很慢等等,如果不了解源碼,可能對(duì)于這些問
題,根本就無從下手