【实习生面试经验】孩子王

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 算法的特点:

  1. XGboost 将树模型的复杂度加入到正则化项中,从而避免过拟合,泛华性能好
  2. 损失函数是用泰勒展开式展开的,用到了一阶导和二阶导,可以加快优化速度
  3. 在寻找最佳分隔点时,采用近似贪心算法,用来加速计算
  4. 不仅支持CART作为基分类器,还支持线性分类器,在使用线性分类器的时候可以使用L1,L2正则化
  5. 支持并行计算,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)问面试官所带的团队做哪方面的工作,有多少人?

你可能感兴趣的:(面试经验)