大數(shù)據(jù)技術(shù)面試之企業(yè)真題V20_第1頁
大數(shù)據(jù)技術(shù)面試之企業(yè)真題V20_第2頁
大數(shù)據(jù)技術(shù)面試之企業(yè)真題V20_第3頁
大數(shù)據(jù)技術(shù)面試之企業(yè)真題V20_第4頁
大數(shù)據(jù)技術(shù)面試之企業(yè)真題V20_第5頁
已閱讀5頁,還剩160頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

尚硅谷大數(shù)據(jù)技術(shù)之企業(yè)真題

(作者:尚硅谷大數(shù)據(jù)研發(fā)部)

版本:V2.0.0

1頭條面試題

1.1學(xué)長1

1)技術(shù)部分

(1)WordCount的實(shí)現(xiàn)過程

(2)MR與Spark的區(qū)別

(3)Spark在Client與在集群運(yùn)行的區(qū)別

(3)相同的SQL在HiveSql與SparkSQL的實(shí)現(xiàn)中,為什么Spark比Hadoop快

(4)自定義UDF

(5)設(shè)計HBase表需要注意的點(diǎn)

(6)HBase的hlog

(7)數(shù)據(jù)同樣存在HDFS,為什么HBase支持在線查詢

(8)數(shù)據(jù)從Hive中用SparkSql進(jìn)行操作有遇到什么問題?類似兼容性的問題。

(9)SparkStream與Strom,Flink與什么區(qū)別

(10)有三個map,一個reduce來做top10,哪種方法最優(yōu)。數(shù)據(jù)量特別大。

2)項(xiàng)目的架構(gòu)

(1)數(shù)據(jù)倉庫的模型設(shè)計

(2)數(shù)據(jù)倉庫的數(shù)據(jù)清洗

(3)業(yè)務(wù)建模、數(shù)據(jù)分析方法。

(4)數(shù)據(jù)倉庫是怎么設(shè)計的

(5)數(shù)倉規(guī)范設(shè)計哪些方面(字段、維度,存儲壓縮、數(shù)據(jù)保留機(jī)制)

(6)數(shù)倉質(zhì)量怎么監(jiān)控(數(shù)據(jù)質(zhì)量管理系統(tǒng),主鍵唯一、非空、數(shù)據(jù)波動)

(7)數(shù)倉主題分哪些(按照公司業(yè)務(wù)歸類:申請單、客戶信息、合同信息、放款、還款、

余額、逾期等)

(8)數(shù)倉拉鏈表的原理

(9)有沒有遇到數(shù)據(jù)傾斜的問題(場景、解決方式)

(10)數(shù)倉重點(diǎn)調(diào)度任務(wù)的保障方式(調(diào)度系統(tǒng)優(yōu)先級)

(11)數(shù)倉任務(wù)報錯和監(jiān)控(調(diào)度系統(tǒng)捕捉錯誤,電話短信告之值班人員)

1.2學(xué)長2

1)技術(shù)部分

(D自我介紹

(2)寫map-reduce,兩份數(shù)據(jù),一份是設(shè)備id+用戶id,一份是設(shè)備id+點(diǎn)擊的廣告+

點(diǎn)擊時間,找出每個用戶id每天10條最新的廣告點(diǎn)擊記錄

(3)說下多線程和多進(jìn)程

(4)fork命令

2)算法部分

(1)hashmap和map,hash實(shí)現(xiàn)原理(hashmap基于哈希,查找0(1);map基于樹,

查找0(logn);hash實(shí)現(xiàn)采用數(shù)組,偏移地址使得查找滿足O(1),無論是再哈希還是

鏈表法解決沖突,都需要存儲key和value)

1.3學(xué)長3

(1)MySQL引擎是什么,常用的是哪個innodb,知道原理嗎

(2)MySQL優(yōu)化,怎么建索引?選擇合適的字段屬性。對于某些文本字段可以設(shè)成

ENUM類型(MySQL中被當(dāng)做數(shù)值型數(shù)據(jù)來處理)。使用連接join代替子查詢。使用索

引:innodb支持哈希索引、b+樹索引、全文索引。

BTree和B+Tree

(3)手寫sql...

user_idlogin_date

120200325

查詢出用戶連續(xù)三天登錄的用戶

表A字段a值1234

表B字段b值11235

Join輸出的結(jié)果

Leftjoin輸出的結(jié)果

(4)Sqoop導(dǎo)入數(shù)據(jù)是增量怎么實(shí)現(xiàn)

(5)Flume事務(wù)實(shí)現(xiàn)

(6)Kafka消費(fèi)者角度考慮是拉取數(shù)據(jù)還是推送數(shù)據(jù)

(7)Kafka中的數(shù)據(jù)是有序的嗎

(8)Kafka數(shù)據(jù)推送失敗怎么處理

(9)Kafka保證生產(chǎn)者精準(zhǔn)一次

(10)沒有接受到ack才會出現(xiàn)聲明情況

(11)Kafka數(shù)據(jù)重復(fù)怎么處理

(12)SparkStreaming怎么里面實(shí)現(xiàn)精準(zhǔn)一次消費(fèi)

(13)如果。fTset沒有發(fā)送成功數(shù)據(jù)會怎樣

(14)Hive的優(yōu)化,項(xiàng)目中怎么優(yōu)化的(我說了join的一些優(yōu)化)

(15)然后就問了用MR怎么實(shí)現(xiàn)join,手寫代碼

(16)數(shù)據(jù)傾斜怎么處理的,

(17)碰到過oom情況嗎,什么原因?qū)е碌模趺刺幚淼?/p>

(18)Hbase有那些組件,

(19)什么場景會用到Hbase

(20)Hbase的讀寫流程,大概說一下

(21)Spark,任務(wù)提交的流程,

(22)Spark的兩種核心Shuffle,未優(yōu)化的和優(yōu)化的

(23)常用的數(shù)據(jù)結(jié)構(gòu)都有哪些,

怎么實(shí)現(xiàn)一個list,

怎么實(shí)現(xiàn)一個map

map一般什么場景使用

用過樹這種結(jié)構(gòu)嗎,什么場景用到的

(24)算法

字符串中第一個出現(xiàn)三次且僅出現(xiàn)三次

反轉(zhuǎn)一個鏈表

兩個鏈表第一次交叉的節(jié)點(diǎn),

(25)用Cannal監(jiān)控niysql之后,Scala怎么通過SparkStreaming去消費(fèi)的

(26)你們這個項(xiàng)目spark計算完之后存HBase怎么設(shè)計的

(27)HBase你們在項(xiàng)目中怎么設(shè)計rowkey的

1.4學(xué)長4

一面

(1)算法:給2個有序數(shù)組,合并成一個有序數(shù)組

延伸:給n個有序數(shù)組,合并成一個有序數(shù)組

(2)sql:

班級學(xué)號科目分?jǐn)?shù)

求某個班級總分最高的前五名

其他:

(3)精準(zhǔn)一次性消費(fèi)

(4)數(shù)據(jù)傾斜

二面

(1)主要問項(xiàng)目中是否丟數(shù)據(jù),怎么做的數(shù)據(jù)治理,監(jiān)控,問了一個算法,一個SQL

(2)算法是有序數(shù)組查找目標(biāo)值,我的做法是二分查找

(3)sql是給用戶的觀看視頻的時長,統(tǒng)計觀看時間在0-1分鐘的用戶數(shù),1-10分鐘的

用戶數(shù)

三面:

(1)選型為什么是spark而不是Flink,有哪些優(yōu)缺點(diǎn)(我項(xiàng)目上寫的spark)

(2)HBASE為什么快(列式存儲,內(nèi)存,Ism樹)

(3)消費(fèi)不到kafka數(shù)據(jù)怎么辦

(4)kafka怎么監(jiān)控,重分區(qū)

(5)gl回收器和cms區(qū)別

(6)jvm調(diào)整過沒有

1.5學(xué)長5

一面

(I)講述項(xiàng)目;

(2)rdd手寫key的top10,比如user_id,score,求成績的top10;

(3)spark-sql手寫個dateframe的demo

sql題目

字段:department_id,user_id,amount

求出來每個部門,每個人的薪資占部門薪資的比例,一個簡單的開窗函數(shù)實(shí)現(xiàn)的

手寫個udf函數(shù)?

表的字段report_date,map_info(map類型的數(shù)據(jù)類型,key是時間,value是金額),計

算大于當(dāng)前report_date的所有金額

增加字段report_date,map_info,count增加計算個count數(shù)量又怎么處理?

然后,說那你能寫個UDF函數(shù)實(shí)現(xiàn)嗎?

算法題:最長回文子串.給定一個字符串s,找到s中最長的回文子串

答案:

defget_longest_str(s):

n=len(s)

dp=[[False]*nfor_inrange(n)]

res_str=

foreleinrange(n):#ele代表i和j的間隔

foriinrange(n):#通過j=i+ele得到子串的結(jié)束位置,對角線斜著一行一行的

處理

j=i+ele

ifj>=n:

break

ifele==0:

dp[i][j]=True#單個元素為true

elifele==1:

dp[i][j]=(s[i]==s|jD#兩個元素判斷兩個值是否相等

else:

dp[il[j]=(dp[i+l][j-11ands[i]==s[j])#如果當(dāng)前元素相等,則比

較之前的元素

ifdp[ij[jjandele+1>len(res_str):#上次ans就是上次的j-i的長度

res_str=s[i:j+1]

returnresstr

1.6頭條獵頭

i.數(shù)據(jù)倉庫的基礎(chǔ)理論:建模,分層

2.flink容錯機(jī)制

3.spark調(diào)優(yōu),數(shù)據(jù)傾斜的處理方式

4.sql編程考察

5.算法:聚類kmeans

6.二叉樹算法

7.Java線程問題,包括線程安全,鎖,和線程池,問得很細(xì)。

8.Hbasse和mysql區(qū)別和存儲原理

9.kafl<a的底層原理,kafka如何保證全局消費(fèi)數(shù)據(jù)有序

lO.redis底層原理,如何預(yù)估數(shù)據(jù)量

"yarn底層原理,執(zhí)行流程和,yarn底層使用的算法

12.算法基礎(chǔ)建模有哪些,如何進(jìn)行數(shù)據(jù)挖掘

13.鏈表反轉(zhuǎn)排序leetcode原題

14.sql連續(xù)日期活躍用戶

15.hiveudfudafudtfspark

16.任務(wù)提交過程

17.回文函數(shù)

18.hive數(shù)據(jù)傾斜

19.redis跳表

2O.springioc

21.spring需要單例設(shè)置的參數(shù)

22.線程池幾個配置參數(shù)含義

23.mysql事務(wù)ab客戶端提交事務(wù)處理

24.storm實(shí)時

25.java并發(fā)包

26.hive如何轉(zhuǎn)mr

27.線程可重入理解

28.算法題一個LRU一個深度優(yōu)先搜索

29.flink的watermarkshardGroup的概念

3O.kafka如何保證消息的有序行高可用

31.數(shù)據(jù)傾斜如何處理

32.flinkwatermark和harries和checkpoint

33.flink和spark的區(qū)別

34.jvm常見的垃圾回收算法

35.heap怎么分帶的

36.kafka調(diào)優(yōu)

2騰訊面試題

2.1學(xué)長1

1)筆試部分

(1)有一表名t_sh_mtt_netdisk」og,從表名可以看出該表是什么業(yè)務(wù)的,是什么周期

粒度的表。

(2)怎么查看表結(jié)構(gòu),表創(chuàng)建語句?怎么查看表有哪些分區(qū)?怎么查看分區(qū)對應(yīng)hdfs

路徑?怎么計算某個分區(qū)的數(shù)據(jù)量大小?怎么計算某個分區(qū)的文件總數(shù)?

(3)有一hives磯,怎么計算這個sql會產(chǎn)生多少個map數(shù)?

(4)怎么查看hive有什么自帶函數(shù)?怎么查看函數(shù)的詳細(xì)信息?

(5)Hive支持哪些基木數(shù)據(jù)類型?

(6)請指出下面兩個語句讀取分區(qū)ds數(shù)據(jù)的不同

Select*fromtwhereds=20150101andprovince='gd'orprovince='ex'

Selectxfromlwhereds20150101and(province='gd'orprovince='ex')

(7)將字符串"keyl=valuel&key2=value2…keyn=valuen"進(jìn)行分割放到-一個字段里面,可

以查出任意一個keyx對應(yīng)的valuex值。請寫出查詢語句,并計算總共有多少個key值。

(8)用一個字符串比如"alblc”來測試某個函數(shù)比如split(用|分隔符將字符串進(jìn)行分割)

的語句

(9)a表和b表內(nèi)連接,a表為小表,只有2000行記錄

selecta.*fromaJoinbona.key=b.key

可以進(jìn)行怎樣的優(yōu)化

(10)a表leftjoinb表,b表為小衣,可以進(jìn)行怎樣優(yōu)化?

scleeta.*fromaleftjoinJoinbona.key=b.key

如果a為小表,可以怎樣優(yōu)化?

(11)請指出下面sql語句的區(qū)別

selecta.*fromaleftJoinbona.key=b.keyanda.ds=xxxandb.ds=xxx

selecta.*fromalefJoinbona.key=b.keyandb.ds=xxx

selecta.*fromalefJoinbona.key=b.keyandb.ds=xxxwherea.ds=xxx

Selecta.*fromaleftJoinbona.key=b.keywherea.ds=xxxandb.ds=xxx

(12)多表連按的寫法:a,.b,c三個表內(nèi)連接,連接字段都是key,怎樣寫連接語句?

(13)兩大表連接,發(fā)生了數(shù)據(jù)傾斜,有幾個reduce無法完成,怎么查找發(fā)生數(shù)據(jù)領(lǐng)

斜的原因?應(yīng)該怎樣優(yōu)化?

語句:selecttl.*,nvl(t2.x,l)fromtlleftjoint2ontl.guid=t2.guid

(14)兩大表連接,發(fā)生了數(shù)據(jù)傾斜。有一個reduce無法完成,檢直發(fā)現(xiàn)H中g(shù)uid="

的記錄有很多,其他guid都不重復(fù),這條語句該怎樣優(yōu)化?

語句:selecttl.*,nvl(t2.x,l)fromtlleftjoint2ontl.guid=t2.guid

(15)如何用hiveq!實(shí)現(xiàn)sqL中的exist/in子句

mysql語句如下:

SELECTa*FROMawherea.keyin(selectdstinctkeyfrombwherekeylike'filter%')

(16)sortby>distributeby>clusterby和orderby區(qū)別

注:可參考數(shù)據(jù)工廠的“幫助中心》集群hive》hive使用優(yōu)化》hive使用注意事項(xiàng)”

2.2學(xué)長2

1)筆試題

用HiveSQL實(shí)現(xiàn)

(1)全量用戶登員日志表t_login_all,字段信息ftime(登錄日期)、openid(登錄帳

號)新增用戶登錄日志表t_login_new,字段信息ftime(登錄日期)、openid(登錄帳號)

求每天新增用戶次日、7天、30天留存率。

(說明:7天留存是指當(dāng)天有登錄且第7天還登錄的用戶)

(2)消息流水表t_chatall,字段信息:

Ftime(日期)、send_userid(發(fā)消息用戶id)、receive.userid(接收消息用戶id)、

chatid(消息id)、send.time(發(fā)消息時間)

用戶登錄流水日志表t」ogin_all,字段信息:

Ftime(日期)、user__id(用戶id)>login_id(登錄id)>login_loc(登錄區(qū)服)、k>gin_time

(登錄時間)

求:每天有收發(fā)消息用戶最近登錄時間、登錄區(qū)服,輸出ftime,userjd,login」oc,

login_time

用Sparkcore實(shí)現(xiàn),寫Scala腳本

1reduceByKey()>groupByKey()有什么區(qū)別?

2、DataFrame和RDD有什么區(qū)別?

3、使用累加器,對數(shù)組Array(l,2,3,4)每個元素實(shí)現(xiàn)累加操作,最后打印輸出求和結(jié)果。

4、現(xiàn)有文件file.txt,文件格式如下

Order_id,user_id,payment,productid

1、1768,50,155

2、1218,600,211

3、2239,788,242

4、3101,288,599

5、4899,25,230

6、2311,890,981

求Top10個payment字段的值

2.3學(xué)長3

1)技術(shù)部分

(1)我看你上面寫了你會Spark,那你用Spark寫一下剛剛那道題的代碼(第6題),

不能用SparkSQL

(2)我看你上面有寫到熟悉Hive原理和優(yōu)化,你說一下怎么優(yōu)化

(3)優(yōu)化有說到語句優(yōu)化,然后又說回到pv和uv那個問題,假如說讓你優(yōu)化你怎么

優(yōu)化(我代碼里面有count(distinctid)uv,)

(4)問了一些Kaflca的,我只記得一點(diǎn)點(diǎn),問我數(shù)據(jù)會不會重復(fù)消費(fèi),什么情況下會

重復(fù)消費(fèi)

(5)在Hive執(zhí)行語句的時候如果很慢,什么原因造成

我有提到數(shù)據(jù)傾斜的問題,他又問怎么解決數(shù)據(jù)傾斜

2)項(xiàng)目部分

(1)讓你挑一個比較有亮點(diǎn)的項(xiàng)目詳細(xì)說

(2)你負(fù)責(zé)了什么,數(shù)倉中統(tǒng)計了哪些指標(biāo),

(3)剛剛聽你說項(xiàng)目里面有提到分層,如果我要你求每天商品的pv,uv,從ods層到

dm層它的具體流向,各層都統(tǒng)計了什么(后來讓寫求pv,uv的sql語句)

3)場景部分

(1)有一個分區(qū)表,表名T,字段qq,age,按天分區(qū),讓寫出創(chuàng)建表的語句

(2)剛剛的分區(qū)表,求20200221這個分區(qū)中,年齡第N大的qq號列表

(3)有一個表,兩個字段,分別是qqa和qqb,數(shù)據(jù)如下:

12,34

12,56

12,78

34,56

34,12

找出所有互相關(guān)注的qq對

4)手寫部分

(1)三個字段,timestamp,userjd,product_id,讓求pv最大的商品,寫了之后又叫

用Scala代碼寫一遍,然后又問,假如說只讓你求pv數(shù)大于100的mp3呢,代碼又怎么寫

2.4學(xué)長4

1)技術(shù)部分

(1)你們數(shù)倉用什么建模方法,說出常見的建模方法?

(2)維度建模有什么好處?為什么選擇這個?比如最后業(yè)務(wù)需求要增加一個維度,我

們需要做什么工作?

(3)怎么判斷一個需求能不能實(shí)現(xiàn),你們的判斷標(biāo)準(zhǔn)是什么?需求變更要做什么

(4)增加一個維度后發(fā)現(xiàn)查詢的速度變得非常慢,是什么原因?qū)е碌模?/p>

(5)你們ADS層的數(shù)據(jù)量每天的數(shù)據(jù)量有多大?ADS層再M(fèi)ySQL中的表是怎么創(chuàng)建

的?有什么注意事項(xiàng)?索引怎么創(chuàng)建的?

(6)你知道Spark的寬窄依賴嗎?有沒有把寬依賴轉(zhuǎn)化為窄依賴的例子?

(7)Spark參數(shù)調(diào)優(yōu)做了些什么?

2)算法部分

(1)一個list[1,557,9]去重,并計算時間空間復(fù)雜度

(2)單鏈表的反轉(zhuǎn)

3阿里面試題

3.1學(xué)長1

1)技術(shù)部分

(1)Spark提交job流程

(2)提交腳本中-jar什么意思

(3)Excutor怎么獲取Task

(4)詳解Hadoop的WordCount

(5)Spark做過哪些優(yōu)化,(優(yōu)化說完會問你為什么?原理是什么?)

(6)Spark內(nèi)存管理

2)算法部分

(1)單向鏈表反轉(zhuǎn)

(2)實(shí)現(xiàn)堆棧pushPopMin復(fù)雜度0(1)

(3)實(shí)現(xiàn)一個隊列,男女均衡最長的隊列復(fù)雜度0(N)

3.2學(xué)長2

阿里三面

第一題,億級的交易訂單量,每筆都有金額,快速找出toplOOO,要求不是簡單的排序

然后求出toplOOO,代碼要有健壯性;提示注意是top1000不是toplOoMap和Reduce分別

做Treemap

第二題:有.兩個約1000萬行記錄的4到5G文件,JVM只有32M,在內(nèi)存不溢出的情

況下,找出相似的條數(shù)并打印出來。布隆過濾器

第三題,有一個雙十一的天貓場景,我要做實(shí)時和離線兩種分析方向,從數(shù)據(jù)建模、計

算性能、元數(shù)據(jù)管理、數(shù)據(jù)質(zhì)量上講一講基本架構(gòu)設(shè)計成什么樣子。

阿里四面

第一題,島上有100個囚犯,他們都是藍(lán)眼睛,但是他們都只能看到別人眼睛的顏色,

并不能知道自己的眼睛顏色,而且他們之間不能去談?wù)撗劬︻伾脑掝},規(guī)定每天晚上都可

以有一個人去找守衛(wèi)說出自己的眼睛顏色,如果錯了被殺死,如果對了被釋放。但是大家在

沒有十足的把握前都不敢去找守衛(wèi),有一天,一個醫(yī)生對他們說你們之中至少有一個藍(lán)眼睛,

然后N天,這些人都獲救了,為什么?這句話對他們有什么影響?

第二題,有100層樓梯,從其中一層摔下雞蛋的時候雞蛋會碎,并且次層之上的都會碎,

次層之下的都不會碎,如果你有一個雞蛋、兩個雞蛋、三個雞蛋,你會怎么去找出這個樓層,

最多要試多少次

3.3學(xué)長3(杭州)

1)自我介紹

2)技術(shù)部分

(1)對未來的職業(yè)規(guī)劃是怎樣的?

(2)數(shù)倉的流程?你所做的事情?

(3)能講一下做DW層的案例嗎?如何建模的?

(4)講一下交易的例子吧?

(5)做交易的話模型怎么設(shè)計的?

(6)物流的信息,鏈路的跟蹤在不在你的交易表里邊?

(7)退款的數(shù)據(jù)放在哪個表里?

(8)數(shù)倉的模型是怎么建模的?

(9)記錄交易的,整體的鏈路,到底設(shè)計了幾張表?

(10)拉鏈表的原理?

(11)拉鏈表整合的方式?

(12)你在之前的公司遇到的痛點(diǎn)有哪些?(我講的數(shù)據(jù)傾斜)

(13)數(shù)據(jù)傾斜怎么解決的?。?/p>

(14)Join的等傾斜,Join的key,關(guān)聯(lián)鍵,如果傾斜的話,能直接打散,如果Map端

解決不了呢?M叩join解決不了怎么辦?兩個都是大表怎么解決數(shù)據(jù)傾斜?

(15)MR原理?

(16)Map端做的最重要的事情是什么?

(17)有沒有其他你特別擅長的?

(18)怎么提前你SQL寫的特別好呢?

(19)建索引要注意哪些事情?

(20)你有啥要問我的嗎?

4百度面試題

4.1學(xué)長1

1)筆試部分

(1)你可以得到網(wǎng)站訪問記錄,沒條記錄有userlP,設(shè)計一個程序,要隨時能計算出

過去5分鐘內(nèi)訪問次數(shù)最多的1000個IP

(2)簡述Paxos協(xié)議

(3)編程簡單實(shí)現(xiàn)一個阻塞隊列

(4)簡單實(shí)現(xiàn)一個LRU算法

(5)有一個5000萬的用戶文件(user_id,name,age),一個2億記錄的用戶看電影的記錄文

件(user_id,url),根據(jù)年齡段觀看電影的次數(shù)進(jìn)行排序?

2)技術(shù)部分

(1)Java的NIO是否了解

