以下大多數都是博主或者博主同事經歷過的面試題喲~關於工作內容的就不寫啦,一些基礎面試題跟大家分享下
多看看面試題也能夠讓你快速瞭解自己的能力和短缺的地方哦~
本篇博客會持續更新,也希望大家多多提供一些面試題哦~
1、基礎面試
(1) 自我介紹:emmm這個就不多講啦,把大概背景講清楚就可以
(2)自己做過的項目介紹:大家可以選擇最能夠體現自己能力的項目。可以從以下幾個方面來講:
a、簡單介紹下項目
b、自己在項目中的職責及出色業績(貢獻)
c、遇到了哪些問題,如何解決的(如果問題還沒解決,就還是不要說啦哈哈)
d、在這個項目中學到了什麼,比如業務與分析相結合、編程能力、團隊合作能力等
(3)解決問題最重要的能力是哪些?
(4)我在項目中總結了哪些技能點?
(5)你在數據挖掘中的優勢?
(6)你理解什麼是數據挖掘?
2、數據分析與挖掘相關問題(括號內表示被問到的次數哦,有些會提供參考答案,但還是希望大家自己多多研究喔)
以下序號是根據更新狀態來的,所以每個板塊的序號不對應
一、數據分析與挖掘方面:
(1)爲什麼會產生過擬合,有哪些方法可以預防或克服過擬合?(5次)
所謂過擬合(Overfit),是這樣一種現象:一個假設在訓練數據上能夠獲得比其他假設更好的擬合,但是在訓練數據外的數據集上卻不能很好的擬合數據。此時我們就叫這個假設出現了overfit的現象。
過擬合產生的原因:出現這種現象的主要原因是訓練數據中存在噪音或者訓練數據太少。
解決方法:
1、 增大數據量
2、 減少feature個數(人工定義留多少個feature或者算法選取這些feature)
3、 正則化(留下所有的feature,但對於部分feature定義其parameter非常小)
4、 交叉驗證,重採樣評價模型效能,K折交叉驗證
5、保留一個驗證數據集檢驗
注意:幾乎所有的集成模型都是爲了防止過擬合的,他們的思想都可以拿來說
(2)無監督和有監督算法的區別?
監督學習(supervised learning):通過已有的訓練樣本(即已知數據以及其對應的輸出)來訓練,從而得到一個最優模型,再利用這個模型將所有新的數據樣本映射爲相應的輸出結果,對輸出結果進行簡單的判斷從而實現分類的目的,那麼這個最優模型也就具有了對未知數據進行分類的能力。包括所有的迴歸算法分類算法,比如線性迴歸、決策樹、KNN、SVM等
無監督學習(unsupervised learning):我們事先沒有任何訓練數據樣本,需要直接對數據進行建模。包括所有的聚類算法,比如k-means 、PCA、 GMM等
(3)tree-base模型是否瞭解,決策樹和隨機森林區別是什麼,樹節點的分裂都有哪些策略(即節點的選擇)
直接說隨機森林是很多棵決策樹組成的,一定程度上能避免過擬合問題。
樹節點分裂:ID3 : 以信息增益大小來建立。
- C4.5 : 以信息增益率大小來建立。
- CART : 以基尼係數大小來建立。
決策樹的數據最好是離散型的吧?
ID3,只處理離散型的,C4.5可以直接處理連續值和離散值,CART是分類迴歸都可以做的決策樹,支持所有類型
(4)tf-idf的公式
TFIDF實際上是:TF * IDF
詞頻(term frequency,TF)指的是某一個給定的詞語在該文件中出現的頻率。
逆向文件頻率(inverse document frequency,IDF)是一個詞語普遍重要性的度量。某一特定詞語的IDF,可以由總文件數目除以包含該詞語之文件的數目。
這邊的例子以上述的數學公式來計算。詞頻 (TF) 是一詞語出現的次數除以該文件的總詞語數。假如一篇文件的總詞語數是100個,而詞語“母牛”出現了3次,那麼“母牛”一詞在該文件中的詞頻就是3/100=0.03。一個計算文件頻率 (IDF) 的方法是文件集裏包含的文件總數除以測定有多少份文件出現過“母牛”一詞。所以,如果“母牛”一詞在1,000份文件出現過,而文件總數是10,000,000份的話,其逆向文件頻率就是 lg10,000,000 / 1,000)=4。最後的TF-IDF的分數爲0.03 * 4=0.12。
(5)維度怎麼擴展?
比如時間,那我可能取分段區間。可能單取年份,可能取距離當今多久
(6)特徵怎麼選擇?
確定方差最大化,或者通過分類,尋找特徵差異最大化。其他就是有具體看業務,要跟業務相結合,有統計性的(比如用tfidf轉換行爲軌跡),有直接性的(教育、性別等)
(7)隨機森林裏面用的哪種決策樹?
參數可選gini或者entropy,不用c4.5,因爲會剪枝,隨機森林不需要剪枝
https://blog.csdn.net/zhixiongzhao/article/details/72487284
(8)對數據分析中關鍵指標的定義?
我回答:可解釋的指標都是可以的。比如:用戶網站點擊率,可以定義爲單天的點擊次數,也可以定義爲一個月的平均點擊次數,關鍵看可解釋業務性
(9)邏輯迴歸與線性迴歸的區別?
邏輯迴歸:迭代求解
線性迴歸:直接求解
(10)機器學習是方法,數據挖掘是應用
(11)最大似然估計和最小二乘法的區別
http://blog.csdn.net/lu597203933/article/details/45032607
(12)假設一個房間有5個嬰兒,性別2男3女,現在加入一個性別未知的嬰兒。此時從這6個嬰兒中,隨機抽取一個,發現是男孩子。問後來加入嬰兒性別是男孩子的概率多大?0.6
(把題目換成,很容易想到貝葉斯--
假設一個房間有5個嬰兒,性別2男3女,現在加入一個性別未知的嬰兒(性別分佈爲男p女1-p)。此時從這6個嬰兒中,隨機抽取一個,發現是男孩子。問後來加入嬰兒性別是男孩子的概率多大?(用p表示)))
具體解題步驟:參考鏈接https://zhidao.baidu.com/question/264525694500522765.html
(13)例如:一座別墅在過去的 20 年裏一共發生過 2 次被盜,別墅的主人有一條狗,狗平均每週晚上叫 3 次,在盜賊入侵時狗叫的概率被估計爲 0.9,問題是:在狗叫的時候發生入侵的概率是多少?貝葉斯公式P(A∩B) = P(A)*P(B|A)=P(B)*P(A|B)。如上公式也可變形爲:P(B|A) = P(A|B)*P(B) / P(A)。
我們假設 A 事件爲狗在晚上叫,B 爲盜賊入侵,則以天爲單位統計,P(A) = 3/7,P(B) = 2/(20*365) = 2/7300,P(A|B) = 0.9,按照公式很容易得出結果:P(B|A) = 0.9*(2/7300) / (3/7) = 0.00058
(14)採用EM算法求解的模型有哪些?爲什麼不用牛頓法或者梯度下降法?
一般有混合高斯、協同過濾、k-means。算法一定會收斂,但是可能會收斂到局部最優。求和的項數會隨着隱變量的數目指數上升,會給梯度計算帶來麻煩。EM算法是一種非梯度優化算法。
(15)用EM算法推導解釋K-means
k-means算法是高斯混合聚類在混合成分方差相等,且每個樣本僅指派一個混合成分時候的特例。k-means算法與EM算法的關係是這樣的:
· k-means是兩個步驟交替進行:確定中心點,對每個樣本選擇最近中心點--> E步和M步。
· E步中將每個點選擇最近的類優化目標函數,分給中心距它最近的類(硬分配),可以看成是EM算法中E步(軟分配)的近似。
· M步中更新每個類的中心點,可以認爲是在「各類分佈均爲單位方差的高斯分佈」的假設下,最大化似然值;
(16)如何進行特徵選擇?
https://www.zhihu.com/question/28641663/answer/41653367
(17)SVM和LR的區別
http://blog.csdn.net/yan456jie/article/details/52524942
(18)邏輯迴歸爲什麼用sigmod,不用其他函數?
答:1、sigmod 本身的性質:
a、輸出範圍有限,數據在傳遞的過程中不容易發散。
b、輸出範圍爲(0,1),所以可以用作輸出層,輸出表示概率。
c、抑制兩頭,對中間細微變化敏感,對分類有利。
2、之所以LR 用sigmod,不是因爲LR 選擇了 sigmod ,而是用 指數簇分佈和 最大熵原理 推導出來的形式,就是這個樣子,後來起名叫sigmod
(19):邏輯迴歸的係數想要都是正數,應該怎能做?
答:比如你訓練好的模型是y = x1 - x2,這時候x2的係數是負數,然後你只要把樣本x2這個維度的數字全取-j就好了,重新再次訓練就全是正數了(大牛說這是一個sb操作)
(20):樣本不平衡處理方法?(好多次)
答:
a、負樣本少,就複製到一定比例
b、或者把正樣本刪除一部分
c、分段逐一訓練(舉例:正樣本10000,負樣本1000,將正樣本隨機分成10份,每份1000,然後拿着負樣本的1000與正樣本的每一份進行訓練,最後進行融合選擇)
d、模型參數調權重(模型裏面有個參數可以調整樣本權重)
e、交叉驗證
f、根據樣本隨機構造新的樣本
(21)連續值轉換爲離散值,有什麼辦法,比如年齡?(好多次)
答:
- 根據業務知識區分
- 根據pandas下面qcut和cut方法進行等頻或等寬處理
- 風控中 可以根據woe和iv 或者卡方檢驗
- 用聚類來做最優化尺度(沒試過)
(22)現金貸團伙作案,你有什麼算法或方法去識別
答:從規則角度上講:可以從ip,通訊錄共同聯繫人,設備指紋等信息上分析
從模型角度講:根據上面的特徵,可以通過聚類來分羣
(23)關於風控的指標?woe和iv公式,評分卡原理
(24)假如現在有一個數據分析需求,你會怎麼做?先跟需求方確認需求(需要達成一致),然後確定元數據缺失情況,確定缺失原因和補救方法,然後進行數據提取,分析,分析過程中可跟需求方保持溝通,然後分析完後將結果呈現給需求方,再次與需求方溝通,增刪改查。
(25)假如現在有一個項目需要你建模,你會怎麼做?回答建模過程即可
(26)邏輯迴歸的結果 0.8表示什麼?這個面試官是個傻逼嗎,直接這麼問,先問清楚是幾分類,然後問這個0.8是在哪個index上的。
(27)你在建模過程中遇到過什麼困難?(很多次)樣本不平衡問題(然後回答解決辦法),樣本過擬合問題(然後回答解決辦法),準確率不高(結合更換特徵,模型調參,換模型等思路回答)
(28)Bagging和Boosting的區別:
參考鏈接:https://blog.csdn.net/shaiguchun9503/article/details/82700036
(29)某人對一目標進行射擊,每次命中率都是0.25,若使至少命中1次的概率不小於0.75,至少應射擊幾次?
解:設應該射擊n次,則在這n次射擊中,命中的次數用X表示,則
X服從B(n,0.25)的二項分佈,則至少一次命中的概率
P=1-都不中的概率=1-0.75^n
解1-0.75^n>=0.75 得n>=5.所以應該射擊5次
(30)KS指標、混淆矩陣、roc曲線、AUC的定義。
參考鏈接:https://blog.csdn.net/sinat_30316741/article/details/105491746
(31)申請評分卡原理和開發,包括計算公式等。
見 自己整理好的評分卡相關文檔
二、數據分析方面:
(1)分析原因,某產品6月份的平均日活率比7月多很多,請問你會從哪幾方面分析?
回答 思路+方法(以某個信用app爲例)
答:1、活動原因
(1)分析參與活動的用戶的後續行爲
(2)分析未參與活動的用戶的同一時間的行爲
(3)對比以上兩數據趨勢,如果發現(1)和(2)有明顯不同的趨勢(如1驟降),那可能是活動的原因
2、功能改版
(1)與往期用量對比
3、當期貸款需求變化(不好定,需要專業分析)
4、歷史同期趨勢對比(多個因素組合,可能說服力不強,但是大致可以看下趨勢)
(2)流失用戶怎麼定義的?如何用數據做正確定義?
答:第一種方法:拐點理論:根據用戶留存判斷,即到多少天之後,留存用戶比例開始穩定,則這一段時間就是 流失用戶週期。用戶回訪率拐點(用戶回訪率 = 回訪用戶數 ÷ 流失用戶數 × 100%)
其他:
a、https://www.zhihu.com/question/68029067 此種方法可用於預測 一個用戶是否即將成爲流失用戶
(3)用戶生命週期怎麼定義?
答:參考鏈接:https://blog.csdn.net/k7Jz78GeJJ/article/details/79434904
(4)資源位推薦,假如一個app首頁,有一個九宮格,你知道每個九宮格的點擊率,付費用戶數,付費金額等相關指標,你會怎麼做推薦?
答:首先需要關注評價指標,其次如果某一個九宮格的付費轉化率顯著高於其他的格子,則將用戶往這個格子推。其他情況另議。(沒有準確答案)
(5) 以淘寶爲例,怎麼分析一個店鋪運營了2-3年,仍然沒有很多流量(瀏覽量,成交量等指標都不高),前提是你可以拿到淘寶的所有數據?
答:1. 是否用了淘寶的運營手段(買流量、參與淘寶活動)
2. 當前店鋪的曝光量是多少,處於淘寶整個板塊的哪一列
3. 同類型店鋪比較分析,包括款式,質量,店鋪評價,好評率,價格,上新頻率,客服響應速度等等
……
主要可以嘗試控制變量,應該先羅列出全部的主要影響因素,控制住其他變量差不多的情況下,比入看看相似店鋪的流量是否受價格影響比較大。
接下去延伸一下新的問題,剛剛提到了控制變量,假變量是 流量分發、價格、店鋪外觀、店鋪年齡、好評率、店鋪產品豐富程度 等。
在實際問題中控制變量會碰到以下問題——
1. 外觀、產品豐富程度 等主觀因素如何量化評價;
2. 這麼多因素,一旦控制變量進行篩選,很可能與你店鋪相似的一個也沒有或者只有少量幾個。這時候統計分析價值不大。
引申:
如何判斷是不是價格問題導致別人不買你的商品?
答:控制變量:在保持同樣品牌競爭力、功能、人工交流的情況下,觀察顧客買什麼。
面試官給的回答:同一個產品,如果一個用戶在高價鏈接的頁面看了又看,看了很久,結果去價格低的那個鏈接買了,基本說明是價格問題。
(6)數據組給定一批用戶供運營做活動,結果是 這批用戶的充值金額提升10%,請問如何判斷是運營的功勞還是數據分析的功勞,怎麼處理其他非特定用戶(是不是 其他非特定用戶 做相應活動,也能起到一定效果呢?是否需要一起做活動),(即在問需要控制哪些因素)
可以通過做A/Btest來判斷,一組是運營根據經驗獲取的名單,一組是根據模型跑出來的名單,然後分別做相同的營銷活動,分析活動結果。
(7)如何做A/Btest,需要注意哪些東西?
(8)增長黑客模型(AARRR)、AIPLA模型、RFM模型
(9)如果老闆需要你針對現在平臺(高鐵app)的數據區分 不同層級的用戶,做不同的營銷,你會怎麼做(其實可以轉換爲用戶畫像)?
第一種方法:結合RFM模型(最近一次購買的時間、購買頻率、金額)和聚類計算得出不同族羣的用戶特徵,然後根據不同客戶羣體做不同的營銷。
參考鏈接:https://blog.csdn.net/wanglingli95/article/details/79444432
第二種:根據用戶基礎信息、購票記錄、金額、頻次以及其他版塊的交易情況特徵製作用戶畫像
三、數據庫方面:
(1)有什麼sql調優的手段,瞭解多少
索引、條件先後等等,具體可自行百度sql調優方法
(2)sql,多個班級,取不同班級的每個班級的前3名(3次)
sql是rownumber:
select * from
(select row_number() over (partition by class order by score desc) 排名,* from sc) t
where 排名<=3 order by class asc,score desc
mysql用定義變量的方式:
SELECT * from (
SELECT @x:=if(b.cla=@y,@x+1,1) rn,@y:= b.cla , b.* from
(SELECT @x:=0,@y:='' )a
JOIN
(SELECT * from class order by cla,grade desc )b ) d where d.rn<4
(3)數據庫時間轉換函數
dataformat是時間轉字符串 unix_timestamp字符串時間轉時間戳 str_to_date字符串轉時間
(4)當出現數據重複時,用最簡單的方法查詢出哪些數據重複
數據量小時,group by count(1)大於1的
數據量大時,用rownumber(針對sql)
(5)什麼情況下索引會失效,假設字段A加了索引?或者 瞭解mysql的索引嗎?(2次)
只要索引的字段A不是 A >,<,=之類的,都會失效。比如兩個字段 A 和 B,A上有索引,查詢條件如果是 where A = < > XXX就不會失效,即失效的意思是不用索引,不是異常等問題。當然,還有別的,,,比如索引不能這麼寫 where B = xxx and A = 0,因爲索引字段要優先被查找。(只有 [><]?= 這種模式)
而且>和<也只能在樹索引等有序索引上起作用,如果索引是hash索引,就只能用=
參考鏈接:https://www.cnblogs.com/shynshyn/p/7887742.html
(6)三張表,查詢部門薪水最高的?
#方法一
SELECT dname,sum(salary) s from (
SELECT a.*,b.salary from (
SELECT n.id,n.name,d.dname from ntable n ,dtable d where n.dpid = d.did )a,stable b where a.id = b.id)c GROUP BY dname ORDER BY s desc
#方法二 left join
SELECT dname,sum(salary) s from (
SELECT n.id,n.name,d.dname,s.salary from ntable n LEFT JOIN dtable d on n.dpid = d.did LEFT JOIN stable s on n.id = s.id)
a GROUP BY dname ORDER BY s desc
或者
SELECT d.dname,sum(s.salary)s from ntable n LEFT JOIN dtable d on n.dpid = d.did LEFT JOIN stable s on n.id = s.id
GROUP BY d.dname ORDER BY s desc
#方法三 inner join
SELECT d.dname,sum(s.salary) s FROM (ntable n INNER JOIN dtable d ON n.dpid =d.did) INNER JOIN stable s ON n.id=s.id GROUP BY d.dname ORDER BY s desc
#方法四 join
SELECT d.dname,sum(s.salary) s FROM (ntable n JOIN dtable d ON n.dpid =d.did) JOIN stable s ON n.id=s.id GROUP BY d.dname ORDER BY s desc
(7)mysql 關於join的用法與區別(left join right join 等)
舉個例子說明區別就可以
(8)主鍵重複插入更新
replace into 或者on duplicate key update
https://www.cnblogs.com/chenmh/p/5392540.html
(9)數據庫的外建的作用是什麼?
聯表查詢
(10)什麼是左連接,右連接?
Left join right join,具體可自行百度
(11)hive數據傾斜有哪幾種原因造成,解決方法是什麼?
參考鏈接:https://blog.csdn.net/qq_36330643/article/details/82320194
數倉方面:
(11)數倉的過程,瞭解數倉嗎?數倉用什麼搭建的?(2次)
關於數倉的問題,之後還會有個專題詳解哦
(12)Etl的緩慢數據維
http://blog.csdn.net/ye1142262478/article/details/58589078
四、數據開發方面:
(1)有序數組查找用什麼方法?
二分查找,時間複雜度log2n,(是以2爲底,n的對數)
(2)list和tuple的區別
List是可變對象,tuple是不可變,tuple的性能好,效率高
(3)爲什麼要使用裝飾器
http://python.jobbole.com/85393/