1. 程式人生 > >網易大資料面試題試解

網易大資料面試題試解

       上週無意中看到了一份網易的面試題,說明為大資料部的面試題,粗略的看了一下,覺得挺有趣的,所以嘗試著進行一下解答,首先要吐槽下,不知道這是什麼級別崗位的題目,感覺有些不夠專業,對大資料能力考察的題目幾乎沒有,大多是比較寬泛的問題,感覺各個崗位面試都可以問的那些問題。題目如下:

筆試:

1、甲和乙下棋,一局中甲獲勝的概率為2/3,乙獲勝的概率為1/3,一方比另一方多贏兩局算贏,求甲獲勝的概率?

答:條件比較少,切入點比較明確:一方比另一方多贏兩局算贏,那麼甲獲勝的情況可以為

       甲  2   乙   0

       甲  3   乙   1

       甲  4   乙   2

       ......

       甲  n+2   乙   n

       假設甲獲勝情況為A概率記為p,乙獲勝情況為B概率記為q,甲勝利的情況包括

       AA  概率為 p^2

       ABAA  BAAA  概率為(2pq)*p^2

       ABABAA  ABBAAA BAABAA  BABAAA  概率為(2pq)^2*p^2

       以此類推

       

       在筆試過程中,如果時間允許的話,可以再驗證一下,乙勝甲的情況,通過同樣的方法,得到乙獲勝的概率為1/5,甲乙獲勝概率相加為1,確認答案基本無誤。

       ps:一般筆試遇到此類問題,可以通過數學歸納法來做,很容易發現甲獲勝的情況下,最後兩次一定均為AA,為前面無論對局了多少輪,一定都是AB和BA的排列組合,找到規律的話就比較好做了。

2、有三個小球ABC,其中一個有獎,當你選擇B球時,主持人跟你說C沒有獎(假設主持人說的是真的),此時你有一次環球的機會,你會換球嗎?

答:經典的“三門問題”,網上討論的有很多,至今還有很多爭論,簡單列一下,不詳細說了。

網上主要有3種觀點:
1、換獲益,因為B的1/3概率已確定,C的概率會轉移到A上
2、無所謂,因為C的概率會平均轉移.或者說B開啟後條件變化,就不能已開始的條件計算概率
3、與主持人是否知情有關,知情則“換獲益”,不知情則“無所謂”

其實說的都有道理,爭論的原因在於這個問題最開始描述的時候,條件就有歧義。其實我們可以假設有一個不存在的另一個參賽者,選擇了A門,第一輪來說,你和另一個參賽者分別選了A和B,那麼你們兩個人的獲獎概率必然是相同的,都是1/3,當主持人開啟C門後,你和另一個選擇A門的參賽者獲勝的概率依然相同,為1/2才對(否則你認為換門獲勝概率高,對方也一樣會認為換門的獲勝概率高,雙方就矛盾了)

那麼問題到底出在什麼地方呢?下面列個表格就明朗了,其實ABC三扇門的可能性只有如下幾種(我們記兩扇沒有獎的門分別為N1、N2,有獎的門為Y)

       A      B      C

1.    N1    N2    Y

2.    N1    Y      N2

3.    N2    N1    Y

4.    N2    Y      N1

5.    Y      N1    N2

6.    Y      N2    N1

我個人認為觀點3很重要,即主持人是否知情很重要,這裡列出的6中情況為主持人不知情的情況,這種情況下,無論如何你獲獎的概率都是50%,肯定不變。現在假設主持人知情,對於1、2、3、4這四種情況,他一定會開啟那扇沒有獎的門(1、3開啟B,2、4開啟C),這4種情況下,剩下那扇門有獎的概率為100%,所以如果他命中了情況1、2、3、4,他換門的獲獎概率升為100%,如果命中了5、6的情況下,換門的獲獎概率為0,總體換門的獲獎概率為66.7%

那我剛才提到的不存在的另一個參賽者的情況呢,這種情況下,假設你和另一個參賽者分別選取了N1和N2,另一扇門肯定是有獎的,這個時候,主持人無法開啟第三扇門(因為主持人開啟的那扇門是沒有獎的,這種情況下開啟第三扇門與題目不符),此時情況1、3是不存在的,在剩下的4種情況下,兩位參賽者獲獎的概率均為50%

3、f(f(x)) = -x,求f  (其中x和f(x)都是整數)

答:這道題目前還沒解出來,剛開始拿到這個題也沒多想,迭代函式的題目,兩層迭代後為一次函式,那麼f(x)也為一次函式