(2)Java多線程(什么wait、notify)

(3)MapReduce的shuffle過程(手畫,邊畫邊介紹),reduce是怎么到map端獲取數(shù)

據(jù)的(RPC通信是否了解)

(4)一句話介紹MiipReduce

(5)Spark做緩存時緩存在哪里

(6)百度不用Spark,只用Hadoop和MapReduce(至少這個部門是這樣,這個部門的

主要業(yè)務(wù)是做用戶畫像),把MapReduce工作的各個階段過程吃透

(7)是否看過Hadoop源碼

(8)Linux系統(tǒng)(常用命令啥的)

(9)除了這些平時還接觸或者學(xué)習(xí)哪些技術(shù)

3)項(xiàng)目部分

(1)業(yè)務(wù)架構(gòu)

(2)根據(jù)項(xiàng)目業(yè)務(wù)介紹技術(shù)

(3)MapReduce數(shù)據(jù)傾斜和內(nèi)存溢出怎么辦

4)算法部分

(1)手寫歸并排序

(2)用遞歸實(shí)現(xiàn)斐波那契數(shù)列第100項(xiàng)的值(第一項(xiàng)和第二項(xiàng)分別為0和1),手寫

(3)算法和數(shù)據(jù)結(jié)構(gòu)了解到什么程度、知道多少

(4)Java中的數(shù)據(jù)結(jié)構(gòu),ArrayList和LinkedList的區(qū)別,ArrayList為什么查詢快(為

什么用數(shù)組就快)、LinkedList為什么增刪快,哪些Map是線程安全的

5)手寫代碼部分

(1)手寫MapReduce的WordCount(導(dǎo)入的包最好能記住)

6)場景部分

(1)遇到垃圾日志怎么辦(假如說有人惡意制造日志,怎么處理。我說的黑名單機(jī)制,

那個面試官貌似還挺滿意)

4.2學(xué)長2

1)基本信息介紹

(1)百度:視頻面試

(2)面試周期:5天

(3)面試次數(shù):6次

(4)面試總時長:3小時

2)百度一面二面(印象中的一些問題):

(1)自定義UDF、UDTF

(2)如何確定計算數(shù)據(jù)的準(zhǔn)確性?

(3)建立數(shù)倉的目的

(4)自定義攔截器步驟

(5)SpringMVC

(6)設(shè)計網(wǎng)站前后端交互問題

(7)Linux常用命令

3)百度三面(部門負(fù)責(zé)人):

(1)在沒有PM的情況下如何對指標(biāo)做拆分去分析?

(2)介紹了他們部門的工作內(nèi)容

4)百度四面hrbp:

(1)介紹工作經(jīng)歷+工作遇到的困難+對所應(yīng)聘職位的理解+分析指標(biāo)提出時間和原因+

離職原因等問題

5)百度五面業(yè)務(wù)總裁:

(1)某一天日活下降10%,需要從哪些維度分析,如何分析?不用說技術(shù)

6)百度六面Recuriter面:

(1)上家薪資+期望薪資+職級+對數(shù)據(jù)分析和指標(biāo)分析的理解+職業(yè)規(guī)劃等問題。

4.3學(xué)長3

1)基本信息介紹

(1)11月17號度小滿金融(原百度金融,A輪公司)

(2)面試地點(diǎn):西北旺百度科技園旁

(3)面試時長:2個半小時

(4)面試次數(shù):3次

2)一面:

(1)一面中規(guī)中距,有手寫SQL環(huán)節(jié),還有SparkStreaming常用算子解決實(shí)際問題。

大概1個多小時。

(2)手寫SQL考的是:

三個字段:area、year>temperature.統(tǒng)計每個地區(qū)的溫度最高的對應(yīng)的年份。

寫的用rank函數(shù),一個子查詢,險過。

3)二面:

因?yàn)槊娴氖羌軜?gòu)師,所以二面問的是幾個組件的版本號和幾個大數(shù)據(jù)組件的安裝過程和

配置文件細(xì)節(jié),還有HA的幾個進(jìn)程的作用,比較難。大概20分鐘

4)三面:

問了自定義UDAF,UDTF,和數(shù)倉開放性問題

O

4.4學(xué)長4

1)筆試

tb_cuid_1d表:

字段名中文名字段類型字段示例

cuid用戶的唯一標(biāo)識stringed2s9w

os平臺stringandroid

soft_version版本string

event_day日期string20190101

ext擴(kuò)展字段array

cuidossoft_versionevent.dayext

[<"id":100L"type'7'show","from'V'home",

?'source'?'his"},{"id":1002,"type":"dick",

"fromH:"swan""source^'Ycm"},{"id":1003,

A1Android20190101f

,,

"type":"slide"r"from":"tool","source":"banner}(

{"id":1001,"type":"del","from":,,wode",

"source'7'myswan"}]

A2iPhone20190101

(1)寫出用戶表tb_cuid_ld的20200401的次日、次7日留存的具體HQL:一條sql

統(tǒng)計出以下指標(biāo)(4.1號uv,4.1號在4.2號的留存uv,4.1號在4.8號的留存uv)(一條sql

寫完)

(2)統(tǒng)計當(dāng)天不同平臺、版本下的uv、pv

(3)解析ext中所有fi\J"typeH(lateralviewexplode)

2)二面:

號在但是不在的用戶

t_a(uidzos,day),t_b(uid,os,day),15t_a,t_b

ut格式:機(jī)型_app版本_xxx_xxx_廠商,如iphone6s___sdkl2.1_baidujphone:

解析;12.1

用戶學(xué)分表S8re:

字段名中文名字段類型字段示例

uid用戶idbigint23145

class班級string2-1

