真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

web大數(shù)據(jù)面試真題有哪些

這篇文章主要介紹“web大數(shù)據(jù)面試真題有哪些”,在日常操作中,相信很多人在web大數(shù)據(jù)面試真題有哪些問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”web大數(shù)據(jù)面試真題有哪些”的疑惑有所幫助!接下來,請跟著小編一起來學(xué)習(xí)吧!

公司主營業(yè)務(wù):成都做網(wǎng)站、成都網(wǎng)站建設(shè)、移動網(wǎng)站開發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競爭能力。創(chuàng)新互聯(lián)公司是一支青春激揚、勤奮敬業(yè)、活力青春激揚、勤奮敬業(yè)、活力澎湃、和諧高效的團隊。公司秉承以“開放、自由、嚴(yán)謹(jǐn)、自律”為核心的企業(yè)文化,感謝他們對我們的高要求,感謝他們從不同領(lǐng)域給我們帶來的挑戰(zhàn),讓我們激情的團隊有機會用頭腦與智慧不斷的給客戶帶來驚喜。創(chuàng)新互聯(lián)公司推出尋烏免費做網(wǎng)站回饋大家。

第一題:大數(shù)據(jù)筆試題-Java相關(guān)(美菜網(wǎng))
寫出下列程序的輸出:
class Father{
    static {
        System.out.println("Static Father");
    }
    {
        System.out.println("Non-static Father");
    }
    public Father(){
        System.out.println("Constructor Father");
    }
}
public class Son extends Father{
    static {
        System.out.println("Static Son");
    }
    {
        System.out.println("Non-static Son");
    }
    public Son(){
        System.out.println("Constructor Son");
    }
    public static void main(String[] args) {
        System.out.println("First Son");
        new Son();
        System.out.println("Second Son");
        new Son();
    }
}

運行結(jié)果:

Static Father
Static Son
First Son
Non-static Father
Constructor Father
Non-static Son
Constructor Son
Second Son
Non-static Father
Constructor Father
Non-static Son
Constructor Son

分析:

這道程序題考察的是Java中的靜態(tài)代碼塊、構(gòu)造代碼塊、構(gòu)造函數(shù)的概念。

  • 靜態(tài)代碼塊 static {}

隨著類的加載而執(zhí)行,即JVM加載類后就執(zhí)行,而且只執(zhí)行一次,執(zhí)行優(yōu)先級高于非靜態(tài)的初始化塊,它會在類初始化的時候執(zhí)行一次,執(zhí)行完成便銷毀,它僅能初始化類變量,即static修飾的數(shù)據(jù)成員。

  • 非靜態(tài)代碼塊,也稱構(gòu)造代碼塊 {}

執(zhí)行的時候如果有靜態(tài)代碼塊,先執(zhí)行靜態(tài)代碼塊再執(zhí)行非靜態(tài)代碼塊,在每個對象生成時都會被執(zhí)行一次,它可以初始化類的實例變量。非靜態(tài)代碼塊會在構(gòu)造函數(shù)執(zhí)行時,在構(gòu)造函數(shù)主體代碼執(zhí)行之前被運行。

  • 構(gòu)造函數(shù)

對象一建立,就會調(diào)用與之相應(yīng)的構(gòu)造函數(shù),也就是說,不建立對象,構(gòu)造函數(shù)是不會運行的。 一個對象建立,構(gòu)造函數(shù)只運行一次,而一般方法可以被該對象調(diào)用多次。

再來看本題,程序運行,執(zhí)行main()方法會先加載main()方法所在的類,加載 Son 類,但是 Son 類繼承自 Father 類,所以先加載父類,同時父類的靜態(tài)代碼塊執(zhí)行,然后加載 Son 類本身,Son 類自己的靜態(tài)代碼塊開始執(zhí)行,類加載完成之后執(zhí)行main()方法內(nèi)部的語句,打印 First Son,然后 new Son(),在創(chuàng)建對象時先構(gòu)造父類的對象,因為靜態(tài)代碼塊只在類加載時執(zhí)行一次,所以不再執(zhí)行,然后執(zhí)行父類的構(gòu)造代碼塊,構(gòu)造函數(shù),構(gòu)造代碼塊的優(yōu)先級大于構(gòu)造函數(shù)。然后在執(zhí)行 Son 對象本身。完成之后打印 Second Son,接著又 new Son(),重復(fù)以上步驟。構(gòu)造代碼塊和構(gòu)造函數(shù)在每次new的時候都會執(zhí)行一次。

第二題:大數(shù)據(jù)面試題-JVM相關(guān)(豐巢科技)
問:解釋內(nèi)存中的棧(stack)、堆(heap)和靜態(tài)存儲區(qū)的用法?

答:通常我們定義一個基本數(shù)據(jù)類型的變量,一個對象的引用,還有就是函數(shù)調(diào)用的現(xiàn)場保存都使用內(nèi)存中的??臻g;而通過new關(guān)鍵字和構(gòu)造器創(chuàng)建的對象放在堆空間;程序中的字面量(literal)如直接書寫的100、“hello”和常量都是放在靜態(tài)存儲區(qū)中。??臻g操作最快但是也很小,通常大量的對象都是放在堆空間,整個內(nèi)存包括硬盤上的虛擬內(nèi)存都可以被當(dāng)成堆空間來使用。

String str = new String(“hello”);

上面的語句中str放在棧上,用new創(chuàng)建出來的字符串對象放在堆上,而“hello”這個字面量放在靜態(tài)存儲區(qū)。

補充:較新版本的Java中使用了一項叫“逃逸分析“的技術(shù),可以將一些局部對象放在棧上以提升對象的操作性能。(在 Java SE 6u23+ 開始支持,并默認設(shè)置為啟用狀態(tài),可以不用額外加這個參數(shù)。)

第三題:大數(shù)據(jù)面試題-海量數(shù)據(jù)相關(guān)(騰訊)
問:給 40 億個不重復(fù)的 unsigned int 的整數(shù),沒排過序的,然后再給一個數(shù),如何快速判斷這個數(shù)是否在那 40 億個數(shù)當(dāng)中?

答:方案 1:申請 512M 的內(nèi)存,512M是42億多 bit,一個 bit 位代表一個 unsigned int 值。讀入 40 億個數(shù),設(shè)置相應(yīng)的 bit 位,讀入要查詢的數(shù),查看相應(yīng) bit 位是否為 1,為 1 表示存在,為 0 表示不存在。

方案 2:這個問題在《編程珠璣》里有很好的描述,大家可以參考下面的思路,探討一下: 因為 2^32 為 42 億多,所以給定一個數(shù)可能在,也可能不在其中; 這里我們把 40 億個數(shù)中的每一個用 32 位的二進制來表示 ,假設(shè)這 40 億個數(shù)開始放在一個文件中。 然后將這 40 億個數(shù)分成兩類:

  1. 最高位為 0

  2. 最高位為 1

并將這兩類分別寫入到兩個文件中,其中一個文件中數(shù)的個數(shù)<=20 億,而另一個>=20 億(相當(dāng)于折半); 與要查找的數(shù)的最高位比較并接著進入相應(yīng)的文件再查找 然后再把這個文件為又分成兩類:

  1. 次最高位為 0

  2. 次最高位為 1

并將這兩類分別寫入到兩個文件中,其中一個文件中數(shù)的個數(shù)<=10 億,而另一個>=10 億(相當(dāng)于折半); 與要查找的數(shù)的次最高位比較并接著進入相應(yīng)的文件再查找。 ..... 以此類推,就可以找到了,而且時間復(fù)雜度為 O(logn)。

第四題:大數(shù)據(jù)面試題-Hadoop相關(guān)(阿里)
問:MapReduce 中排序發(fā)生在哪幾個階段?這些排序是否可以避免?為什么?

答:

  1. 一個 MapReduce 作業(yè)由 Map 階段和 Reduce 階段兩部分組成,這兩階段會對數(shù)據(jù)排序,從這個意義上說,MapReduce 框架本質(zhì)就是一個 Distributed Sort。

  2. 在 Map 階段,Map Task 會在本地磁盤輸出一個按照 key 排序(采用的是快速排序)的文件(中間可能產(chǎn)生多個文件,但最終會合并成一個),在 Reduce 階段,每個 Reduce Task 會對收到的數(shù)據(jù)排序(采用的是歸并排序),這樣,數(shù)據(jù)便按照 Key 分成了若干組,之后以組為單位交給 reduce 處理。

  3. 很多人的誤解在 Map 階段,如果不使用 Combiner 便不會排序,這是錯誤的,不管你用不用 Combiner,Map Task 均會對產(chǎn)生的數(shù)據(jù)排序(如果沒有 Reduce Task,則不會排序,實際上 Map 階段的排序就是為了減輕 Reduce端排序負載)。

  4. 由于這些排序是 MapReduce 自動完成的,用戶無法控制,因此,在hadoop 1.x 中無法避免,也不可以關(guān)閉,但 hadoop2.x 是可以關(guān)閉的。

