首先是筆試,通過後才能面試。
筆試題目需要在1.5小時內做完,一共6道題目。兩道簡答題,一道計算題(機器學習的),一道numpy編程題,一道機器學習調參題,最後一道算法leetcode hard題,只需要寫出思路,不需要code。
題目如下:
1.(簡答題):防止overfit的方法,說三個,用英語
dropout
data augmentation(for images data(such as rotating,cut the images))
L1/L2 regularization
2.(簡答題):relu的作用
步驟:relu可以防止過擬合,讓一些神經元的輸出爲0,同時增加了神經網絡的非線性關係
3. (計算題:二選一):
我選的第一個題目做
題目一:樸素貝葉斯分類器,給出了條件概率,求分類的結果(分類的結果就是求出y等於多少)
解題步驟:直接寫出貝葉斯公式,帶入概率值,最後發現帶入的概率值是一個關於y的多項式方程,對其求導=0,得到最大似然估計的概率最大值時y的取值
本題得解
題目二:手算反向傳播
4. numpy還原矩陣
將原始m*n的矩陣交換行的順序,爲matrix1,然後交換原始矩陣的列的順序,爲matrix2.
通過matrix1和matrix2得到原始矩陣。拿到的是numpy數組,也需要返回numpy數組
這題我numpy當時忘記了,只寫了一半
5.機器學習調參題:
給了train data set,train lebel,和test data set,讓分類器的模型使得test data set的prediction acc達到90%以上。一共有5個數據集的prediction acc達到90%,就可以拿到滿分。
題目要求只能使用tensorflow,pytorch和sklearn。我尋思這個給的是結構化數據,深度神經網絡不太適合處理這樣的數據,因此肯定選GBDT,GBDT在sklearn當中也是最強的算法之一了,而且也不能用xgboost,catboost,gbdt或者svm就成了最優的選擇。
我首先用knn試了試grid search,但是考試平臺不能用grid search這個包,因爲看不到grid search輸出的結果。於是我就改用我用的sklearn當中GBDT手動調試的參數。只能手動調參,
最後我的最高acc爲92%,4個上了90,有一個test case沒上90% acc,爲89%。
6.算法題:
至少爲k的連續子序列,leetcode hard難度,類似於
leetcode 862. 和至少爲 K 的最短子數組
但是稍有改動,我稍微想了下就想出來了,用快排和哈希表輕鬆得解。
總結:最後沒有通過筆試,沒有拿到面試的資格,6個題目,我自認爲還做得不錯,除了第四題都做出來了,依然沒有通過筆試,挺奇怪的,一個小start up的門檻居然這麼高?這都不給面試機會?