scores用戶信息array<string>[*math_100','music_90',...

t_a(uid,os,day)

最近30內(nèi),所有用戶末次活躍日期

最近30內(nèi),所有用戶末次活躍日期和倒數(shù)第二次的差值

4.5學(xué)長5

一面:

講項(xiàng)目

kafka精確一次性

數(shù)據(jù)量

log日志類型,存的什么數(shù)據(jù)

sparkstreaming怎么做的實(shí)時

hbaserowkey你是怎么設(shè)計的

namenode重啟流程

hdfs讀流程

flume攔截器怎么寫的

flume結(jié)構(gòu)

兩道算法:

窗口求中位數(shù),說流式處理底層求熱點(diǎn)問題常用到

一個樹形結(jié)構(gòu),一個節(jié)點(diǎn)可以監(jiān)聽它的父節(jié)點(diǎn)和子節(jié)點(diǎn),問最小監(jiān)聽數(shù)量

5京東面試題

5.1學(xué)長1

1)筆試部分

(1)列舉幾種數(shù)據(jù)傾斜的情況,并解釋為什么會傾斜,以及如何解決?

(2)解釋一下SQL運(yùn)行步驟,是否有優(yōu)化空間,如果有,如何優(yōu)化:

SELECTa.id,FROMaLEFTOUTERJOINbONa.id=b.idWHEREa.dt=

*2016-01-015ANDb.dt=<2016-01-0r;

(3)已知表a是一張內(nèi)部表,如何將它轉(zhuǎn)換成外部表?請寫出相應(yīng)的Hive語句

(4)用select做查詢是,用哪個函數(shù)給值喂null的數(shù)據(jù)設(shè)置默認(rèn)值?

(5)Hive中,建的表為壓縮表,但是輸入文件為非壓縮格式,會產(chǎn)生怎樣的現(xiàn)象或者

結(jié)果?

(6)訂單詳情表ord_det(order_id訂單號,sku_id商品編號,sa1e_qtty銷售數(shù)量,dt日

期分區(qū))任務(wù)計算2016年1月1日商品銷量的ToplOO,并按銷量降級排序

(7)某日志的格式如下:

pin|-|request_tm|-url|-|sku_id|-|amount

分隔符為M-r,

數(shù)據(jù)樣例為:

張三Hq2013-11-2311:59:30|-||-|100023|-|110.15

假設(shè)本地數(shù)據(jù)文件為sample.txt,先將其導(dǎo)入到hive的test庫的表t_sample中,并

計算每個用戶的總消費(fèi)金額,寫出詳細(xì)過程包括表結(jié)構(gòu)

(8)test.log日志中內(nèi)容如下左列所示,使用awk輸出右列4行數(shù)據(jù)

lO-3-jd-dv

2-4-jd-dv10-4-jd-dv

5-7-pv-click5-7-pv-click

36-24-pv-uv

37-24-pv-uv37-24-pv-uv

24-3-uv-mq24-3-uv-mq

(9)Storm的分組策略有哪些?

5.2學(xué)長2

i)筆試部分

(1)HiveSQL語句中selectfromwheregroupbyhavingorderby的執(zhí)行順序

(2)Hive中M叩Join的原理和實(shí)際應(yīng)用

(3)寫出你常用的HDFS命令

(4)使用Linux命令查詢filel里面空行的所在行號

(5)有文件chengji.txt內(nèi)容如下:

張三40

李四50

王五60

請使用Linux命令計算第二列的和并輸出

(6)在Linux環(huán)境下有文件/home/dim_city.txt如何加載dim_city外部表中,HDFS路

徑/user/dim/dim_city

(7)請列出正常工作的hadoop集群中hadoop都分別需要啟動哪些進(jìn)程,他們的作用

分別是什么,盡可能寫的全面些

(8)數(shù)據(jù)倉庫的整體架構(gòu)是什么,其中最重要的是哪個環(huán)節(jié)

5.3學(xué)長3

1)筆試部分(京東金融)

(1)數(shù)據(jù)按照業(yè)務(wù)含義可以分為時點(diǎn)數(shù)和時期數(shù),在一般情況下,下列哪些數(shù)據(jù)屬于

時點(diǎn)數(shù)?

A.昨天的訂單量B.昨天的庫存量

C.昨天的點(diǎn)擊量D.昨天的訪問次數(shù)

(2)Abouthadoopmap/reduce,Therightansweris?

A.reduce的數(shù)量必須大于零

B.reduce總是在所有map完成之后再執(zhí)行

C.combiner過程實(shí)際也是reduce過程

D.Mapper的數(shù)量由輸入的文件個數(shù)決定

(3)Hive中的元數(shù)據(jù)不包括?

A.表的名字B.表的外鍵

C.表的列D.分區(qū)及其屬性

(4)Hive中如何限制查詢條數(shù)?

A、TOPBxlimitC、rownumD、only

(5)關(guān)于hivesql以下說法正確的是:

A.clusterby不會對字段進(jìn)行排序

Borderby只保證每個reducer的輸出有序,不保證全局有序

Csortby是全局有序

Ddistributeby制定規(guī)則字段,將相同組數(shù)據(jù)分發(fā)到同一reducer

(6)下面SQL的運(yùn)行結(jié)果是什么?

Selecta.id,from(selectidfromtable_id)aleftsemijoin(selectid,namefrom

table_nm)bona.id=b.id

table_id

idname

1wzb

A、(a,ok)B、(2,null)C、(l,ok&&2,null)D、以上結(jié)果均不對

(7)你處理過的最大數(shù)據(jù)量是多少?處理時是否遇到問題,采取了哪些優(yōu)化的方案?

(8)列舉Hive幾種數(shù)據(jù)傾斜的場景以及解決方案?

5.4學(xué)長4

1)技術(shù)部分

(1)你們Spark哪個版本

(2)SparkStreaming如何和Kafka對接

(3)Kaflca消費(fèi)過的消息如何再消費(fèi)

(4)Redis版本多少

(5)CDH版本多少

(6)集群怎么部署的

(7)數(shù)據(jù)傾斜怎么處理

(8)MR和Spark的Shuffle的區(qū)別

(9)MR環(huán)形數(shù)組怎么設(shè)置最大能設(shè)置多大

(10)Redis分布式鎖怎么實(shí)現(xiàn)

(11)Rdd和dateset的區(qū)別

(12)說說Scala伴生對象

(13)解釋Scala的模式匹配

(14)談?wù)凷cala隱士轉(zhuǎn)換

(15)Yam的組件說說他們的功能

