1. 程式人生 > >大資料崗位的面試總結

大資料崗位的面試總結

本人住在有人間天堂之稱的城市,6年多開發經驗,最近2年主要在做大資料相關的開發,最近考慮換工作,基本也只考慮大資料相關崗位。目前新工作已經找好,但想分享一下最近面試的失敗一些經歷(成功的那些就不講了),吐槽吐槽,跟廣大吃瓜群眾分享一下過程中的經歷心得,我的語文體育老師教的,還請大家莫怪。

1.公司:國內知名電信運營商,其下面的大資料研究院,面兩輪 一面:技術人員面,先自我介紹,專案經驗相關介紹,問比較細,問了一些Hadoop、HBase的問題,JAVA基礎,JVM記憶體分配小於32G原因,G1和CMS對比,問關係型資料庫事務級別,髒讀、幻讀意思。
問題回答情況:其中G1與CMS區別我只講了G1比CMS更耗CPU,但回收更快效果更好,兩者記憶體劃分設計不同,G1更適合大記憶體等,具體原因及細節沒講清;髒讀、幻讀只回答出跟資料庫事務有關,面試當時忘記了具體什麼叫髒讀,什麼叫幻讀,有點分不清。這兩個好像都沒有答好,然後面試官問了我待遇期望。
二面:隔了4天,打電話過來讓我去二面,是部門經理面,其也是做技術的。上來讓我自我介紹,然後就圍繞我講的開始問。講到之前專案中通過hbase的coprocessor的endpoint方式在服務端通過jni呼叫c++寫的演算法庫實現資料計算過濾功能,然後這位經理就問為什麼你們影象識別相關的CV演算法不用JAVA寫,要用C++?
我感覺有點懵逼,驚歎怎麼會有這麼小白的問題,但面上不能表現出來,簡單回答說現在大部分演算法都是通過C/C++寫的,JAVA因為JAVA是完全面向物件的特性及jvm的關係,不適合做這麼底層的事情,效能會有損耗。但似乎對方沒有理解和聽懂,表情帶著不理解和質疑,半天從他嘴裡吐出一個結論:你們不用JAVA寫演算法是因為你們公司搞演算法那幫人只用C/C++去搞。
我當時有點無語,不知道該怎麼跟這種對CV演算法一無所知的人解釋(或許我該說很多演算法庫都是C/C++寫的,讓你用JAVA呼叫cuda的庫你累不累),但對方又接著問下一個問題,你怎麼看待大資料領域接下來的發展趨勢?
這個問題我從來也沒想過,腦袋裡突然冒出前陣子參加的雲棲大會有個分會上講得一些片段,糊里糊塗的瞎說了幾句,說spark很熱,使用的人非常多,後續也會整合流處理技術的一些新特性,另外說現在很多叢集完全部署在雲上,將來網路瓶頸解決有可能會往雲上和雲下自己管理的叢集結合的這種方式發展。 這個答得的確不好,有點以偏概全了,對方顯然對我這個回答很不滿意,又問你認為磁碟IO效能會是瓶頸嗎? 我回復說這個是目前大資料領域叢集的主要瓶頸,但這個問題還好,應該會被克服改善(我想說可以把冷、熱資料分離,熱資料用速度快的SSD之類儲存,但我沒說出來)。 對方的目光有點嘲弄的感覺,不是很友好,後來就是問一些期望待遇及讓我提問之類的環節。 結果:over,好吧,無所謂了,安慰自己,本來就不是很想去那邊,因為自己偏實幹型怕活太少(有點自虐),大概瞭解到的是對方的員工都過得偏安逸。

