ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

2021年4月下旬,百度机器学习/数据挖掘/NLP算法工程师面试8道题

2021-06-11 17:00:29  阅读:220  来源: 互联网

标签:NLP 道题 链表 randomInt num 数组 数据挖掘 root 节点


七月在线注册6周年➕618双重暴击!
七月在线现推出众多大促活动!
VIP会员周卡1分购,畅学百门AI好课!
附活动地址!–》https://www.julyedu.com/course/getDetail/222

问题1:编程题旋转有序数组,查找元素是否存在

思路:

1、暴力破解:遍历整个数组,查找元素是否存在;

2、二分查找:旋转后局部数组依然是有序的,所以此时依然可以使用二分查找算法;

参考代码:
在这里插入图片描述

问题2:实现余弦相似度计算

余弦相似度:用两个向量夹角判断其相似程度;

向量夹角越大,距离越远,最大距离就是两个向量夹角180°;

向量夹角越小,距离越近,最小距离就是两个向量夹角0°,完全重合。

所以余弦相似度越大,向量越相似;

计算公式:
在这里插入图片描述

求余弦相似度方法:
Numpy:

在这里插入图片描述
Pytorch:
在这里插入图片描述
Sklearn:
在这里插入图片描述

问题3:验证二叉搜索树(BST)

二叉搜索树具有如下特征:

节点的左子树只包含小于当前节点的数。节点的右子树只包含大于当前节点的数。

所有左子树和右子树自身必须也是二叉搜索树。

思路:

根据二叉搜索树的特征可知︰如果二叉树的左子树不为空,则左子树上所有节点的值均小于它根节点的值;若它的右子树不空,则右子树上所有节点的值均大于它根节点的值;并且它的左右子树也为二叉搜索树。

可以设计一个递归函数check(root, max_num, min_num),函数表示考虑以root为根的子树,判断子树中所有节点的值是否都在(max_num, min_num)的范围内。如果root节点的值val不在(max_num, min_num)的范围内说明不满足条件直接返回False,否则继续递归,检查它的左右子树是否满足,都满足则说明这是一棵二叉搜索树。

注意∶

在递归调用左子树时,需要把上界max_num改为root.val;递归调用右子树时,需要把下界min_num改为root.val.

函数递归调用的入口为check(root, float(“inf”), -float(“inf”)), float(“inf”)表示一个无穷大的值。

参考代码︰
在这里插入图片描述

问题4:用randomInt(5)实现randomInt(7),只用讲思路

randomInt(5):等概率生成整数[1,2,3,4,5]

randomInt(7):等概率生成整数[1,2,3,4,5,6,7]

思路:

1、用(randomInt(5)- 1)构造等概率整数数组:[o,1,2 ,3,4]

2、用(randomInt(5) - 1)*5构造整数数组︰[0,5,10,15,20]

3、上面的两个整数组可以构造等概率的新数组:[0,1,2,3,4,5,6,7,… , 24];(如果第2个数组选择2倍或者3倍,4倍则无法构造新的等概率数组)

4、选择新数组[o,1,2,3…,20]21个元组即可构造等概率的数组[1,2,3,4,5,6,7]

参考代码:
在这里插入图片描述

问题5:编程题:分割链表问题

分割链表︰

给定一个链表的头节点head和一个特定值×,然后对链表进行分隔,使得所有小于x的节点都出现在大于或等于x的节点之前。同时保留两个分区中每个节点的初始相对位置。

如下图所示:
在这里插入图片描述

思路:

需维护两个链表small和large,small链表按顺序存储所有小于x的节点,large链表按顺序存储所有大于等于x的节点。遍历完原链表后,我们只要将small链表尾节点指向large链表的头节点即能完成对链表的分隔。

参考代码:
在这里插入图片描述

问题6:怎么解决过拟合?怎么做图像增广?

常见缓解过拟合的方法:

1、降低模型复杂度

2、增加更多的训练数据:使用更大的数据集训练模型

3、数据增强

4、正则化:L1、L2、添加BN层

5、添加Dropout策略

6、Early Stopping

7、重新清洗数据︰把明显异常的数据剔除

8、使用集成学习方法︰把多个模型集成在一起,降低单个模型的过拟合风险

常见的数据增广方法:

1、水平/垂直翻转

2、随机旋转

3、随机缩放

4、随机剪切

5、颜色、对比度增强

6、cutOut

7、CutMix

8、Mixup

9、Mosaic

10、Random Erasing

问题7:梯度下降方法有哪些?

梯度下降算法有如下3种:

1、随机梯度下降法:SGD

2、批量梯度下降法:BGD

3、min-batch小批量梯度下降法:MBGD

问题8:sigmoid有哪些特性?激活函数了解多少?

在这里插入图片描述

Sigmod函数性质:

1、定义域:( -oo , +oo );

2、值域:(-1 ,1);

3、函数在定义域内为连续光滑函数;

4、处处可导,导数为:
在这里插入图片描述
5、函数的取值在О到1之间,在0.5处呈中心对称,且越靠近x=0的取值斜率越大。

常见激活函数:

1、Sigmoid

2、Tanh

3、Relu . Leaky Relu、P-Relu (Parametric ReLU)

4、Elu、Gelu

5、Swich

6、Selu

评论有奖:评论区回复“100题”,免费领取最新升级版《名企AI面试100题》电子书!

标签:NLP,道题,链表,randomInt,num,数组,数据挖掘,root,节点
来源: https://blog.csdn.net/niuyunpang/article/details/117821351

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有