2021 年 4 月份 ,美团 NLP 算法岗面试题总结

本贴最后更新于 1298 天前,其中的信息可能已经天翻地覆

添加微信:julyedufu77,回复 “ 11 ”,领取最新升级版《名企 AI 面试 100 题》电子书!!

面试题

问题 1: 怎么处理数据不平衡

问题 2: 给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。

问题 3: 连续子数组的最大乘积

问题 4: 最大子数组

问题 5: 一个硬币正面概率 p 那么抛到第几次抛正面期望

题目解析

问题 1:怎么处理数据不平衡

常用于解决数据不平衡的方法:

欠采样: 从样本较多的类中再抽取,仅保留这些样本点的一部分;

过采样: 复制少数类中的一些点,以增加其基数;

生成合成数据: 从少数类创建新的合成点,以增加其基数。

添加额外特征: 除了重采样外,我们还可以在数据集中添加一个或多个其他特征,使数据集更加丰富,这样我们可能获得更好的准确率结果。

问题 2:给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。

力扣

定义两个节点 cur=None 和 pre=head

2021 年 4 月份,NLP 算法岗面试题总结

改变节点方向让 pre 的 next 指向 cur,实现一次局部反转

2021 年 4 月份,NLP 算法岗面试题总结

cur 和 pre 向前移动一个位置

2021 年 4 月份,NLP 算法岗面试题总结

循环交换前进,直至 pre 为空,遍历结束,完成反转,此时 cur 节点为开始节 head;

参考代码:

2021 年 4 月份,NLP 算法岗面试题总结

问题 3:连续子数组的最大乘积

力扣

思路:

遍历数组时计算当前最大值、最小值,不断更新

当前最大值为 ans_max = max(ans_max * nums[i], nums[i])

当前最小值为 ans_min = min(ans_min * nums[i], nums[i])

由于存在负数,那么会导致最大的变最小的,最小的变最大的。

当前最大值为 ans_max = max(ans_min * nums[i], nums[i])

当前最小值为 ans_min = min(ans_max * nums[i], nums[i])

参考代码:

2021 年 4 月份,NLP 算法岗面试题总结

问题 4:最大子数组

力扣

解题思路:

遍历数组,遍历的时候记录两个值:当前子数组的和 tmpSum,最大值 res

2021 年 4 月份,NLP 算法岗面试题总结

问题 5:一个硬币正面概率 p 那么抛到第几次抛正面期望

硬币游戏,如果在连续抛出三次正面之前不要停下来,那么我们总计抛硬币的期望次数是多少

假设期望是 x

假设第一抛是反面,那么就浪费了一步,平均一共需要 x+1 步(概率是 1/2)

假设第一抛是正面,在此基础上如果第二抛是反面,又浪费了,平均一共需要 x+2 步 (概率是 1/4)

在此基础上如果第二抛是正面

假设第三抛反面,浪费,平均一共 x+3 步(概率是 1/8)

假设第三抛正面,完成,只用了 3 步(概率是 1/8)

所以 x 的期望即 x=(1/2)(x+1)+(1/4)(x+2)+(1/8)(x+3)+(1/8)*3

解得 x=14

添加微信:julyedufu77,回复 “ 11 ”,领取最新升级版《名企 AI 面试 100 题》电子书!!

  • 面试

    面试造航母,上班拧螺丝。多面试,少加班。

    325 引用 • 1395 回帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...