2.公司:某跨境電商企業,為一些國家和地區的特色產品做電商服務。
先跟他們HR聊,HR人不錯,說話比較客氣禮貌。
接著是技術面,一共4個面試官,分4輪面。
第1個哥們人挺逗,先讓我自我介紹,看我簡歷上寫著對CV相關演算法有一定了解,好像跑了題似開始不斷問我CV相關問題,我跟他說我工作早幾年自己研究過一段時間這方面的東西,但不是很擅長,很長時間也沒研究了,只是相比沒接觸過這方面的人來說要厲害一些,我也沒有研究過Spark MLLib。不知道他哪根筋不對,問我你們公司深度學習相關的程式你有沒有研究過,我說沒,他又問我通常影象識別的一些流程,我大概說了一下,說得不是很細,他不停的惋惜的說道,哎呀,你這相比其他人沒有特別的優勢呀,你要是精通演算法這方面再加上大資料就有亮點。我非常納悶,心想難道你們公司是傳說中人工智慧和大資料結合的非常好的公司嗎,莫非還是把無監督機器學習自我優化整合到你們的大資料系統中了嗎?不應該呀,看你們的樣子好像還沒有那麼NB,再說現在搞大資料的有幾個會深度學習演算法的,大多還是偏框架資料採集儲存挖掘方面的。
第2個哥們,是搞大資料相關的,不過他基本不像是在面試我,反而是在跟我吐槽他們公司,說自己也是剛來了3個月,公司哪裡流程不對,自己意願無法左右其他團隊等,不過就簡單跟我說了這麼一通就完了。
第3個哥們,具體是負責哪方面技術不是很清楚,感覺有點偏演算法,就問了我一個題目,像是腦筋急轉彎的程式設計題,題目是N個人圍成一圈,從第1個人開始報數,第一個人報1,第二個人報2,依次下去,報到數字X的人退出圈子,下面的人繼續報,請寫個程式問最後留下的哪個人。我說這好像有一個便捷的方法或公式能計算最後一個人,不過我腦子想不出來,只能想一個簡單的遞迴函式去實現,他說行,然後我就寫了一個,寫得馬馬虎虎。
第4個,是他們CTO面,這人陰沉板著一副臉,還沒說話就感覺氣氛不對,估計他覺得我看著比較年輕竟敢要那麼高薪水,這種人的表情我也沒少見。語氣有點冷,先讓我自我介紹,我介紹的比較簡單,然後又說了一些專案中的情況,產品資料流之類的。
我們的產品的資料來源是從ORACLE資料庫裡面定時去拿的,這個模組叫資料獲取服務,流程很簡單,就是定時讀取資料後交給另一個模組,然後他說問怎麼把這個資料獲取服務拆分成兩個模組,我很無語,說這個就是這麼簡單的去拿資料,沒有可以再拆分的,他說就是要拆分成2個模組,我表示不知道他腦袋裡怎麼想的,說不知道。
然後問了我做的一些架構經驗,我說自己設計寫過過一個分散式實時計算框架,是藉助了一個RPC中介軟體去實現的,整體各模組有點類似Hadoop MapReduce,但更像Impala,不需要每次建立啟動Job。我跟他簡單說了一下這個RPC中介軟體,說了一些優缺點,例如它的訊息釋出訂閱機制沒有像Kafka那樣有很好的持久化機制,程式退出了,這些訊息就沒了。
他一臉的質疑,說怎麼可能沒有持久化,他問我那個中介軟體的名字,然後百度去搜,搜出來某個帖子上有人說的那個中介軟體的一些特性,講到一個模組是專門做持久化的,然後他就拿來陰沉著臉質疑我說,你看,這不是持久化嗎?我看他那樣表情,不想再多解釋什麼,想說艹尼瑪,有點常識好不,那帖子講得完全不是一個東西,那個持久化不是指訊息釋出訂閱的持久化,這中介軟體我好歹也用了小半年,你這麼百度一搜就敢理直氣壯質疑我,這水平真是CTO?
結果:他們HR後來還打電話問我跟CTO聊完感覺怎麼樣,我感覺自己脾氣太好了,沒有抨擊一下那個CTO,就說他不太清楚我做的東西。HR把我的期望壓得很低問我願不願意去,我直接說不去了。見過這麼奇葩的CTO,就算加薪讓我去,我還得重新考慮。
3.公司:某視訊監控安防行業的知名公司,面試其下的大資料研究院的一個大資料開發崗位。
面試我的是他們的一個技術主管和另外一個技術人員,上來先自我介紹,詳細問了一些專案相關的資訊,然後問了很多Hadoop、HBase的一些原理,專案中rowkey和分割槽設計,問了spark streaming 併發度、createDirectStream和createDStream的區別,一段時間內分別生成了幾個RDD,問了Kafka分割槽各副本是如何在叢集各臺機器上分佈的等。
有好幾個問題沒回答清楚,感覺自己表現和準備不是很好。 結果:等通知。後來隔了好多天通知我去HR面,鑑於我當時已經收到其他offer,而且面試情況不是很好,估計會被壓offer,就委婉放棄了。

