ITPub博客

首页 > 数据库 > 数据库开发技术 > wwwHe同学面试经验分享(上)

wwwHe同学面试经验分享(上)

原创 数据库开发技术 作者:quincyqiang 时间:2021-04-01 08:11:54 0 删除 编辑

感谢wwwHe同学的面经分享(已oc),这里给出面试会问到的问题以及部分问题的答案解析,希望能帮助现在还在找工作找实习的朋友们顺利拿下大厂offer。

腾讯一面

1.项目三连:背景、方法、结果;

2.LGBM原理,LGBM做出的改进和优势; 

答:就是串联的决策树,只不过为了提速加了互斥捆绑算法、单边梯度采样以及leaf-wise


3.常用有哪些归一化方法;

答:常用的有最大最小归一化、0均值归一化、softmax等,当然还有一些利用数学公式进行特殊变换的例如arctan归一化等等就需要具体问题具体分析。


4.判别模型精度、召回率、ROC、AUC的含义和作用;

答:精度表示分类正确的样本数占总样本数的比例,错误率表示分类错误的样本数占总样本数的比例。而召回指真实为真中预测为真的占比,准确率则指预测为真中真实为真的占比。区别在于精读和错误率不适用于类别不平衡的数据,而准确率和召回率则可以。准确率和召回率又属于鱼和熊掌不可得兼的状态,而ROC曲线则为召回率对假真率的曲线,AUC则是ROC下的面积。


5.开放性问题,由于是腾讯游戏,问了我平时玩不玩游戏?玩LOL最讨厌什么行为?为什么讨厌脚本?重头戏:“如果给你全部玩家的后台数据,你期望选用那些指标然后是用什么方法去检测脚本行为?”;

6.挂电话前一问:有没有女朋友?

7.电话面试,故没有算法题。

总结:第一次面试,面试官还是小姐姐内心无比惶恐。整个人都很凌乱,知道的也答得乱七八糟语无伦次,捐了。

美团一面(身体被掏空)

1.项目三连:背景、方法、结果;

2.LGBM深挖,一路挖到 leaf-wise 和 level-wise;

答:level-wise 策略生长树,记一次分裂同一层的叶子,不加区分的对待同一层的叶子,而实际上很多叶子的分裂增益较低没必要进行分裂,带来了没必要的开销,而leaf-wise每次从当前所有叶子中,找到分裂增益最大的一个叶子,然后分裂,如此循环。因此同Level-wise相比,在分裂次数相同的情况下,Leaf-wise可以降低更多的误差,得到更好的精度。但是,当样本量较小的时候,leaf-wise 可能会造成过拟合。


3.随机森林随机在哪里?答出来以后又问,极端随机森林又随机在哪里?

答:随机森林主要是样本随机性+特征随机,而极端随机森林主要是特征随机+分裂随机


4.Q: CV和NLP你喜欢那个多点?A: NLP吧。Q: BERT最大长度512是为啥?

答:计算与运行效率综合做出的限制;self attention处理太长的句子是效果不会太好


5.Transformer那些并行了?那些串行?

答:encoder 之间是串行,每个 encoder 中的两个子模块之间是串行,子模块自身是可以并行的,decoder无并行


6.wor2vec相关,Mikolov 那篇论文里Hierarchical softmax和negative sampling能解释一下吗?

答:无论是Hierarchical softmax还是negative sampling都是加快模型训练速度的算法,不同的是negative sampling是对负样本进行采样,即如果不进行采样长度为1000的词表,需要拟合1个正样本和999个负样本,而采样后只需要拟合1个正样本和10-20个负样本就行,而Hierarchical softmax则是通过构建huffman树将多分类问题转化为多个二分类问题来降低计算量


7.笔试自我评价以及思路;

8.算法:最短编辑距离(动态规划)。Leetcode.72编辑距离。

class Solution:
    def minDistance(self, word1: str, word2: str) -> int:
        n1 = len(word1)
        n2 = len(word2)
        dp = [[0] * (n2 + 1) for _ in range(n1 + 1)]
        # 第一行
        for j in range(1, n2 + 1):
            dp[0][j] = dp[0][j-1] + 1
        # 第一列
        for i in range(1, n1 + 1):
            dp[i][0] = dp[i-1][0] + 1
        for i in range(1, n1 + 1):
            for j in range(1, n2 + 1):
                if word1[i-1] == word2[j-1]:
                    dp[i][j] = dp[i-1][j-1]
                else:
                    dp[i][j] = min(dp[i][j-1], dp[i-1][j], dp[i-1][j-1] ) + 1
        #print(dp)      
        return dp[-1][-1]

总结,感觉身体被掏空,内心的空虚久久无法平复,算法没有问清楚问题,捐了。

墨墨面试(轻松愉快)

1.项目三连;
2.数据库数据仓的区别;
3.概率论:中心极限、大数定律、假设检验;

4.SQL操作优先级:FROM, ON, WITH, HAVING 的优先级是什么?

答:FROM, ON, WITH, HAVING的顺序


5.SQL的各种连接方式,pandas的join、merge、concat;

1. 内连接:查询操作列出与连接条件匹配的数据行,它使用比较运算符比较被连接列的列值

2. 左连接:全称为左外连接,是外连接的一种结果会将左表所有的查询信息列出,而右表只列出左表中有的条目;

3. 右连接:全称为右外连接,是外连接的一种结果会将右表所有的查询信息列出,而左表只列出右表中有的条目;

4. 全连接:完整外部联接返回左表和右表中的所有行。当某行在另一个表中没有匹配行时,则另一个表的选择列表列包含空值。

5. 交叉连接:交叉联接返回左表中的所有行,左表中的每一行与右表中的所有行组合。



6.numpy的存储和运算效率比list高的原因;

答:numpy的存储和运算效率比list高的原因:我记得是因为numpy是基于C语言引擎的。另外numpy的一个单元只能存储一个结构,而list可以存储人以结构。


7.pandas 的 bool 索引;
8.ROC、AUC的含义和关系;
9.混淆矩阵在贷款判别中的实际意义;
10.价值观:怎么看待996?
11.聊天,墨墨的两位老师一位温文尔雅一位翩翩君子,真的很好聊;

总结,较为轻松的一次面试,更偏向数据分析岗的内容。

END

添加助手微信回复研究方向或专业即可加入我们的微信交流群或QQ交流群





扫码关注我们

携手2021年,为梦想启程!


原文作者:ChallengeHub;如有侵权,请联系管理员删除。

请登录后发表评论 登录
全部评论

注册时间:2019-01-07

  • 博文量
    350
  • 访问量
    160978