第五題:大數(shù)據(jù)面試題-Kafka相關(guān)(商湯科技)
問:kafka數(shù)據(jù)分區(qū)和消費者的關(guān)系,kafka的數(shù)據(jù)offset讀取流程,kafka內(nèi)部如何保證順序

答:

  1. kafka數(shù)據(jù)分區(qū)和消費者的關(guān)系:1個partition只能被同組的?一個consumer消費,同組的consumer則起到均衡效果

  2. kafka的數(shù)據(jù)offset讀取流程:

    • 連接ZK集群,從ZK中拿到對應(yīng)topic的partition信息和partition的Leader的相關(guān)信息

    • 連接到對應(yīng)Leader對應(yīng)的broker

    • consumer將?自?己保存的offset發(fā)送給Leader

    • Leader根據(jù)offset等信息定位到segment(索引?文件和?日志?文件)

    • 根據(jù)索引?文件中的內(nèi)容,定位到?日志?文件中該偏移量量對應(yīng)的開始位置讀取相應(yīng)?長度的數(shù)據(jù)并返回給consumer

  3. kafka內(nèi)部如何保證順序:kafka只能保證partition內(nèi)是有序的,但是partition間的有序是沒辦法的。愛奇藝的搜索架構(gòu),是從業(yè)務(wù)上把需要有序的打到同一個partition。

第六題:大數(shù)據(jù)面試題-分布式相關(guān)(阿里)
問:說說三種分布式鎖?

答:

  1. 基于數(shù)據(jù)庫實現(xiàn)分布式鎖:(性能較差,鎖表的風(fēng)險,非阻塞,失敗需要輪詢耗CPU)

  • 悲觀鎖

利用select … where … for update 排他鎖

注意: 其他附加功能與實現(xiàn)基本一致,這里需要注意的是“where name=lock ”,name字段必須要走索引,否則會鎖表。有些情況下,比如表不大,MySQL優(yōu)化器會不走這個索引,導(dǎo)致鎖表問題。

  • 樂觀鎖

所謂樂觀鎖與悲觀鎖最大區(qū)別在于基于CAS思想,是不具有互斥性,不會產(chǎn)生鎖等待而消耗資源,操作過程中認為不存在并發(fā)沖突,只有update version失敗后才能覺察到。我們的搶購、秒殺就是用了這種實現(xiàn)以防止超賣。 樂觀鎖是通過增加遞增的版本號字段實現(xiàn)的。

  1. 基于緩存(redis等)實現(xiàn)分布式鎖:(過期時間不好控制,非阻塞,失敗需要輪詢耗CPU)

  • 獲取鎖的時候,使用setnx加鎖,并使用expire命令為鎖添加一個超時時間,超過該時間則自動釋放鎖,鎖的value值為一個隨機生成的UUID,通過此在釋放鎖的時候進行判斷。

  • 獲取鎖的時候還設(shè)置一個獲取的超時時間,若超過這個時間則放棄獲取鎖。

  • 釋放鎖的時候,通過UUID判斷是不是該鎖,若是該鎖,則執(zhí)行delete進行鎖釋放。

  1. 基于Zookeeper實現(xiàn)分布式鎖:(高可用、可重入、阻塞鎖)

大致思想:每個客戶端對某個功能加鎖時,在zookeeper上的與該功能對應(yīng)的指定節(jié)點的目錄下,?生成?個唯一的瞬時有序節(jié)點。判斷是否獲取鎖的方式很簡單,只需要判斷有序節(jié)點中序號最小的一個。當(dāng)釋放鎖的時候,只需將這個瞬時節(jié)點刪除即可。同時,其可以避免服務(wù)宕機導(dǎo)致的鎖無法釋放,?而產(chǎn)生的死鎖問題。

  • 優(yōu)點:鎖安全性高,zk可持久化,且能實時監(jiān)聽獲取鎖的客戶端狀態(tài)。一旦客戶端宕機,則瞬時節(jié)點隨之消失,zk因?而能第一時間釋放鎖。這也省去了用分布式緩存實現(xiàn)鎖的過程中需要加入超時時間判斷的這一邏輯。

  • 缺點:性能開銷?比較高。因為其需要動態(tài)產(chǎn)生、銷毀瞬時節(jié)點來實現(xiàn)鎖功能。所以不太適合直接提供給高并發(fā)的場景使用。

  • 實現(xiàn):可以直接采用zookeeper第三方庫curator即可方便地實現(xiàn)分布式鎖。

  • 適用場景:對可靠性要求非常高,且并發(fā)程度不高的場景下使用。如核心數(shù)據(jù)的定時全量/增量同步等。