令f(x)=kx,那麼f(f(x))=k^2x=-x

所以k^2=-1,所以f(x)=ix

然後發現了這個條件:其中x和f(x)都是整數

顯然這個答案中f(x)不為整數,經過多方嘗試,依然沒有找到合適的解,如果有解的話,我覺得可能會是分段函式吧,繼續嘗試ing......

ps:雖然還沒有答案,不過有一些想法,在解決這些問題的時候,我覺得需要始終記住的是,這是一份筆試題,並不是數學考試,所以思考的過程不會太複雜,也不會特別數學化。我最開始嘗試的方法是令f(x)=t,x=f^-1(t),通過反函式的特性,求導什麼的算出來,後來覺得越算越複雜,我覺得筆試過程中不應該出現這麼複雜的數學過程,否則要麼是思路有問題,要麼是選題有問題。

pps:感謝周某某大神幫助,解出了這個問題,不過從答案上來說很是奇葩,基本上是為了解題而強行構造一個函式答案如下:

在x為奇數時f(x)=x+(-1)^[(x-|x|)/2x]

在x為偶數且不為0時f(x)=-{x-(-1)^[(x-|x|)/2x]} 

在x=0時,f(x)=0

沒錯,就是這麼個奇葩的分段函式

思路是把整數們分組,a b -a -b是一組它們互相形成迴圈

形成 f(a)=b f(b)=-a f(-a)=-b f(-b)=a 的迴圈

4、一個線段分成三段,這三段能夠拼成三角形的概率

答:線性規劃問題,按照構成三角形的條件,計算條件概率即可

假設這三段線段總長度為1,分別長為x,y,1-x-y

那麼總區域為0<x<1,0<y<1,x+y<1

三角形要求兩邊之和大於第三邊,即

x+y>1−x−y ,x+1−x−y>y ,y+1−x−y>x



如圖,大三角形面積為總區域,條件區域為陰影部分,顯然概率為25%

5、一隻股票的每日收盤價存在一個數組中,現在你選擇一天買入,隨後選擇一天賣出,不考慮時間價值,設計演算法求解可能得到的最高收益

答:Leetcode上的121題,策略比較簡單

記錄極小值low

遍歷剩餘的價格,假設當前價格為now,diff=now-low,如果diff<0,則最小值更新,若diff>max,則更新最大收益

遍歷完陣列之後,返回最大收益即可

轉一段AC程式碼作為參考

class Solution {
public:
    /**
     * 計算最大收益
     * @param prices : 每日價格
     * @return : 最大收益 
     * @note : 只進行一次買賣
     */
    int maxProfit(vector<int>& prices) {
        int pricesSize = prices.size();
        /* 如果價格資料為空,或者只有一個數據,返回0  */
        if (pricesSize <= 1) return 0;

        int day, diff, min = prices[0], max = 0;
        for (day = 1; day < pricesSize; ++day) {
            diff = prices[day] - min;
            if (diff < 0) min = prices[day];
            else if (diff > max) max = diff;
        }

        return max;
    }
};

6、一道計算貝葉斯概率的題目

答:題目沒有描述清楚,不過貝葉斯的題目就是熟記貝葉斯公式,從要求的值入手,嘗試分解即可

  • formula
  • 公式描述:公式中,事件Bi的概率為P(Bi),事件Bi已發生條件下事件A的概率為P(A│Bi),事件A發生條件下事件Bi的概率為P(Bi│A)。

面試:

面試部分大多是關於專案的問題,挑一些技術性問題簡單分析一下吧

1、介紹SVM的原理

答:SVM是一種經典的分類器,中文名叫支援向量機,簡單的來說,就是把你要分類的資料先向量化,一些在低維度線性不可分的資料到了高維度就線性可分了,如下圖


當把資料對映到高維度後,直接線性劃分即可分類,但是這裡有個問題,就是隨著維度的升高,比如原來是2維的可能到5維才能線性可分,3維的可能要到十幾維才能線性可分,隨著原始維度的升高,需要對映的維度也爆炸性升高,這時候我們就需要核函式來實現了,核函式的作用就是在低維度進行運算後再隱式對映到高維,這樣一來線性可分的問題解決了,維度爆炸的問題也解決了,可以說是svm的核心

那麼我們如何衡量svm的分類準確度呢,就是看這些點到超平面的距離,離得越遠越好,這裡我們有一個鬆弛變數的概念,某些噪聲點超出了超平面,離群過遠,這類點的引入對我們的分類演算法影響較大,因為為了應付這些點,我們不得不再次挪動超平面,反而可能丟失了大部分點的分類精度,這時候我們設定一個閾值,沒離群的點鬆弛變數為0,最終對離群點的權重做一定的懲罰,懲罰因子C體現了分類器對於離群點的重視程度。

仔細考慮一下,核函式和鬆弛變數實際上都是為了解決線性不可分的問題,那麼為什麼要用兩種方法來實現呢,實際上,在引入核函式之前,大部分的點都是離群點,使用鬆弛變數帶來的損失太大,所以先通過核函式,對映到接近線性可分的情況,只有少量的離群點,再通過鬆弛變數來剔除那些噪聲點。

ps:網上一搜svm的原理一大堆,我不必說的過細,對於面試來講,面試官既然問到了這個問題,證明他對這個問題比較熟,只是考察你有沒有涉及過這類知識點,所以在面試的時候,大家對於一些基礎的原理沒必要說的太細,如果面試官有疑義,他會詳細的提問,用比較簡潔的話快速的介紹這項技術中最核心的原理,以及這個演算法解決了什麼樣的問題,另外如果能用一兩句話說出這個演算法在同類演算法中的優勢和劣勢,勢必會有一個加分。通過一兩句話把一個演算法的精髓說出來,不拖泥帶水才是熟練掌握這個演算法的表現。

2、如何證明一個大於3的質數的平方減1可以被24整除

答:又是個數學問題,先給出簡要一點的證明過程

假設這個數為p

首先對於(p-1)p(p+1),連續三個自然數必定有一個數能被3整除,且肯定不是p(否則p就不是質數了)

所以3 | (p+1)(p-1) (1)

其次p是質數,所以必然為奇數,那麼

p≡1,3,5,7(mod 8),所以p^2≡1(mod 8)

所以8 | p^2-1 (2)

由(1)(2),所以24 | p^2-1

拿到這種題目,基本上一個條件就是一個解題的要點,一步一步分析就是了,首先看結論,被24整除,在我們的知識體系中,沒有涉及過這麼大的數的整除規律,則必然要分解,至少也要分解為3*8的形式,問題便化歸為了證明既被3整除又被8整除

其次,大於3的質數,這些質數最大的(至少我第一時間能夠想到的)就是這些數都是奇數,且都不能被3整除

大於3的質數的平方減1這個條件自然能轉化為(p+1)(p-1)的形式,至此,這些條件都轉化為了一個個的點,剩下的只是按照這些點進行組合得到結論就是了,能夠把題目拆分成這些條件看的是基本功,能不能把這些條件整合出結論就是看能力了,好在面試並不會在數學上太過刁難大家,基本靠著以前的一些基本常識也能夠拼湊出答案

ps:我始終認為太多的數學問題對於面試是無益的,除非是演算法崗,那也應該緊扣演算法來提問而不是考察,如果說上面筆試的線性規劃和貝葉斯還是和演算法沾邊的話,這類數論的題目就不應該考察了,一定要靠到能力考核的話,我覺得唯一能考察的能力就是如何把問題分解為一系列更容易解決的問題,如何通過手裡的一些基礎知識來解決較難的問題。

3、給你五分鐘,估計一下海淀區需要的共享單車數量

答:開放性問題,沒有正確的答案,實際這類問題很多,這也是這次筆試面試中唯一和大資料關係比較近的題目,類似的大資料類問題很多,不過一般都是考察超大資料量下的演算法設計,估算類題目較少,類似的問題可以參考程式設計珠璣第7章,估算方面的知識。這類題目從來不要求你求出一個具體的數字,也不可能,考察點在於你如何對問題進行分析,以及最重要的是,要“自圓其說”,至少在量綱上不能出大問題,剩下的就是仁者見仁智者見智了,你要展現出你回答問題的條理性,當然也要通過你的各種知識和常識進行輔助推算,如果你一開始就能夠大概估計出一個量綱的話,剩下的就是如何讓你的觀點更加的靠近這個結論(共享單車幾家公司,那麼多大牛的工程師、高管啥的通力合作算出的每座城市的共享單車承載量,怎麼可能你一個人5分鐘的時間內就算出來呢,只能是儘可能的論證你的結論)

對於這個題目,我稍微說下我的想法:

1、考慮海淀區的人員組成:高新技術、高等學府、部分普通居民、還有一些流動人口聚集的地區