(16)Spark一個Excutor給多大內(nèi)存

(17)Spark幾種部署模式還有他們的區(qū)別

(18)你運(yùn)行程序是client還是cluster為什么

(19)說出git的幾個常用命名

(20)git如何切換分支

(21)對Hive的理解做過哪些優(yōu)化

4)算法部分

⑴用Idea寫快速排序

5)手寫代碼部分

(1)手寫SparkWordCount

6)項(xiàng)目部分

(1)整個業(yè)務(wù)數(shù)據(jù)的流向

7)場景部分

(1)現(xiàn)有兩張大表所有字段都得保留不能再過濾了join操作就發(fā)生OOM怎么解決

(2)Session日志分析如何求出用戶訪問的Page路徑

(3)三表的join求銷量,order——id的統(tǒng)計(記得不了)就是三表join求統(tǒng)計吧

5.5學(xué)長5

1)一面

(1)HDFS、MR、Yam的理解

(2)MR的WordCount簡單描述

(3)Kafka快的原因,零拷貝的原理

(4)Redis的數(shù)據(jù)類型

(5)Kafka的isr隊列

(6)Spark的運(yùn)行模式,WordCount的簡單描述

(7)基本上是簡歷的東西

2)二面

基本上和簡歷無關(guān),問的算法,我不懂,沒辦法整理

5.6學(xué)長6

1)京東數(shù)科二面

(1)最近一兩年內(nèi)你做過感覺最有趣或者讓你記憶深刻的項(xiàng)目,挑一個說一說。我說

的是SparkStreaming實(shí)時計算(李老師講的在線教育那個項(xiàng)目,我給稍微改了改成電商項(xiàng)目

了)。

(2)有關(guān)于Spark、Kafka、MySQL的項(xiàng)目你感覺那個比較熟練一點(diǎn)。我回答我的是對

spark比較感興趣。

(3)做這個項(xiàng)目用的是Spark的哪個版本?

(4)這個版本里用Kafka用的是那種消費(fèi)方式。

(5)可以簡單講一下direct大概的一個設(shè)計套路。

(6)如果說我每隔一百條或者一千條,記錄偏移量,如果跑到八百條宕掉了,有可能

重復(fù)消費(fèi),針對receiver優(yōu)勢能不能解決這一點(diǎn)?

(7)如果dsteam方式去拉取Reduce拉取出去,那有多少個線程從Kafka里拖數(shù)據(jù)?

(8)平時除了用Spark比較多,用Hive也不少,平時會涉及到調(diào)參優(yōu)化方面有哪些?

(9)你能介紹一下Flume的架構(gòu)或者設(shè)計。

(10)用代碼實(shí)現(xiàn)一個類似于Flink水位線的機(jī)制。

(11)有做過依賴調(diào)解的工作嗎?比如說有沒有碰到問題說引用自己一個依賴,但是在

別的地方用了一個其他的依賴由于版本不統(tǒng)一,不能兼容該怎么辦

(12)最近為什么會想到說換一個工作。(離職原因)

(13)你有什么想問我們的。

658面試題

6.1學(xué)長1

1)筆試部分(基礎(chǔ)題)

(1)請用圖形的方式表示出Java運(yùn)行時數(shù)據(jù)區(qū)

(2)以上哪些數(shù)據(jù)區(qū)在空間不足的情況下會拋出異常?

(3)Java工程出現(xiàn)內(nèi)存泄露如何排查?請寫出你知道的排查工具以及方法

(4)以下代碼的輸出結(jié)果是什么?

Stringstr"newStringBuilder("58").append(nganji").toString();

System.out.println(strl.intern==strl);

Stringstr2=newStringBuilder("jan).append(,'va,,).toString();

System.out.println(ern==str2);

(5)在Scala中有一種函數(shù)其參數(shù)可以為參數(shù),這樣的函數(shù)稱為高階函數(shù),請參照scala

中常見map函數(shù)實(shí)現(xiàn)一個名為mymap的高階函數(shù),mymap接收兩個參數(shù)值,第一個函數(shù)

(x:Int)=>3*x,第二個為Int型數(shù)據(jù)。在mym叩函數(shù)體內(nèi)將第一個參數(shù)作用于第二個參數(shù)。

2)筆試部分(算法)

(1)給定兩個只含有0和1字符的字符串,實(shí)現(xiàn)二進(jìn)制加法。如:

Stringstrl="101"

Stringstr2="ll"

實(shí)現(xiàn)binarySum(Stringsi,Strings2),使得輸入以上字符時返回字符串"1000"。

(2)給定一個整型數(shù)組array(沒有重復(fù)元素),再給出一個目標(biāo)值target,數(shù)組array

中有兩個元素的加和等于target,要求返回這兩個元素的下標(biāo)。如array={1,2,4,6,3}target=

8,則返回[1,3]。

3)筆試部分(大數(shù)據(jù)相關(guān))

(1)現(xiàn)有一張Hive表,表里面有兩個字段uuid和ts,分隔符為\001分別表示用戶唯

一標(biāo)識和用戶來訪的時間戳。

有如下需求

(a)要求計算每個用戶的最后一次來訪時間,用MapReduce實(shí)現(xiàn)(寫完整的代碼)

(b)你所寫的代碼有沒有優(yōu)化的空間?如果有,請寫出優(yōu)化方法。

(2)用Spark實(shí)現(xiàn)WordCount。

(3)Spark-Streaming+Kafka實(shí)現(xiàn)實(shí)時計算這種方案中通過什么方式保證數(shù)據(jù)的準(zhǔn)確

性?

(4)分別列舉Hadoop和Spark中的文件緩存方式。

(5)HDFS的一致性是指什么?有幾種語義?

(6)基于Yarn的推測執(zhí)行是怎么實(shí)現(xiàn)的?描述其大致算法。

QUESTIONNO:1

publicclassTesti{

publicstaticvoidchangeStr(Stringstr){

str="welcomeu;

}

publicstaticvoidmain(String[]args)(

Stringstr=H1234H;

changeStr(str);

System.out.println(str);

)

)

輸出結(jié)果:

QUESTIONNO:2