第七題:大數(shù)據(jù)面試題-Hadoop、Spark相關(guān)(京東金融)
問:Hadoop 和 Spark 的相同點和不同點?

答:

Hadoop底層使用MapReduce計算架構(gòu),只有map和reduce兩種操作,表達能力比較欠缺,而且在MR過程中會重復(fù)的讀寫hdfs,造成大量的磁盤io讀寫操作,所以適合高時延環(huán)境下批處理計算的應(yīng)用;

Spark是基于內(nèi)存的分布式計算架構(gòu),提供更加豐富的數(shù)據(jù)集操作類型,主要分成轉(zhuǎn)化操作和行動操作,包括map、reduce、filter、flatmap、groupbykey、reducebykey、union和join等,數(shù)據(jù)分析更加快速,所以適合低時延環(huán)境下計算的應(yīng)用;

spark與hadoop最大的區(qū)別在于迭代式計算模型?;趍apreduce框架的Hadoop主要分為map和reduce兩個階段,兩個階段完了就結(jié)束了,所以在一個job里面能做的處理很有限;spark計算模型是基于內(nèi)存的迭代式計算模型,可以分為n個階段,根據(jù)用戶編寫的RDD算子和程序,在處理完一個階段后可以繼續(xù)往下處理很多個階段,而不只是兩個階段。所以spark相較于mapreduce,計算模型更加靈活,可以提供更強大的功能。

但是spark也有劣勢,由于spark基于內(nèi)存進行計算,雖然開發(fā)容易,但是真正面對大數(shù)據(jù)的時候,在沒有進行調(diào)優(yōu)的情況下,可能會出現(xiàn)各種各樣的問題,比如OOM內(nèi)存溢出等情況,導(dǎo)致spark程序可能無法運行起來,而mapreduce雖然運行緩慢,但是至少可以慢慢運行完。

第八題:大數(shù)據(jù)面試題-Yarn相關(guān)(特斯拉)
問:一個應(yīng)用程序是如何在 Yarn 集群上執(zhí)行的?

答:

當(dāng) jobclient 向YARN提交一個應(yīng)用程序后,YARN將分兩個階段運行這個應(yīng)用程序:一是啟動ApplicationMaster;第二個階段是由ApplicationMaster創(chuàng)建應(yīng)用程序,為它申請資源,監(jiān)控運行直到結(jié)束。

具體步驟如下:

  1. 用戶向YARN提交一個應(yīng)用程序,并指定ApplicationMaster程序、啟動ApplicationMaster的命令、用戶程序。

  2. RM為這個應(yīng)用程序分配第一個Container,并與之對應(yīng)的NM通訊,要求它在這個Container中啟動應(yīng)用程序ApplicationMaster。

  3. ApplicationMaster向RM注冊,然后拆分為內(nèi)部各個子任務(wù),為各個內(nèi)部任務(wù)申請資源,并監(jiān)控這些任務(wù)的運行,直到結(jié)束。

  4. AM采用輪詢的方式向RM申請和領(lǐng)取資源。

  5. RM為AM分配資源,以Container形式返回。

  6. AM申請到資源后,便與之對應(yīng)的NM通訊,要求NM啟動任務(wù)。

  7. NodeManager為任務(wù)設(shè)置好運行環(huán)境,將任務(wù)啟動命令寫到一個腳本中,并通過運行這個腳本啟動任務(wù)。

  8. 各個任務(wù)向AM匯報自己的狀態(tài)和進度,以便當(dāng)任務(wù)失敗時可以重啟任務(wù)。

  9. 應(yīng)用程序完成后,ApplicationMaster向ResourceManager注銷并關(guān)閉自己。

第九題:大數(shù)據(jù)面試題-數(shù)據(jù)質(zhì)量相關(guān)(螞蟻金服)
問:數(shù)據(jù)質(zhì)量怎么監(jiān)控?

答:

如一張表的記錄數(shù)在一個已知的范圍內(nèi),或者上下浮動不會超過某個閾值:

  1. SQL結(jié)果:var 數(shù)據(jù)量 = select count(*)from 表 where 時間等過濾條件

  2. 報警觸發(fā)條件設(shè)置:如果數(shù)據(jù)量不在[數(shù)值下限, 數(shù)值上限], 則觸發(fā)報警

  3. 同比增加:如果((本周的數(shù)據(jù)量 -上周的數(shù)據(jù)量)/上周的數(shù)據(jù)量*100)不在 [比例下線,比例上限],則觸發(fā)報警

  4. 環(huán)比增加:如果((今天的數(shù)據(jù)量 - 昨天的數(shù)據(jù)量)/昨天的數(shù)據(jù)量*100)不在 [比例下線,比例上限],則觸發(fā)報警

  5. 報警觸發(fā)條件設(shè)置一定要有。如果沒有配置的閾值,不能做監(jiān)控 日活、周活、月活、留存(日周月)、轉(zhuǎn)化率(日、周、月)GMV(日、周、月) 復(fù)購率(日周月)

單表空值檢測

某個字段為空的記錄數(shù)在一個范圍內(nèi),或者占總量的百分比在某個閾值范圍內(nèi)

  1. 目標(biāo)字段:選擇要監(jiān)控的字段,不能選“無”

  2. SQL結(jié)果:var 異常數(shù)據(jù)量 = select count(*) from 表 where 目標(biāo)字段 is null

  3. 單次檢測:如果(異常數(shù)據(jù)量)不在[數(shù)值下限, 數(shù)值上限],則觸發(fā)報警

單表重復(fù)值檢測

一個或多個字段是否滿足某些規(guī)則

  1. 目標(biāo)字段:第一步先正常統(tǒng)計條數(shù);select count(*) form 表;

  2. 第二步,去重統(tǒng)計;select count(*) from 表 group by 某個字段

  3. 第一步的值和第二步的值做減法,看是否在上下線閥值之內(nèi)

  4. 單次檢測:如果(異常數(shù)據(jù)量)不在[數(shù)值下限, 數(shù)值上限], 則觸發(fā)報警

跨表數(shù)據(jù)量對比

主要針對同步流程,監(jiān)控兩張表的數(shù)據(jù)量是否一致

  1. SQL結(jié)果:count(本表) - count(關(guān)聯(lián)表)

  2. 閾值配置與“空值檢測”相同

第十題:大數(shù)據(jù)面試題-海量數(shù)據(jù)相關(guān)(百度)
問:在海量日志數(shù)據(jù)中,提取出某日訪問百度次數(shù)最多的那個IP

答:這類問題都歸為求Top K的問題,解決方法都差不多。

將這一天訪問百度的日志的IP取出來,逐個寫入到一個大文件中。注意到IP是32位的,最多有個2^32個IP。同樣可以采用映射的方法,比如模1000,把整個大文件映射為1000個小文件,再找出每個小文中出現(xiàn)頻率最大的IP(可以采用 HashMap 進行頻率統(tǒng)計,然后再找出頻率最大的幾個)及相應(yīng)的頻率。然后再在這1000個最大的IP中找出那個頻率最大的IP,即為所求。

算法思想:分而治之+Hash

  1. IP地址最多有2^32=4G種取值情況,所以不能完全加載到內(nèi)存中處理;

  2. 可以考慮采用分而治之的思想,按照IP地址的Hash(IP) % 1024值,把海量IP日志分別存儲到1024個 小文件中,這樣每個小文件最多包含4MB個IP地址; 這里解釋一下為什么用Hash(IP) % 1024值,如果不用,而直接分類的話,可能會出現(xiàn)這樣一種情況,就是有個IP在每個小文件中都存在,而且這個IP并不一定在那個小文件中是數(shù)量最多的,那么最終可能選擇的結(jié)果會有問題,所以這里用了Hash(IP)%1024值,這樣的話,通過計算IP的Hash值,相同IP肯定會放到一個文件中,當(dāng)然了不同的IP的Hash值也可能相同,就存在一個小文件中。

  3. 對于每一個小文件,可以構(gòu)建一個IP為key,出現(xiàn)的次數(shù)為value的HashMap,同時記錄當(dāng)前出現(xiàn)次數(shù)最多的那個IP地址;

  4. 可以得到1024個小文件中的出現(xiàn)次數(shù)最多的那個IP,再依據(jù)常規(guī)的排序算法得出總體上出現(xiàn)次數(shù)最多的IP。

到此,關(guān)于“web大數(shù)據(jù)面試真題有哪些”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識,請繼續(xù)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬嵱玫奈恼拢?/p>
新聞標(biāo)題:web大數(shù)據(jù)面試真題有哪些
本文URL:http://weahome.cn/article/gjiggh.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部