2、考慮平時騎共享單車的人的情況:高新技術和學校的學生是最可能騎車的,而普通居民和流動人口騎車的比例相對低一些

3、考慮騎車主要的用途:學生騎車出行,往返學校,上班族主要是上下班,地鐵站周圍人流密集

要素基本湊齊了,剩下就是根據海淀的人口數,大約3、400萬,學校幾十所,人數70w左右,高新技術公司員工總數估計也就100w,剩下的以普通居民居多,在這之中,學生對於共享單車的需求量是比較大的,公司員工也有需求,不過相對比例要小一些,前者使用率可達20%-30%,後者也就10%不到,普通居民使用率一般不高於2%,總的粗略一算大概需求量25w-30w量左右吧

ps:根據查到的資料,北京市今年預計摩拜和小黃車的投放總量可達到120w量,其中海淀區投放量30%左右,35w吧差不多,比我演算法略微多一些,一般估算中算是可以接受的,不過我對於學生和職工的使用率估算過高了,可能某些類別的人群的數量估算還是差一些,總的來說這類題就是這麼個思路,一定要讓面試官看到你嚴謹的分析能力,只要結論不出大問題,註定會加分。

       後記:這次對網易的筆試面試進行了一些簡單的分析,拋磚引玉吧。筆試面試首先自然是要求大家掌握紮實的基礎,對於崗位核心的能力肯定是要有的,至於各種題目都是萬變不離其宗,面試的時候最容易緊張,其實很多時候放鬆下來,冷靜的去分析各種條件,這些問題都不是特別的難。仔細想想,你要是面試官的話,你會如何提問,自然是有很多的考察點的對不對,現在作為去面試的一方,想一想對方問的這些問題最想看到的是你哪方面的能力,儘可能把你這方面的能力展示出來,自然就離成功不遠了。面試最重要的是差異化,你會什麼,你和別人有何不同,比如機器學習中的某些演算法,各個公司都在做,你做的又有何不同呢,你的差異決定了你體現出的價值,這一點也是尤其能讓面試官記住你的一點。

相關推薦

資料試題

       上週無意中看到了一份網易的面試題,說明為大資料部的面試題,粗略的看了一下,覺得挺有趣的,所以嘗試著進行一下解答,首先要吐槽下,不知道這是什麼級別崗位的題目,感覺有些不夠專業,對大資料能力考察的題目幾乎沒有,大多是比較寬泛的問題,感覺各個崗位面試都可以問的那些問

杭研資料試題

一面: hdfs讀寫過程 MR原理 講專案 balabala... 差不多40幾分鐘吧 二面: 講專案,專案一個點一個點的問。 主要講的是PV、UV的統計、其中設計到rowkey衝突怎麼處理。 接著講專案balabala 差不多40多分鐘吧 HR面(一個男

資料試題01

Spark Application 使用者自己寫的程式,批處理作業的集合,Application的main方法時程式的入口,定義了RDD以及對RDD的操作 SparkContext spark的重要api,使用者邏輯與spark的互動介面。會和Cluster manager

網際網路資料試題集錦

原文地址:http://hbase.group/article/89 以下面試題都是群裡小夥伴提供的,現場真題(包含校招題)1.網易大資料面試題 說說專案 Spark哪部分用得好,如何調優 Java哪部分了解比較好 聊聊併發,併發實現方法,volatile關鍵字說說

資料技術沙龍

歡迎訪問網易雲社群,瞭解更多網易技術產品運營經驗。   從“網際網路+、移動網際網路、AI+”等概念的更迭,大家對資料的認知越來越清晰。資料既是線上場景的產物,反之又作用線上場景的持續優化。“資料將改變網際網路”、“資料的量變將帶來世界的質變”眾說紛紜,但是大資料技術怎樣在行業中落地實踐併發揮作

11月24日杭州資料技術沙龍來襲,資料嚴選、螞蟻金服咖親身經驗分享!

歡迎訪問網易雲社群,瞭解更多網易技術產品運營經驗。   從“網際網路+、移動網際網路、AI+”等概念的更迭,大家對資料的認知越來越清晰。資料既是線上場景的產物,反之又作用線上場景的持續優化。“資料將改變網際網路”、“資料的量變將帶來世界的質變”眾說紛紜,但是大資料技術怎樣在行業中落

2019最新資料試題及答案整理

大資料面試題總結一波,助力準備在金三銀四尋找好工作的小夥伴們,只有度過筆試這一關才能在下面的關卡中大展巨集圖! 一、如何檢查namenode是否正常執行?重啟namenode的命令是什麼? 通過節點資訊和瀏覽器檢視,通過指令碼監控 hadoop-daemon.sh start namenod

網際網路公司資料試題參考指南

以下面試題都是群裡小夥伴提供的,現場真題(包含校招題) 1.網易大資料面試題 說說專案 Spark哪部分用得好,如何調優 Java哪部分了解比較好 聊聊併發,併發實現方法,volatile關鍵字說說 HashMap的底層原理 為什麼要重寫hashcode和equ

資料試題分享之spark試題

一  什麼是spark Spark是大資料的排程,監控和分配引擎。它是一個快速通用的叢集計算平臺.Spark擴充套件了流行的MapReduce模型.Spark提供的主要功能之一就是能夠在記憶體中執行計算 ,但對於在磁碟上執行的複雜應用程式,系統也比MapReduce更有效。

資料試題以及答案整理(一)

kafka的message包括哪些資訊 一個Kafka的Message由一個固定長度的header和一個變長的訊息體body組成 header部分由一個位元組的magic(檔案格式)和四個位元組的CRC32(用於判斷body訊息體是否正常)構成。當magic的值為

資料試題彙總版

作者 大資料面試題及答案 彙總版 當前版本: Ver 1.0 製作單位: 編寫人員: 審 核 人: 籤 收 人: 簽署日期:     201

2018年資料試題總結

目前面試了多家大資料開發工程師,成長了很多,也知道了很多知識,下面和大家分享一下我遇到的面試題和答案。 1.kafka叢集的規模,消費速度是多少。 答:一般中小型公司是10個節點,每秒20M左右。 2.hdfs上傳檔案的流程。 答:這裡描述的 是一個256M的檔

遊戲開發試題分享

原貼地址:http://www.zhihu.com/question/30034222 ·●    inline關鍵字是做什麼用的?inline關鍵字在什麼情況下會展開失敗? 程式碼長度過大,會導致展開失敗。inline類似於將程式碼直接替換,但是又不是。省去了呼叫函式的

資料試題必會2018.01.07

資料分析師常見的10道面試題解答 1.海量日誌資料,提取出某日訪問百度次數最多的那個IP。 首先是這一天,並且是訪問百度的日誌中的IP取出來,逐個寫入到一個大檔案中,注意到IP是32位的,最多有個2*32個IP。同樣可以採用對映的方法,比如模1000,把整個大檔案對映為100

資料試題—7

9. 面試問題: 1.從前到後從你教育背景(學過哪些課)到各個專案你負責的模組,問的很細(本以為他是物理學博士,但是所有的技術都懂) 2.hadoop 的 namenode 宕機,怎麼解決 先分析宕機後的損失,宕機後直接導致client無法訪問,記憶體中的元資料丟失,但是硬碟中的元資料應該還存在

資料試題—6

3.14 1、一個Hadoop環境,整合了HBase和Hive,是否有必要給HDFS和Hbase都分別配置壓縮策略?請給出對壓縮策略的建議。 hdfs在儲存的時候不會將資料進行壓縮,如果想進行壓縮,我們可以在向hdfs上傳資料的時候進行壓縮。 1)、  採用壓縮流 2)、 &nb

2019最新資料試題 助力大家度過筆試關

  大資料面試題總結一波,助力準備在金三銀四尋找好工作的小夥伴們,只有度過筆試這一關才能在下面的關卡中大展巨集圖!     一、如何檢查namenode是否正常執行?重啟namenode的命令是什麼?   通過節點資訊和瀏覽器檢視,通過指令碼監控   hadoop-d

經典資料試題

什麼是大資料? 大資料(big data,mega data),或稱巨量資料,指的是需要新處理模式才能具有更強的決策力、洞察力和流程優化能力的海量、高增長率和多樣化的資訊資產。 在維克托·邁爾-舍恩伯格及肯尼斯·庫克耶編寫的《大資料時代》中大資料指不用隨機分析法(抽樣調查)

你不知道的BAT資料試題

                         你不知道的BAT大資料面試題   1、kafka的message包括哪些資訊 一個Kafka的

30個常見的資料試題 --讓你的薪資更上一層

30個常見的大資料面試題: 包含spark、scala、storm、hadoop等常見的大資料處理工具; 常用的分散式資料庫如hbase、MongoDB、Redis等; 其他常用的java基礎、linux相關技術等 1.scala 語言有什麼特點,什