大數據雲計算——2020大數據雲計算崗面經面試問題和經驗一

TP_Link的面試問題:

1.自我介紹

2.說說項目以及由項目問題

3.線程池的種類

1.固定數量的線程池:這個比較好理解,即線程的數量是固定的,線程並不會隨着任務的多少而變化。可以發現他最終是通過實例化ThreadPoolExecutor來實現。

2.並行線程池:這個是1.8中新加入的線程池,可以看到主要使用了ForkJoin相關的操作

3.只有一個線程的線程池:其實這個可以不稱爲線程池,因爲只有一個線程。核心線程=最大線程=1,這個比較適合需要保證隊列中任務順序執行的場景。

4.緩存線程池:他根據需要創建線程,沒有核心線程,當60s內沒有任務時,將會回收存活的線程,60s內有任務時,他可以重用已有的線程。注意他的工作隊列是SynchronousQueue,這裏簡單的說一下,他的每一個put操作必須等待take操作,這意味着如果任務生產速度大於消費速度,那麼他將不會創建新線程。該線程池適合執行大量小任務的場景。

5.延時線程池:ScheduledThreadPoolExecutor繼承了ThreadPoolExecutor,所以super最終會調到ThreadPoolExecutor的構造函數,可以看到,最大線程數爲int最大值,工作隊列爲延時隊列DelayedWorkQueue,該線程池適合執行延時任務。

五種線程池的使用場景

  • newSingleThreadExecutor:一個單線程的線程池,可以用於需要保證順序執行的場景,並且只有一個線程在執行。

  • newFixedThreadPool:一個固定大小的線程池,可以用於已知併發壓力的情況下,對線程數做限制。

  • newCachedThreadPool:一個可以無限擴大的線程池,比較適合處理執行時間比較小的任務。

  • newScheduledThreadPool:可以延時啓動,定時啓動的線程池,適用於需要多個後臺線程執行週期任務的場景。

  • newWorkStealingPool:一個擁有多個任務隊列的線程池,可以減少連接數,創建當前可用cpu數量的線程來並行執行。

線程池任務執行流程:

  • 當線程池小於corePoolSize時,新提交任務將創建一個新線程執行任務,即使此時線程池中存在空閒線程。

  • 當線程池達到corePoolSize時,新提交任務將被放入workQueue中,等待線程池中任務調度執行

  • 當workQueue已滿,且maximumPoolSize>corePoolSize時,新提交任務會創建新線程執行任務

  • 當提交任務數超過maximumPoolSize時,新提交任務由RejectedExecutionHandler處理

  • 當線程池中超過corePoolSize線程,空閒時間達到keepAliveTime時,關閉空閒線程

  • 當設置allowCoreThreadTimeOut(true)時,線程池中corePoolSize線程空閒時間達到keepAliveTime也將關閉

4.如何創建線程

1)繼承Thread類創建線程

2)實現Runnable接口創建線程

3)使用Callable和Future創建線程

4)使用線程池例如用Executor框架

5java多態的體現

子類對象指向父類的應用。實現對父類方法的重寫。

是一種的動態的綁定技術。是指的是在執行期間而不是編譯期間判斷對象的實際類型調用相關的方法。多態就是一個行爲具有多個不同的變現的形式或者是形態的能力。多態就是同一個接口使用不同實例進而實現不同的操作。

多態的概念:同一操作作用於不同對象,可以有不同的解釋,有不同的執行結果,這就是多態,簡單來說就是:父類的引用指向子類對象

6.筆試最長遞增子串的長度的思路:動態規劃

public int findLengthOfLCIS(int[] nums) {
        if (nums.length == 0) {
            return 0;
        }
        int result = 1;
        int length = 1;
        //遍歷 一次比較大小
        for (int i = 1; i < nums.length; i++) {
            if (nums[i] > nums[i - 1]) {
                length++;
                result = result >= length ? result : length;
            } else {
                length = 1;
            }
        }
        return result;
    }

新網銀行 大數據算法實習面經

一面:

1,RF的原理,和選用理由

2,過擬合的原因是什麼,從數據分佈的角度解釋

3,rf和boosting算法的區別

4,10億個數選最大的K個,用什麼方法,複雜度多少 。分而治之的思想

5,有開發經驗嗎,sql會嗎

6,   25匹馬賽跑經典智力題

二面:

2是在一個矩陣中返回最大的正方形大小。我當時想的就是最簡單的方法。

模擬高鐵賣票和驗票的問題,怎麼編寫方法去讀取買票和驗票的文件,驗證驗票和買票文件。開共享面板,編碼實現這個流程。

二面:

1.給一個遞增的數組,需要找到索引和值相等的值並返回,怎麼找?(我回答的是二分查找,提示說怎麼確定查找的值,構造一個(值減索引)的數組就可以二分)

2.給一個只能夠生成3以內整數的隨機函數rand(3),問怎麼實現rand(5)?(我最先想的是兩次rand(3)求和去掉6,面試官提示說要每個數出現的概率相等,想了一下用if else就可以做到

微衆大數據實習一面

組件部署

項目實現細節

起了幾個Task?

用的Standalone、YARN還是K8S?原理的是什麼

聊聊HBase,讀流程,寫流程

HLog寫入失敗了怎麼辦

如果Region掛了怎麼辦,那怎麼恢復呢?

MemoStore刷不到HFile裏怎麼辦?

Flink的excatly-one是怎麼實現的?

如果在這個過程中,Task掛掉了怎麼辦?

checkpoint精準一次跟source和sink有關係嗎?

反射機制的實現原理

JAVA反射機制是在運行狀態中,對於任意一個類,都能夠獲取這個類的所有屬性和方法;對於任意一個對象,都能夠調用它的任意一個方法和屬性;這種動態獲取類信息以及動態調用對象內容就稱爲java語言的反射機制。

原理是:我們知道,要使用一個類,就要先把它加載到虛擬機中,生成一個Class對象。這個class對象就保存了這個類的一切信息。反射機制的實現,就是獲取這個Class對象,通過Class對象去訪問類、對象的元數據以及運行時的數據。有三種方法獲得類的Class對象:Class.forName(String className)、className.class、實例對象.getClass();

Java的反射機制:操作的就是這個對象的.class文件,首先加載相應類的字節碼(運行eclipse的時候,.class文件的字節碼會加載到內存中),隨後解剖(反射 reflect)出字節碼中的構造函數、方法以及變量(字段),或者說是取出。

Java有哪些比較熟的?:內存模型 jvm的相關模型

常見的集合框架

介紹一下優先隊列

說說HashMap由什麼構成的 :數組+鏈表+紅黑樹

擴容機制 :大於0.75的整個長度的時候就擴容,先申請2倍的長度的數組 再將原來的數據複製到現在的,在並將整個數據添加其

怎麼產生閉環死鎖的?:多線程的時候,由於是1.7之前採用的是的頭部插入法,所在在多線程的時候可能出現的是封閉的閉環。

1.8之後還存在嗎?爲什麼?不存在,由於採用的是的尾部插入方法。但是存在的是數據的丟失。所以改進爲CAS+node+Synchronized

那ConcurrentHashMap怎麼實現線程安全的?:1.7前採用的分段鎖的機制,但是1.8以後採用的是CAS+node+Synchronized機制來實現的

TCP和IP的區別

虛擬內存:虛擬內存能代替內存嗎?

算法題:

1實現一個random(m,n)方法,返回m到n的隨機數

       m<m+Math.random()<n

10G的文件,每一行一個數字,1G的內存,將10G的文件排成有序的 

        分而治之的思想

能在仔細介紹一下HBase的整體架構嗎

Master幹什麼的,讀取、寫入操作具體指什麼?

2. java hashmap的底層實現 避免衝突的方法 java解決衝突的方法是哪個

arraylist與linklist的區別?爲什麼有這種區別?

3. java創建多線程的三種方式,java多線程鎖,寫過什麼demo(我答生產者消費者模型)

4. HTTP是一種無狀態協議,java裏面怎麼解決這種無狀態

5. JVM 堆內存模型、minGC與fullGC過程、JVM調優

6. 計算機網絡 TCP、UDP協議的區別

7. 數據結構 數據結構有幾種排序算法?你最熟悉哪一種?講講快排原理(不穩定)

8. hadoop mapreduce、hdfs的底層實現原理

9. 問問hive方面的(我不會)

10. mysql 事務特性,講講隔離性,索引的類型、作用,查詢調優。

百度面試經驗

1.自我介紹

2.說一下做過的項目

3.問了一些項目上的問題

4.問PHP7的新特性有哪些

5.問數據庫設計爲什麼進行分表,分庫

6.問Mysql實現底層btree機制

7.問web開發方面會遇到哪些緩存,分別如何優化

8.問如何用關聯數組實現棧

9.問你數據庫進行主從分離主要的原理

10.問你php的內存回收機制

11.nginx負載均衡有哪些,如果其中一臺服務器掛掉,報警機制如何實現

12.緩存命中率需要怎麼提高,原理是什麼

13.問如何修改php/zend內核,使其滿足程序員的編程需要,方便操作

14.redis,會問哪些場景用,解決了什麼問題,數據量有多少

美團面試經驗:

一面
1.談談你對HDFS的瞭解

2.Hadoop2.0做了哪些改動

3.Spark與MR的區別在哪裏

4.知道除了Spark之外的大數據處理框架嘛

5.Spark shuffle,說說

6.StringBuilder與StringBuffer的區別

7.問你HashMap與Hashtable的區別

8.問你二叉樹的數據結構是什麼樣的

9.數據庫索引的實現原理

10.jvm垃圾收集器,挑一種講講

二面

1.講講你的日誌流量分析系統項目

2.講講NameNode與DataNode

3.當數據還在跑的時候,我要查這個數據怎麼辦

4.存儲格式的選擇 & 行式存儲與列式存儲的優劣

5.如果我要查一段時間區域的,怎麼優化

6.說說數據傾斜,怎麼調優的

7.說說你對Hive的理解

8.問Hive怎麼轉成MR的

9.出現OOM,怎麼辦

10.shuffle過程中,會將數據寫到哪個buffer裏去

11.講講executor、core、task這些之間的關係

12.平時怎麼學習spark的

13.除了大數據,會Spring嘛

14.說說你還會些啥技能

拼多多

一面:

1.問你的項目情況

2.問你一些家庭情況

3.問我港臺同胞的話題

4.問你項目有什麼創新,說了一堆

5.問你論文競賽有沒有

6.問你在學校的一些情況

然後一面就結束

二面:

1.自我介紹

2.問你python怎麼樣

3.問你c語言熟悉不,問了幾個c語言的東西

4.問你算法,跳臺階,斐波那契數列和dp方式。

5.問tcp的四次揮手中的time—wait狀態何時出現,有什麼意義。

6.操作系統的fork進程返回什麼,

猿輔導

一面:

1.先是自我介紹

2.問爲什麼選這個崗位

3.問你瞭解hadoop的哪些組件,讓你說一遍。

4.讓講一下hdfs的寫入過程,發請求給namenode,返回一個地址進行寫入,寫入完告訴namenode,namenode完成副本備份。

5.講一下項目中的遇到的問題,多線程,併發工具,併發容器。

6.講一下如何設計一個高併發的秒殺系統

7.問python瞭解嗎,講一下線程和協程

8.Hadoop的核心配置是什麼
9.問“jps”命令的用處?
10.問HDFS存儲的機制?

協程自帶上下文,切換不需要刷新cpu上下文和寄存器。更適合併發。協程和線程適用場景的區別。

二面:

1.自我介紹

2.問了一下家庭情況和城市意向

3.問大學有啥困難和挑戰沒有

4.問學習成績,在學校做了什麼

5.讓你評價自己

6.問你對公司的瞭解

7.對於加班怎麼看

冠羣馳騁

1.先是自我介紹

2.問你做過的項目

3.說一下項目中的問題

4.舉一個簡單的例子說明mapreduce是怎麼來運行的 ?

5.問hadoop中Combiner的作用?
6.問不同語言的優缺點

7.問hive有哪些保存元數據的方式,個有什麼特點

8.問hive內部表和外部表的區別

9. hbase的rowkey怎麼創建好?列族怎麼創建比較好?

10.用mapreduce怎麼處理數據傾斜問題?

11.hadoop框架中怎麼來優化

搜狐暢遊數據工程師校招面經

一、HR面

1 做了哪些項目
2 使用什麼技術
3 哪個是你主導的項目,一共開發多少個接口,項目多長時間,數據庫有多少個表

二、技術問題

1. 用自己擅長的語言實現非遞歸單鏈表反轉 現場手寫
2 .問Hadoop和spark的主要區別
3 .Hadoop中一個大文件進行排序,如何保證整體有序?sort只會保證單個節點的數據有序
4 .問Hive中有哪些udf
5 .Hadoop中文件put get的過程詳細描述
6 .Java中有哪些GC算法

7 .Java中的弱引用 強引用和軟引用分別在哪些場景中使用

8.Hadoop和spark的主要區別-這個問題基本都會問到

記住3點最重要的不同之處:

1.spark消除了冗餘的 HDFS 讀寫: Hadoop 每次 shuffle 操作後,必須寫到磁盤,而 Spark 在 shuffle 後不一定落盤,可以 cache 到內存中,

以便迭代時使用。如果操作複雜,很多的 shufle 操作,那麼 Hadoop 的讀寫 IO 時間會大大增加,也是 Hive 更慢的主要原因了。

2.spark消除了冗餘的 MapReduce 階段: Hadoop 的 shuffle 操作一定連着完整的 MapReduce 操作,冗餘繁瑣。而 Spark 基於 RDD 提供了豐富的算子操作,

且 reduce 操作產生 shuffle 數據,可以緩存在內存中。

3.JVM 的優化: Hadoop 每次 MapReduce 操作,啓動一個 Task 便會啓動一次 JVM,基於進程的操作。而 Spark 每次 MapReduce 操作是基於線程的,

只在啓動 Executor 是啓動一次 JVM,內存的 Task 操作是在線程複用的。每次啓動 JVM 的時間可能就需要幾秒甚至十幾秒,那麼當 Task 多了,這個時間 Hadoop 不知道比 Spark 慢了多。

9.Hive中有哪些UDF

10.你寫過哪些UDF?在哪種情況下會使用該UDF?

天貓數據研發實習生二面三面面經

二面重基礎

1.string和stringbuff的區別

2.==和equals的區別

3.什麼是多態

4.垃圾回收算法,追問兩個互相引用的對象能否回收

5.三個線程按指定順序執行的實現方法

6.統計班級課程成績有三門高於90的學生信息

7.InnoDB引擎

8.唯一索引和主鍵的區別

9.TCP三次握手,四次揮手

10TCP 與UDP區別

11.介紹項目(沒追問面試就結束了)

面試官全程冷漠,基本無交流,回答的也不好,以爲會掛

一週後收到在線測評通知

三面:進鏈接在線寫代碼,電話溝通

10億條ipv4數據,用8G內存,單線程找出頻次最高的100條。

跟面試官交流思路之後開始寫代碼,偶爾提示,一個小時後還沒有完成,面試官結束了面試

阿里高德數據研發實習生

4.8 筆試 做的比較差  0_0
4.13 一面
兩個線段求交點
怎麼快速查找一個附近的酒店
希爾排序
空間數據庫
擬合曲線 泰森多邊形 空間插值
講項目
4.17 補筆試
兩道題
4.22 二面
講項目
網絡編程相關 IO模型
mysql索引
GIS相關知識 地圖投影
4.23 三面
項目
用通俗的語言講講輻亮度和輻照度 舉個例子(項目相關)
進程線程
數據庫索引
一道數學題
講項目

七層網絡模型 IO模型

鏈表和數組區別 使用場景

線程進程

一道leecode 中等難度題

美團的大數據面試經驗

美團一面(54minutes):

1.萬年不變自我介紹

2.項目介紹,聊了很多裏面的細節。

3.熟悉紅黑樹嗎?(不會)

4.B樹和B+樹瞭解嗎?

5.談談數據庫索引,有什麼用?

6.Innodb和MyIsam有什麼區別?

7.ACID

8.數據庫事務

9.left join 和 join區別

10.索引失效

11.hashtable和hashmap有什麼區別

12.StringBuffer和StringBuilder區別

13.排序算法,複雜的,穩定性,快排的實現和優化。

13.編程題:給定有序數組,找到兩個數使得它倆的和等於目標值。

14.發散題:3只老鼠,8瓶藥,其中有一瓶毒藥,假設喝到毒藥後一小時死亡,可以多瓶混合一起喝,怎麼才能用最少的時間找到哪一瓶是毒藥。(只要1小時)

美團二面(30minutes):

1.萬年不變自我介紹

2.項目

3.平時怎麼學習的,爲什麼跨專業做編程,職業規劃,看你投的上海,有沒有興趣來北京巴拉巴拉的

4.簡單問了和hdfs副本數,副本怎麼存儲

5.hive調優

6.反問階段

美團二面加面(25minutes):

1.萬年不變自我介紹

2.數據庫索引類型有哪些?有什麼作用

3.假設給定你四個字段分別爲一個int,一個double,一個日期類型,一個varchar(20)的數據,共100萬條,計算數據大小(不會)

4.DAG爲什麼適合spark(隨便說了一通,也不知道對不對)

美團的面試大概就是這麼多了,一面和二面的面試官都特別好,不會的東西會慢慢引導你,或者說沒關係,忘了也沒事什麼的,加面的感覺像leader有點嚴肅,全程無尿點,因爲一二面都基本回答出來了,加面的時候答的很差,過了20+天收到HR電話,10天后收到offer。

2020暑期實習快手大數據研發

Java基礎
1. 分區
2. 對象存儲
3. 垃圾回收原理
4. sleep和wait區別
代碼算法
1. 懶漢模式單例
別問,問就是不會
2. 大數相加,輸入是兩個String。
寫的代碼有bug,但是面試官說不浪費時間了,給過。
網絡
本菜雞直接說不會,堵住面試官的嘴,hhhh。
數據庫
1. 存儲引擎
我順便還說了優缺點
2. 底層存儲
3. 行列存儲
4. 謂詞下推(predicate pushdown)
別問,問就是不會
5. 寫SQL
一開始寫錯了,在where裏面用aggregate function,後來改成了having
評價:基礎不太過關。所以給了一道非常簡單的編程題目(手動笑哭)。說我寫代碼思路比較清晰,非常流暢。雖然有bug,也給過了。對數據庫知識的掌握優於同齡人。寫sql錯了,但是經過提醒能馬上反應過來,給個及格。說看過我的博客和Github,覺得還不錯。這個居然真的有面試官去看,看來我以後博客要好好寫hhh。
崗位情況:廣告數倉,數據的存儲計算。
要求技能:Hadoop, spark, sql, java, slam, python。

二面

緊接着就是二面。這種連着面的我還是有點慌。
自我介紹
講了項目。
Java基礎
1. static作用,怎麼實現的?
怎麼實現的木有答對
2. spring框架
講了AOP, IOC。但是不知道IOC底層如何實現
3. 第一個java項目代碼的亮點。
代碼算法
1. 兩個棧實現隊列
大數據
本菜雞直接說不會
數據庫
1. sql。表結構grade, subject, name, score。查詢分年級分科目統計不同年級不同科目考試成績TOP10。沒寫出來
面試官發現他問的我都不會,只好讓我講項目。我的項目還算比較多。講了一個自己優化信號燈的項目。面試官說思路非常好。

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