机器学习算法工程师 知能科技 笔试面经

首先是笔试,通过后才能面试。

笔试题目需要在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的门槛居然这么高?这都不给面试机会?

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