4.公司:國內知名網際網路公司,Hadoop研發工程師崗位。
電話面試:面試了25分鐘左右,問了很多大資料的基礎的技術問題。如Map Reduce相關,Reduce時如何Sort,HBase優缺點,LSM相關,前面基本上全部答出來了,但是最後問到有沒有做過用Map Reduce處理資料join,因為我之前做的專案大資料框架比較簡單,沒有多表關聯的查詢,當時對join概念也有點反應不過來,就說沒做過,然後又問Map Reduce join有幾種方式,也沒答出來。
結果:電面沒過,就因為最後兩個跟join有關的沒答出來,就over了,儘管回去後惡補了這方面的知識。

5.公司:某做資料營銷廣告大資料服務的公司,大資料研發崗位。 面試我是的他們做大資料架構團隊的主管,先自我介紹,講了一些專案的東西,然後對方覺得我之前做得專案大資料架構比較簡單,態度比較桀驁,然後又問了一些JAVA基礎的東西,比如BIO與NIO特點與區別,問我有沒有用過,我答得不是很好,但應該還過得去,然後又問Concurrent包下面有哪些類,ConcurrentHashMap與HashMap區別等等。我感覺他有點輕視我,不是一個公正的眼光在問我。然後又問我Linux命令熟不熟,吧唧吧唧問了好一些,我基本都答出來了。
最後他冒出一句,我們現在這邊大資料開發的崗位都基本招滿了,還缺一個大資料運維的,除了部署維護大資料叢集,還要寫一下oracle的udf。我問他這跟開發工作關係密切嗎,他說關係非常密切,只是他們大資料的研發都偏向於寫程式碼,不願幹這活。感情他是在逗我,QTMD。 結果:然後就沒有然後了。

6.公司:某車貸網際網路金融公司,大資料研發崗位。 先是電話面試:面試了25分鐘左右,問了Hadoop Map Reduce資源配置、ElasticSearch原理的一些問題,問得比較簡單,基本都沒問題,問道Lucence如何實現對一個欄位索引的時候,其實只要答倒排索引就好了,我比較二,把倒排索引怎麼實現的大概講了一下,細節還講得不是很好。
過了幾天,然後是直接面試,這次面的內容還是比較簡單,面試官人感覺不錯,就是有點二,怎麼說呢,理解能力不太好,比如問我HBase 不同colomn family跟關係型資料庫中的列的區別,我答說colomn family在物理上是獨立的store file,可以只查詢某個
column faimily,而關係型資料庫一條記錄是整行資料,查詢的時候,需要整行資料都讀出來,然後吧唧吧唧又扯出好多。結果你猜怎麼著,他說我還是沒有回答到點上,說 column family是面向列的。我有點無語,我都把它怎麼是面向列的底層儲存結構都講出來了,你竟然還說我沒答出來。問了很多問題都基本答出來了,就是面試官總覺得我沒有答到點上,說自己貌似明白我的意思了,問我是不是平常很少溝通問題。這種人真是活久見,明明一個意思,我答得更詳細清楚,他非說我沒答出那個標準答案名稱,面試這麼多次,這種情況真是第一次碰到。最後問了Hive相關的,問我有沒有用過,我說沒用過,但這種跟基本SQL差不多,問Hadoop Stream相關,我也說沒怎麼用過。問得問題都比較淺,沒有什麼深入的問題。
結果:後來HR通知我說面試官覺得我技術深度不夠,哎,有點搞笑的,其他幾個面試下來要這麼說我完全沒意見,但是這位面試官問得那些問題我基本都答出來,而且他自己沒怎麼問我深入的問題。算了,奇葩總是有的。
其他一些經歷就不囉嗦講了,個人總結有幾點如下: 1.現在做大資料相關的公司和人還不是很多,相比常見的如JAVA崗位面試官的水平明顯要差很多,除了接觸的幾個知名點的大公司問題環節比較規範,不過這種現象應該接下來幾年會有所改善。
2.有些時候不是你技術不行,而是你的談吐表達能力給他們的印象,像我自己表達語言組織能力只能算中等可能還偏差,表達條理不好容易被pass。 3.感覺工作經歷跳槽少的並不比頻繁跳槽的受待見,像我6年只在2家公司待過,大家都知道,在一家公司工資是很難漲上去的,而對方人力往往以你當前薪資作為重要參考,就算你的水平比相同工作時間的人強很多,但對方公司不可能馬上了解到,你想要跟這些相同工作年限人相同水平的薪資可能都比較困難,對方人力往往以此打壓你開太高期望漲幅過大。 End.