publicclassTest2{

staticbooleanfoo(charc){

Systemoutprint(c);

returntrue;

)

publicstaticvoidmain(String[]argv){

inti=0;

for(foo('A');foo('B')&&(i<2);foo('C')){

i++;

foo('D');

輸出結(jié)果:

6.2學(xué)長2

i、一面(學(xué)長面)

1)技術(shù)部分

(1)HashMap如何遍歷。(這個忘了,百度了一下是用EntrySet)

(2)SparkStreaming窗口操作的3個時段設(shè)定分別是什么,問到倍數(shù)這塊(第二輪也

問到了)

2)項(xiàng)目部分

(1)講了一下推薦項(xiàng)目怎么回事

(2)因?yàn)槭钦袛?shù)倉這塊的,所以三輪數(shù)倉都問了(第二輪的數(shù)倉問題比較偏,我寫到

第二輪總結(jié)里)

3)算法部分

(1)快排或冒泡排序,我講的是快排

4)情景部分

(1)設(shè)定了一個情景,手寫SQL,比較簡單吧

2、二面

1)技術(shù)部分

(1)flatMap和map的區(qū)別

(2)A表joinB表,用MR是如何處理的(這個真沒看過,百度了之后才知道的)

(3)Yarn的資源調(diào)度

(4)Hbase有put方法,那如何批量put數(shù)據(jù)進(jìn)hbase里,用什么方法(這個也沒答上,

面試的時候想不起來了)

(5)NameNode的HA,一臺掛掉之后,另一臺會丟失數(shù)據(jù)嗎,掛掉之前有一部分日志

為更新(這個我答的是edits會保存下來,和之前的鏡像一起加載,所以不會丟)

(6)問了Kafka的消費(fèi)速度(這個我說的幾十兆每秒,群里已經(jīng)發(fā)了,是1G每秒,

可自由發(fā)揮)

(7)Kafka分區(qū)(我說的5個,有點(diǎn)多了,應(yīng)該說2個或者3個吧)

(8)問了HDFS的塊你們設(shè)置的是多大(我說的128M,他有疑惑,我說默認(rèn)是128M,

他也表示疑惑)

(9)問了Spark版本,說一直是這個版本嗎(我說現(xiàn)在用的是2.0,之前用的1.6)

(10)Sparksql什么時候不能讀到Hive的數(shù)據(jù)(這個也沒答上來)

2)項(xiàng)目部分

(1)你們數(shù)倉之間的數(shù)據(jù)是怎么調(diào)度的

3)情景部分

(1)設(shè)置了一個情景,讓寫SQL,也相對簡單吧

3、三面

項(xiàng)目組負(fù)責(zé)人

(1)要招數(shù)倉和算法的,所以主要問了數(shù)倉。

(2)數(shù)倉的DM為何不由數(shù)據(jù)組來設(shè)計封裝,你覺得是數(shù)據(jù)組封裝有什么不妥嗎

(3)HBase里面你們都存了具體哪些業(yè)務(wù)數(shù)據(jù),他說這些數(shù)據(jù)我覺得存到redis或者

mysql中也行呀,為什么要非要用HBase,然后問了我你認(rèn)為多少的數(shù)據(jù)量適合用HBase

(4)結(jié)合你這個HBase里存儲的數(shù)據(jù),說一下你們的rowkey怎么設(shè)計的

6.3學(xué)長3

1)技術(shù)部分

(1)對Hadoop各組件之間通信RPC協(xié)議了解

(2)Hadoop的讀數(shù)據(jù)流程

(3)傳輸過程中DataNode掛掉怎么辦

(4)HBase源碼

(5)HBase構(gòu)建二級索引如何保證索引與數(shù)據(jù)的一致

(6)JVM架構(gòu),堆內(nèi)存,GC算法,問平時會不會調(diào)GC算法

(7)-Xms和-Xmx設(shè)置一個和設(shè)置兩個而且兩個設(shè)置的都是一樣有什么區(qū)別嗎

(8)查看當(dāng)前Java內(nèi)存各個代的內(nèi)存比例

(9)查看線程堆棧的命令

(10)查看Java進(jìn)程里邊對象的大小,

(11)堆內(nèi)存泄露怎么看,除了Dump出來用MAT還有什么簡單的方法

(12)Java進(jìn)程用戶反饋請求服務(wù)很慢,但是代碼不是你開發(fā)的你怎么排查問題,

多線程,實(shí)現(xiàn)線程同步的方法

2)算法部分

(1)問對數(shù)據(jù)結(jié)構(gòu)和算法了解嗎,堆棧和鏈表什么的

6.4學(xué)長4

一面:

sparkstreaming用了哪些算子

flatmap與map的區(qū)別

dwd的是啥dwss是啥,dwtt是什么

你們獲取kafkaOffset的API是什么

HBase創(chuàng)建表時,rowkey的設(shè)計

ODS層干了什么

yarn工作機(jī)制說一下

kylin怎么用的

superset怎么用的

說一下JVM重用的參數(shù)

你們合并文件用的哪個參數(shù)merge.mapred.files

Hive使用時遇到過什么困難

sparkstream如果進(jìn)行精確一次性消費(fèi)

7新浪面試題

7.1學(xué)長1

7.1.1一面

2)技術(shù)部分

(1)讓我介紹下Sqoop,說他沒見過

我說Sqoop我用的不熟,知道怎么用,可以簡單地給他介紹一下。然后就說Sqoop是

HDFS、關(guān)系型數(shù)據(jù)、HBase它們?nèi)咧g傳輸數(shù)據(jù)用的,很方便。

(2)讓我介紹MapReduce的運(yùn)行過程

二話不說要筆要紙,手繪MapReduce從InputFormat到OutputFormat的流程,一邊畫圖

一邊說。

3)項(xiàng)目部分

(1)讓我介紹項(xiàng)目我都是給他要筆要紙,手繪架構(gòu)圖。

離線:data->flume->kafka->hdfs->hadoop/spark->mysql->前端展示

實(shí)時:data->flume->kafka->SparkStreaming->mysql->^/端展示

kafka到hdfs是自定

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論