2020.8.20日
耗时 1小时36分
通过这次面试找到自己的不足
- 机器学习理论不扎实,需要看
- leetcode不要停
面试官很专业,公司地方大,楼多,环境好,有妹纸
笔试
题目类型:选择题+简答题+编程题+逻辑题
现在回忆起来的如下:
选择题:
1.过拟合
2.留一法交叉验证
3.LR
额,其他想不起来了
简答题
1.GBDT和XGboost的区别
2.SVM和LR的区别
3.如何构建一个问答系统
编程题
求k的阶乘右数第二位非零的数
逻辑题
题干:从一个水量无穷大的池子里面取水,如果你只有一个5升水桶和一个6升水桶这两个容器,均无刻度,如何准确各量出3升水?
面试
1、首先自我介绍
2、为什么转行,追问为什么考研的时候不换
3、之后的职业方向?
4、可以实习多长时间,一周可以过来几天
6、详细问了LR
7、问了学过数据结构和算法,之后追问如何识别链表是否有环,然后现场手撕
8、八个球如何用最少的次数找到最大的那个球?
9、问你还有什么想要了解的?
下面是我对面试题目的一个理解,欢迎大家一起讨论和批评指正
笔试
留一法交叉验证的计算( leave-one-out cross validation)
:更多交叉验证方法
留一法就是每次只留下一个样本做测试集,其它样本做训练集,如果有k个样本,则需要训练k次,测试k次。留一法计算最繁琐,但样本利用率最高。适合于小样本的情况。
GBDT和XGboost的区别?
XGboost 算法的特点:
- XGboost 将树模型的复杂度加入到正则化项中,从而避免过拟合,泛华性能好
- 损失函数是用泰勒展开式展开的,用到了一阶导和二阶导,可以加快优化速度
- 在寻找最佳分隔点时,采用近似贪心算法,用来加速计算
- 不仅支持CART作为基分类器,还支持线性分类器,在使用线性分类器的时候可以使用L1,L2正则化
- 支持并行计算,XGBoost的并行是基于特征计算的并行,将特征列排序后 block 的形式存储在内存中,在后面的迭代过程中反复使用这个结构。在进行节点分裂时,计算每个特征的增益,选择增益最大的特征最为分隔节点,各个特征的增益计算可以使用多线程并行
优点:速度快、效果好、能处理大规模数据、支持自定义损失函数
缺点:算法参数过多,调参复杂,不适合处理高维特征数据
SVM和LR的区别?
如何构建一个问答系统?
基于搜索的问答系统
简单来说,问答系统就是人来问,计算机来答。一个基于搜索的问答系统主要可以是由两个步骤完成的,一是人类提出问题,二是计算机经过知识库返回答案
大致的流程是:首先用户给出一个问题,然后我们对问题进行分词,其次进行预处理,量化,接着和语料库(存在大量的问题和答案的信息)中的问题进行相似度计算,最后对相似度进行排序,返回相似度最高的问题对应的答案。
- 分词
- 预处理
1)拼写检查
2)处理一词的多种表达式
3)停用词过滤
4)无用词过滤
5)使用同义词或者反义词更好的理解单词的含义 - 单词转化成向量
1)Bodean Vector:根据单词出现与否,把单词转化成(0.1.01,……)布尔型的向量
2)Count Vector:根据单词出现的次数以及位置表示成量的方式
3)IF-IDF:既考虑单词出现的频率,也考虑单词的重要性的权重
4)Word2Vec:采用分布式的方法考虑一个单词或者句子 - 相似度的计算
对于相似度的计算,我们可以采用余弦相似度,欧式距离等等 - 返回答案
- 总结
从一个水量无穷大的池子里面取水,如果你只有一个5升水桶和一个6升水桶这两个容器,均无刻度,如何准确各量出3升水?
1)6L水桶装满,倒入5L水桶将其装满,6L水桶中剩余1L水
2)倒空5L水桶,将1L水转移到5L水桶中
3)6L水桶装满,倒入5L水桶将其装满,这时6L水桶中剩2L水
4)倒空5L水桶,将2L水转移到5L水桶中
5)6L水桶装满,倒入5L水桶将其装满,这时6L水桶中剩3L水
面试
详细问了LR
环形链表如何判断有环
class Solution:
def hascycle(self,head:ListNode)->bool:
try:
slow, fast = head, head.next
while slow is not fast:
slow, fast = slow.next, fast.next.next
return True
except:
return False
八个球如何用最少的次数找到质量最小的那个球?
和面试官没有沟通好,他事后非得说是已经说了七个质量一样,一个较轻,但是我听得是从八个里面找最轻的一个,我自己想到了二分法,他问可不可以两次就算出来
题干:
有一个天平,8个外观相同的小球,其中7个质量相同,1个较轻,最少需要多少次找到最轻的那个?
第一次称的时候,天平两边各放三个球,剩余2个球
- 如果天平平衡,说明较轻的球在剩余的两个球中,第二次称的时候只需要称剩余的这2个球即可。
- 如果天平不平衡,从第一次称时相对较轻的那3个球中选2个做第二次称重。第二次称重时,如果天平平衡,则剩余的那个球就是较轻的;如果天平不平衡,较轻的球也就找到了。
问你还有什么想要了解的?
这里自己当时是一再地争取机会,后来回来复盘和我一个大哥讨论,最后觉得这块以后这么回答比较好,如下:
1)目前算法部门对公司产生了那些效益,算法落地都遇到那些困难,如何解决?
2)问面试官所带的团队做哪方面的工作,有多少人?