当前位置: 首页 > >

抖音算法实*生面经(一面+二面)

发布时间:

第一面:上来三道题,然后问基础知识
算法题:
链表反转 简单题寻找字符串中最长的无重复的子串
Leetcode 3. Longest Substring Without Repeating Characters选择字符串中最长的所有字母出现次数>=k的子串
Leetcode 395. Longest Substring with At Least K Repeating Characters
基础知识:

对C++熟悉吗?用过boost库吗?hive呢? 指针和引用有啥区别

你对Linux熟悉什么?

数据库中 having与where的区别(对数据库的SQL语句的了解)


“where”是一个约束声明,在查询数据库结果返回之前对数据库的查询条件做一个约束,即返回结果之前起作用,“where”后面不能跟聚合函数;“having”是一个过滤声明,在查询数据库结果返回之后进行过滤,即返回结果之后起作用,“having”后面可以加聚合函数;

Xgboost对于lightgbm的改进? Gbdt or 随机森林呢?

LR的损失函数(极大似然估计+交叉熵损失函数)

LR为什么用极大似然估计,损失函数为什么是log损失函数(交叉熵)
https://www.cnblogs.com/stAr-1/p/9020537.html

交叉熵损失函数的公式,与极大似然损失的异同点呢?
https://blog.csdn.net/weixin_37567451/article/details/80895309
https://blog.csdn.net/b1055077005/article/details/100152102


第二面:上来先问项目,里面的实现的细节,最后做算法题
K-means算法的基本思想?项目中Kmeans中k是怎么确定的?什么时候迭代结束?tf-idf的含义爬虫模块有延迟怎么办?你熟悉哪些深度学*中的算法? (围绕着深度学*问的)Adam优化器的原理,深度学*中的其他优化器? (有哪些优化方法)
mini-batch梯度下降法,Momentum梯度下降法,RMSprop以及Adam优化算法深度学*中如何解决梯度爆炸和梯度消失?
batch normalazation,吴恩达上课说的初始化权重可以有效缓解这个问题如何防止过拟合呢?你用过哪些?Bert原理,解决什么问题?attention原理。为何你项目里不用maxpooling而是用attention(有什么好处),这里你是如何实现的?怎么设计的?Sigmoid的公式?用它有啥优点或好处?
算法:
二叉搜索树中查找比指定值小的最大值(考虑各种情况)
https://www.cnblogs.com/xiayy860612/archive/2012/10/16/2726861.html

写代码需要更快,而且是最优解。(也有需要和面试官稍微沟通,但是面试官希望的是直接做题,告诉他正确思路直接写代码,然后给代码给他看)


学*相关知识
一文搞懂极大似然估计 https://zhuanlan.zhihu.com/p/26614750
L2正则化为何能避免过拟合?
一:直觉上,正则化参数设置很大,让参数W很小,甚至很多为0,减少许多隐藏单元的影响,最终这个网络会变得更简单。二:如果正则化参数(W^2前的系数)变得很大,参数W很小,z也会相对变小,此时忽略b的影响,z会相对变小,实际上,z的取值范围很小,这个激活函数,也就是tanh曲线函数会相对呈线性,整个神经网络会计算离线性函数*的值,这个线性函数非常简单,并不是一个极复杂的高度非线性函数,不会发生过拟合。
dropout为何能避免过拟合?
直观上理解:不要依赖于任何一个特征,因为该单元的输入可能随时被清除,因此该单元通过这种方式传播下去,并为单元的四个输入增加一点权重,通过传播所有权重,dropout将产生收缩权重的*方范数的效果,和之前讲的L2正则化类似;实施dropout的结果实它会压缩权重,并完成一些预防过拟合的外层正则化;L2对不同权重的衰减是不同的,它取决于激活函数倍增的大小第二个直观认识是,我们从单个神经元入手
batch normalization

Z = WX + b
a = sigmoid(Z)

对每一层的Z值进行归一化,然后服从某种分布,比如均值为beta, 方差为gama的分布(两个参数),每一层的分布可以不同。



Batch Norm 为什么奏效?
原因一:原因二:



友情链接: