作業幫大數據研發一面涼經

一、背景

​ 在 3 月 10 日左右投了作業幫的簡歷,一直沒有回覆,以爲是簡歷被刷了,沒想到 3 月 24 日 hr 打電話說 3 月 25 日下午面試,我心想投了大數據,肯定 hadoop、hive、spark 這些必定少不了,於是滿滿複習了一天大數據相關的課程,下面就開始了今天的面試:

二、面試過程

​ 面試官小哥人很好,上來沒有讓我自我介紹,直接告訴我說今天分爲三大塊的內容:數據結構基礎、數據結構算法及一些題目的想法、以及自己所做的項目。

3.1 基礎

1、散列表

​ q:你瞭解 HashMap 嗎,你瞭解散列表嗎?

​ a: 我都說了會一點(其實就是知道 HashMap 和散列表是什麼)

​ q: 結果面試官就問我基於我的認識,讓我設計一個工業級別的散列表,我會怎麼設計?

​ a: 我直接懵了,說了個 key,hashcode,數組。

​ q: 數組?比如說存儲 1000 萬條數據,數組合適嗎?

​ a: 我又說用用鏈表吧,因爲可能沒有這麼大的連續內存。

​ q: 鏈表,然後呢?

​ a: 不會了

2、快排

​ q:你知道快排嗎?

​ a:應該知道吧。

​ q:快排時間複雜度是多少,怎麼推導

​ a:n * log n,推導:。。。。

​ q:最壞的時間複雜度,怎麼導致的,爲什麼?

​ a:忘了隨便說了個 n^2,後面感覺就瞎說了

​ q:換一種問法吧,快排的核心思想是什麼?

​ a:我提到了劃分

​ q:根據我提到的劃分,出一個相關的題,對 1000 萬個數據排序

​ a:我只說了按批次排序,然後再歸併

​ q:如果每個批次有重複怎麼辦

​ a:我說不會了,請您提示一下吧

​ q:使用 hash 值把數據分區,根據散列平均分,最後就不用去重了(我還是不太懂)
面試官看我什麼都不會,放棄問了

3.2 代碼

​ q:看你會 spark,你知道的 spark 的 RDD 有哪些?

​ a:(我被問懵了,RDD 怎麼還有中呢)嗯。。。嗯。。。嗯。。。了半大天一個字沒說出來,後來問了下什麼是哪些?

​ q:rdd 的算子有哪些?

​ a:(懵了半大天腦子鏽了,一聽這個我會,就激動了,開始囉嗦)rdd 的算子首先分爲 transform 算子和 action 算子,transform 算子有 map、mappartition…(然後就想不起來了,居然連最簡單的 flatMap 也沒想起來),action 算子有 reduce、reduceByKey(然後就想不起來了)

​ q:那不讓你寫 spark 代碼了,寫個基本代碼吧

​ 1、遞歸求二叉樹深度

​ 2、小青蛙跳臺階問題,100 階(讓我用遞歸,但我用遞歸超時了,說 100 太多了,會超時,換個數字吧,30、40? 面試官說行,然後就用 30 跑通了)

​ 3、廣度優先輸出二叉樹

​ 4、找到字符串中包含的子串

​ 如: axdcfadcfcfa

​ cfa

​ 我當時懵了,沒寫出來,後來想到雙指針直接解決問題

3.3 項目

​ 讓我介紹一下我用 spark 的項目吧,我簡單說了一下,因爲那就是個大數據作業,面試官說你這項目大公司根本看不上,還是得注重基礎

三、反問環節

​ q:我們作爲學大數據的學生,是大數據的框架更重要呢,還是基礎更重要呢?

​ a:看你想進什麼公司吧,大公司最看重基礎了,像數據結構、網絡、操作系統、數據庫這些都要求很高,大數據框架的瞭解是加分項。

​ q:我想問一下叫我今天表現怎麼樣呢?這時第一次面試(笑)?

​ a:coding 還行,但是理論不行,加油吧!

四、總結

​ 1、整個面試過程體驗非常好,其實面試沒有自己之前想的那麼嚇人;

​ 2、在面試的時候說話不要囉裏囉唆,問什麼答什麼;

​ 3、基礎很重要!!!!!!!!!一定要好好複習基礎知識,大數據框架沒那麼重要。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章