奇葩面试经历分享:喊价25K,HR 却给了30K!
作者:minus
微信公眾號:?石杉的架構(gòu)筆記(ID:shishan100)
?寫在前面
本文是樓主前兩個(gè)月 N 家公司的面試經(jīng)歷,總結(jié)復(fù)盤了面試現(xiàn)場,個(gè)人認(rèn)為干貨還是不少,在此和大家分享。
ps:至于標(biāo)題所說的薪資,是面試過程中一個(gè)有意思的小插曲,但是確有其事,不是標(biāo)題黨。。。這里先賣個(gè)關(guān)子,請各位看官往后看!^_^
自報(bào)家門
先做個(gè)自我介紹,樓主坐標(biāo)帝都,5年經(jīng)驗(yàn),跳槽之前在一家傳統(tǒng)小公司,年薪21萬。
這次面試前前后后大概兩個(gè)月的時(shí)間,面試了大概 6 家公司,命中 4 家,最終去了一家估值 70 億美金的生鮮電商獨(dú)角獸,年薪42萬,剛好翻倍。
面試過程
話不多說,直接進(jìn)入面試現(xiàn)場!
好未來
開始面試第一天上午投遞好未來,下午3點(diǎn)面試,一共面試了3輪,問的問題比較多。
第一輪
面試官看了我的簡歷,首先讓我畫出eureka的執(zhí)行流程,這塊在之前的準(zhǔn)備過程中有深入看過,因此比較流暢的畫出來并配合解釋說明
之后問到項(xiàng)目中使用分布式鎖解決緩存重建并發(fā)的問題,并要求畫出實(shí)際的執(zhí)行流程,數(shù)據(jù)庫也問的比較多,像事務(wù)的隔離級別,MySQL實(shí)現(xiàn)可重復(fù)讀的原理,索引等
面試官給出了一個(gè)場景,在數(shù)據(jù)庫主從同步的情況下,如果從庫同步主庫的數(shù)據(jù)延遲比較高,怎么才能在寫到主庫后立刻能夠讀取到數(shù)據(jù)。
我解釋了主從同步的原理,并以此說明主庫到從庫的復(fù)制一定是有延遲的,因此要保證當(dāng)寫到主庫的時(shí)候立刻能讀到數(shù)據(jù),要么就直接配置那個(gè)接口讀數(shù)據(jù)的話直接走主庫,因?yàn)檫@種寫完主庫立刻要讀取數(shù)據(jù)的場景比較少,可以做些特殊配置。
另一種方案就是在往主庫寫數(shù)據(jù)的時(shí)候,可以直接往內(nèi)存緩存中寫一份,設(shè)置一個(gè)較短的過期時(shí)間,后面可以直接從緩存中讀到數(shù)據(jù)。我說完之后,面試官也沒給出評價(jià),就這么過去了
此外,還問到一些基礎(chǔ)性的問題,比較印象深刻的是:在加鎖的時(shí)候,用什么鎖對象是內(nèi)存占用最小的,我說是Object對象,面試官說不對,我一時(shí)沒想出來,面試結(jié)束后和朋友探討,覺得應(yīng)該是長度為 0 的 byte 數(shù)組
其他還問到了Collections.sort()使用的排序算法,aqs,線程池,ThreadLocal等等問題,主要都是一些考察基本功的問題,一輪面試就這么過去了!
第二輪
面試官更關(guān)注對一些技術(shù)的理解,問到了ElasticSearch的一些基礎(chǔ)以及它和mysql的區(qū)別在哪里;eureka 和 zookeeper 做服務(wù)發(fā)現(xiàn)的區(qū)別在哪里;
還問了分布式限流有哪些方案,以及用線程池進(jìn)行限流的缺陷是什么,項(xiàng)目中系統(tǒng)日志的處理;還有 JVM 模型,JMM 模型,垃圾回收機(jī)制,垃圾收集器等問題。
之后聊了一些設(shè)計(jì)模式的使用,在項(xiàng)目中使用了哪些設(shè)計(jì)模式,對設(shè)計(jì)模式的幾個(gè)原則的理解。
第二輪結(jié)束后,由于第三輪的面試官在開會(huì),所以等了一段時(shí)間,等面試官來了之后,只聊了很短時(shí)間,面試官就說還有別的事,今天先到這里了。
主要問到了上家公司的加班情況,對加班的認(rèn)識(shí),職業(yè)規(guī)劃,也問了幾個(gè)技術(shù)問題,像tomcat的優(yōu)化這塊,自我感覺答的不是很好。
整個(gè)面試從3點(diǎn)到7點(diǎn),有點(diǎn)虎頭蛇尾的感覺,結(jié)束后也沒有消息了
58 到家
面試一共三輪,上午10點(diǎn)過去,兩輪技術(shù)面,下午兩點(diǎn)過去,等了一會(huì),然后跟hr聊了有半個(gè)多小時(shí),HR說明在一周之內(nèi)會(huì)有結(jié)果
第一輪
第一輪面試官的問題主要集中在基礎(chǔ)上,我大概羅列了問到的一些問題,不同的簡歷不同人肯定問的也不太一樣,有興趣的同學(xué)可以參考看看。
主要是 jvm 模型,鎖的原理,synchronized 和 reentrantlock的區(qū)別,偏向鎖/輕量級鎖/重量級鎖的原理,能否從偏向鎖直接升級成重量級鎖。
java并發(fā)包里有哪些類,如何使用,線程池原理和參數(shù)配置,jvm調(diào)優(yōu),堆大小的設(shè)置,多線程的線程數(shù)的設(shè)置,volatile原理,threadlocal原理和使用。
redis和zookeeper如何實(shí)現(xiàn)分布式鎖,redis的數(shù)據(jù)類型,一些具體命令,比如要獲取一個(gè)有序列表的前10個(gè)元素應(yīng)該用什么命令。
數(shù)據(jù)庫索引的使用,聚簇索引和非聚簇索引,沒有主鍵的話數(shù)據(jù)如何組織。
B+ 樹的原理,Innodb 引擎和 myisam 引擎的區(qū)別和使用場景,數(shù)據(jù)庫隔離級別和原理,MySQL的分庫分表,mq的可靠性和順序性,es插入數(shù)據(jù)的原理等。
第二輪
第二輪是部門leader來面試,這輪面試主要集中在框架源碼上,我畫出了源碼的執(zhí)行流程,之后面試官在一些點(diǎn)深問,因?yàn)檫@塊我看的比較全面,問的問題基本都答出來了
然后這里面試官還問了在源碼中我有學(xué)到什么東西,我講了使用配置類代替 properties 文件,volatile 在單例模式中的使用,內(nèi)存的多級緩存機(jī)制,線程池的各種不同應(yīng)用場景,MeasureRate統(tǒng)計(jì)一分鐘內(nèi)心跳次數(shù),批處理機(jī)制等。
這里我的回答主要集中在代碼編寫層面,也可以從架構(gòu)層面說下學(xué)到了哪些,我覺得后者更有高度。
最后我向面試官咨詢了這個(gè)崗位具體做的事情,部門是基礎(chǔ)服務(wù)部,面試官畫圖給我說明了部門內(nèi)部一些項(xiàng)目劃分,技術(shù)棧的使用,后續(xù)的規(guī)劃等內(nèi)容,并約我下午繼續(xù)跟hr聊
hr面
下午跟hr的面試,hr順著簡歷上的公司一個(gè)個(gè)聊,問了離職原因,公司情況,如何向上司提出離職的,團(tuán)隊(duì)規(guī)模,是否帶團(tuán)隊(duì)。
還問了上午面試的崗位知不知道具體要做什么,之后hr說了下公司的一些情況,上班時(shí)間,福利,加班情況,問了我現(xiàn)在的薪資情況,期望薪資,我問了下出結(jié)果的時(shí)間,hr說一周之內(nèi)。
第二周的周五下午六七點(diǎn)的時(shí)候,這家公司hr給我打電話,告訴我面試通過了,之后提到了給我的薪資,算下來竟然只給了我一個(gè)5%的漲幅。
hr給出的解釋是,因?yàn)槲仪凹夜旧弦荒曛话l(fā)了12薪,而他們有12薪和兩個(gè)多月的績效,用14個(gè)月的薪水除以12,算下來平均到每個(gè)月也能達(dá)到我期望薪資的水平。
這個(gè)計(jì)算方法實(shí)在是膈應(yīng)人,雖然hr后來表示可以跟CEO申請?zhí)岣呙吭碌腷ase(大概提高到10%的水平吧),不過當(dāng)時(shí)我已經(jīng)有較為滿意的offer了,還是決定不去這家了
某生鮮電商獨(dú)角獸
由于前面說了薪資,就不說具體公司名字了。這家公司我面試了兩天,一共三面,第一天筆試加初面,然后第二天有兩輪復(fù)試。
第一輪
一面主要還是基礎(chǔ),集中在IO / 并發(fā) / 緩存 / redis / zookeeper / 分布式 / JVM / 數(shù)據(jù)庫等。
其中問到 redis 的單線程模型的時(shí)候,我這塊了解的不是很清楚,只是知道使用NIO的方式,然后以自己的理解去說了,面試官表示這可能是我看過別的框架的模式,跟redis搞混了,不過也算是答上來一些了。
之后聊了一些項(xiàng)目的情況,比如每日的訪問量有多少,qps多少,訂單量多少等數(shù)據(jù),據(jù)此得出數(shù)據(jù)庫的訪問壓力如何。另外也深入問了使用分布式事務(wù)的一些問題,還有分布式事務(wù)在時(shí)間上的性能。
所以這里給各位兄弟強(qiáng)調(diào)一下,對自己的項(xiàng)目一定要非常熟悉,各個(gè)點(diǎn)都要考慮到。
一面跟面試官聊的還挺好,面試官也表示我的基礎(chǔ)還不錯(cuò),問我是不是平時(shí)都有學(xué)習(xí),之后就是約二面了,由于當(dāng)時(shí)已經(jīng)下午1點(diǎn)了,后面的面試官也在中午休息,而我下午也還有別的面試,因此hr跟我約第二天來復(fù)試
第二輪
二面的面試官也聊了基礎(chǔ)和一些設(shè)計(jì)上的問題,比如同時(shí)訪問三個(gè)有相同功能的api,要求將執(zhí)行最快的結(jié)果返回,有哪些方式,這塊主要還是考察對并發(fā)編程,并發(fā)控制的理解和掌握,有一些并發(fā)控制的類能夠做到;
其他的還問到了,要開發(fā)一個(gè)新的api,需要考慮哪些方面,把所有要考慮的地方都說出來,大家可以說下邊界處理,高可用,并發(fā)問題,可擴(kuò)展性,冪等性,重試機(jī)制等等,可以說的非常多
總體問了有6塊內(nèi)容吧,面試官一邊問也一邊在記錄,一些基礎(chǔ)的問題這里就不再多說了
第三輪
三面的面試官問的要更底層一些,Java線程與內(nèi)核線程的關(guān)系,與進(jìn)程的關(guān)系;關(guān)于并發(fā)我所了解的方方面面。
對于這個(gè),我從為什么有并發(fā),并發(fā)問題產(chǎn)生的根源,解決并發(fā)問題的一些理論,Java中解決并發(fā)問題的方式,不同方式的適用場景和對比等方面進(jìn)行了回答
另外還問到redis的幾種數(shù)據(jù)類型,以及每種數(shù)據(jù)類型的底層實(shí)現(xiàn),跳表這種數(shù)據(jù)結(jié)構(gòu)如何插入數(shù)據(jù), hash如何擴(kuò)容。
這塊我跟面試官說具體擴(kuò)容規(guī)則不太了解,然后向面試官說了我了解的Java中的HashMap 的擴(kuò)容規(guī)則和具體實(shí)現(xiàn)。
tips:面試時(shí)如果遇到自己不太熟悉的部分,可以稍作變通,把自己熟悉的內(nèi)容和面試官的問題結(jié)合起來。
之后又問了一些小的知識(shí)點(diǎn),有的也沒答好,像 copyOnWrite 就不知道用來做什么,然后就是一些為什么離職之類的問題,對未來職業(yè)發(fā)展的考慮等。
之后面試官問我有什么想了解的,也問了我的期望薪資,我說了具體的數(shù),也表示沒想要太多,更看重平臺(tái)的發(fā)展,最后面試官說明天hr會(huì)打電話給我
HR面
最后就是跟hr的溝通了,第二天hr打來電話告知面試通過,然后問了我期望薪資,溝通入職時(shí)間,之后加微信,按照hr的要求提供了一些材料,第二天就收到offer了
ps:最終樓主選擇了這家公司,除了很有競爭力的薪資之外,我還很看重這家公司的發(fā)展平臺(tái),因?yàn)樗麄冇蟹浅4蟮挠脩袅?#xff0c;會(huì)遇到各種技術(shù)挑戰(zhàn),是很好的提升鍛煉的機(jī)會(huì)。
然后這里有一個(gè)開篇提到的小插曲:當(dāng)時(shí)HR電話問我期望薪資的時(shí)候,我說25K。
結(jié)果后續(xù)加微信聊天時(shí),HR告訴我技術(shù)面試的反饋很好,決定給我28K,一個(gè)月還有2500的補(bǔ)助,算下來一個(gè)月有30K,發(fā)14個(gè)月。這種HR主動(dòng)加薪的事情我還是第一次見,意外之喜,哈哈!
玩吧
這家公司的職位是去做app后臺(tái)的,用戶量也不錯(cuò),面試一共兩輪技術(shù)面,最后是hr面。
第一輪
一面的時(shí)候,網(wǎng)絡(luò)這塊問的比較多,三次握手,四次揮手什么的,還有整個(gè)網(wǎng)絡(luò)請求的執(zhí)行流程,數(shù)據(jù)包的大小,對長連接的理解等。
然后數(shù)據(jù)庫這塊也問了一些,提供了一個(gè)場景,假如要實(shí)現(xiàn)一個(gè)最簡單的朋友圈,用戶可以看到朋友的朋友圈動(dòng)態(tài),朋友也可以看到用戶發(fā)的動(dòng)態(tài),然后問表的設(shè)計(jì)。
我說了自己的實(shí)現(xiàn),像用戶表,好友表。面試官問有沒有更好的方式,我沒答上來,面試官表示這個(gè)輕易可能想不到,就問別的問題了,別的也沒什么特殊的問題,都是一些基礎(chǔ)的東西,大概聊了一個(gè)小時(shí)吧,就到了第二面了
第二輪
二面是技術(shù)總監(jiān)面的,整體沒怎么聊技術(shù),就是一些個(gè)人素質(zhì)上的考察。比如:
-
為什么會(huì)選擇做開發(fā),沒做別的
-
用三個(gè)短語來描述自己的優(yōu)點(diǎn)
-
說說自己的缺點(diǎn)
-
現(xiàn)在公司有系統(tǒng)穩(wěn)定運(yùn)行著,如果你發(fā)現(xiàn)了有新的技術(shù)能夠改善現(xiàn)有系統(tǒng),你會(huì)不會(huì)引進(jìn),會(huì)考慮哪些方面
-
日常學(xué)習(xí)的方式,看過哪些書
-
有沒有帶團(tuán)隊(duì),描述下團(tuán)隊(duì)成員的優(yōu)缺點(diǎn),有沒有改善
-
有沒有面試過別人,會(huì)從哪些方面考察
-
職業(yè)規(guī)劃是怎樣的,想做技術(shù)管理還是技術(shù)專家
-
對shell熟不熟悉,寫個(gè)word-count用到哪些命令
最后還聊了下公司的氛圍,項(xiàng)目的情況等。然后也沒啥特殊的,就過了。
HR面
最后跟hr聊,主要還是說了下公司的福利待遇,公司的氛圍,也問了我現(xiàn)在有沒有offer,對他們的感覺怎么樣。
然后問了之前公司的薪資和現(xiàn)在的期望薪資,最后加了微信,告訴我兩天內(nèi)給結(jié)果。最后也是成功通過了面試并拿到了offer
友信金服-人人貸
這家公司面試有三輪,大同小異,這里簡短的說一下
第一輪
一面仍然是基礎(chǔ)的考察,像CAS的理解,和它存在的問題,ConcurrentHashMap的鎖機(jī)制,ElasticSearch倒排索引,eureka的底層源碼,還有服務(wù)訪問的重試機(jī)制等等
第二輪
二面上來問了垃圾回收的問題,類似下面的代碼:
問a和b能否被垃圾回收?
這里主要考察jvm如何判斷一個(gè)對象是否可以被回收,是通過引用計(jì)數(shù)還是可達(dá)性分析,引用計(jì)數(shù)的方式會(huì)產(chǎn)生像上面代碼一樣的循環(huán)引用的問題,所以jvm沒有采用這種方式。
第二個(gè)問題是,如果有個(gè)跟java中原生的String一摸一樣的類,包括包名,類名都是一樣的,方法也是一樣的,唯獨(dú)比原生的String的方法多個(gè)打印輸出語句。
然后把它放進(jìn)項(xiàng)目的依賴中,在寫程序的時(shí)候,導(dǎo)入String類,問到底執(zhí)行的是Java原生的String的方法還是自己寫的String方法。
對于這個(gè)問題,可以考慮下Java中類加載的雙親委派模型。
然后就聊了項(xiàng)目的一些架構(gòu),問的比較細(xì),要求我對每塊都詳細(xì)畫圖解釋。
最后就是讓畫一個(gè)spring cloud技術(shù)棧所有框架的整體執(zhí)行流程圖,并對hystrix的限流熔斷機(jī)制做了解釋說明,別的好像也沒什么了
這之后二面算是結(jié)束了,面試官和我說了下自己團(tuán)隊(duì)的情況,人員情況,要做的項(xiàng)目的情況等。
第三輪
最后一面是業(yè)務(wù)總監(jiān)面的,面試官讓我說了下自己在公司做了哪些事情,我挑其中一個(gè)項(xiàng)目做了仔細(xì)說明,然后說了下職業(yè)規(guī)劃,對行業(yè)的看法等等
最后hr和我加了微信,同樣說是兩天內(nèi)給結(jié)果,不過第二天他們就給出通過的結(jié)果了,然后發(fā)了offer
某實(shí)時(shí)數(shù)據(jù)分析服務(wù)公司
這是一家做體育賽事的實(shí)時(shí)數(shù)據(jù)分析展示的公司,公司不大,去年拿了A輪融資,看網(wǎng)上整體評價(jià)還不錯(cuò),就去試了試。
面試總共有技術(shù)兩輪,hr一輪。去的時(shí)候首先是寫筆試題。做完之后進(jìn)入面試。
第一輪面試官?zèng)]有聊太久,問的問題也比較偏基礎(chǔ),就是一些面試常問的問題,然后說了eureka的執(zhí)行原理,說完之后,面試官就去叫技術(shù)總監(jiān)了
第二輪面試是技術(shù)總監(jiān)面的,技術(shù)點(diǎn)沒問太多,主要集中在之前的筆試題上,筆試題包括sql的考察,還有幾道算法題:找出有序數(shù)組中指定元素出現(xiàn)的次數(shù);二叉查找樹從小到大排序。因?yàn)闀r(shí)間的問題,我主要寫了實(shí)現(xiàn)思路;
還有一題是,有16瓶水,其中一瓶有毒,小白鼠喝一滴有毒的水一小時(shí)后會(huì)死,要在一小時(shí)找出來哪瓶水有毒最少需要幾只小白鼠
在sql的考察這塊,面試官看完我的答案后,又改了其中的需求,要求給出sql的實(shí)現(xiàn),另外也問到了sql的執(zhí)行效率。
這里給大家強(qiáng)調(diào)一下,我面的基本上每家公司面試都會(huì)問到數(shù)據(jù)庫,所以這塊還是挺重要的,需要重點(diǎn)去看
然后關(guān)于找出有序數(shù)組中指定元素出現(xiàn)次數(shù)的問題,原來要求的時(shí)間復(fù)雜度是O(lgn),后來面試官說不要求任何時(shí)間空間復(fù)雜度,如何簡單的實(shí)現(xiàn),我給出的方案是用HashMap,相同的key每出現(xiàn)一次,value加1
然后是小白鼠問題,說了解題思路,主要就是用位的思想,對16瓶水編碼,實(shí)際只需要4個(gè)位就可以
之后面試官還現(xiàn)場出了別的算法題,我基本都給出了結(jié)果,總體而言面試還比較順暢,之后聊了下職業(yè)規(guī)劃,技術(shù)發(fā)展,學(xué)習(xí)新技術(shù)的方法,面試官也聊了之后他們準(zhǔn)備做的事情,并給我現(xiàn)場演示了他們的項(xiàng)目
最后到了hr面,主要聊了下上家公司離職的原因,公司福利,上下班時(shí)間,我的期望薪水,還問到之前有沒有帶團(tuán)隊(duì)的經(jīng)歷等
最終他們在第二周的周四才給出面試通過的結(jié)果并表示正在走offer流程,由于CEO不在,在薪資上還沒最終確定,我因?yàn)橛辛烁鼭M意的offer,因此婉拒了
總結(jié)
總結(jié)一下,這兩個(gè)月的面試,我覺得最重要的就是基礎(chǔ)和項(xiàng)目這兩塊,基礎(chǔ)一定要扎實(shí),否則第一輪面試可能都過不了。
jvm,并發(fā)是非常高頻被問到的地方,在開始面試之前一定要好好準(zhǔn)備,另外也需要有自己非常熟悉的領(lǐng)域,在這個(gè)領(lǐng)域里面試官的一切問題你都可以hold住,我覺得,對于這種基礎(chǔ)好,而且有自己長處的面試者,面試官?zèng)]有理由不喜歡。
還有項(xiàng)目這塊,對項(xiàng)目的細(xì)節(jié)一定要清楚,各種方案的設(shè)計(jì)思路,實(shí)現(xiàn)細(xì)節(jié)等等都要了如指掌,這樣在面試官對各種細(xì)節(jié)的追問下不至于手忙腳亂。
總結(jié)
以上是生活随笔為你收集整理的奇葩面试经历分享:喊价25K,HR 却给了30K!的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JavaScript会是Web开发的未来
- 下一篇: 疯了吧!面试官 5 连问一个 TCP 连