如何斩获字节跳动AI LAB offer

2020 年 4 月 22 日 AINLP

原文连接:
https://www.nowcoder.com/discuss/408301
已获得作者destiny1996授权

    背景:字节跳动暑期实习,AI lab算法岗,base深圳,已offer 本科双非,长沙某985硕士。
    本科参加了数学竞赛和数学建模竞赛,获省奖以上奖项14次。研究生阶段拿了一个大数据竞赛一等奖。
    和一般的算法岗面试不一样,问的基本都是数学,没有深度学习那些。
    事实证明,我是一个运气选手,如果问深度学习我是过不了的。
    当然我面试这些题目也是很基础,随便一个非数学专业的大二学生都可以答的比我好,而且我调和级数那里还没证明出来。

一面


一面的时候,三个题只写出了两个水题,以为挂了,结果上岸了。


题目1:10个小球,随机分到12个盒子里,求恰好10个盒子都为空的概率。要求用Python程序模拟十万次,暴力求出该概率。

    看到这题我懵了,让我蒙特卡洛模拟?伪随机数也不好近似出概率啊,误差大的一批。头一次见不要手推数学公式,特意要求你暴力的数学题。话不多说,动手开始写,balabala,模拟完了,在牛客网一运行,我懵了,输出在十万分之一到十万分之3之间波动(十万次只有两三次恰好10个盒子为空),题目要求一共只能模拟十万次,我开始怀疑人生,检查代码,并且重新设置了随机种子,结果还是很小的概率。

    一下急了,情急之下打印出来前几次模拟的结果,确实很难出现恰好10个盒子同时为空。然后就跟面试官说,这个概率太低了,同时模拟十万次又太少,所以模拟出来的结果很小。

    然后面试官没说啥了,直接下一题。好像他也是随便选的题目,自己没做过,只是看到这个题目在题库里分类是数学,就选了这个。我也不知道这个题目的用意是啥,也不知道自己是不是想错了。


(PS: 面试之后我直接算概率,C(12,2)*(2^10-2)/(12^10)=1.091e-06,如果我算错了,欢迎各位指出。)


import random
random.seed(4)
n=100000
cnt=0
for i inrange(n):
    arr
=[0]*12
    for j inrange(10):
        rnd
=random.randint(0,11)
        arr[rnd]+=1
    cnt0=0 
    for j inrange(12):
        if arr[j]
==0:
            cnt0+=1
    if cnt0==10:
        cnt+=1
print(cnt/n)



题目2: 二分查找元素在有序数组中的位置,如果不存在,输出-1,如果存在,输出下标(存在多个,输出下标最小的)。
面试手撕代码系列:二分法
    水的不能再水的题,但是一开始没处理好有重复数字的情况,只过了30%用例(面试过程你可以自己提交代码,并且可以看到一个错误用例,跟牛客网练习模式一样),比如4,4,5,6,7里面找4,我的代码返回了1,本该返回0。后面处理了一下,AC了,二分都不能一次通过,差点急出一把汗。

def getPos(arr,val):
    n=len(arr)
    l=0
    r=n-1
    while l<r:
        mid=(l+r)//2
        if arr[mid]>=val:
            r=mid
        else:
            l=mid+1
    if arr[l]!=val:
        return -1
    return l


题目3:

    给定一个数组,找出数组的最长连续子序列。例:3,3,4,7,5,6,8,最长的连续子序列(这里的连续是说连续整数,整个子序列是连续整数,我一开始题都没看明白)应该是(3,4,5,6),需要返回它们的下标(1,2,4,5)。如果存在多种答案,只需给出任意一组下标。

    面试官看我不会,让我先写一个暴力的方法,我还是不会啊,然后一个小时过完了,凉凉。

    第三题暴力其实很简单,事后再写,五分钟写完了O(n^2)的。

O(n^2)的:

import sys
line=sys.stdin.readline().strip()
n=int(line)
line=sys.stdin.readline().strip().split(" ")
arr=[]
for x in line:
    arr.append(int(x))
MAX=0
rtn=[]
for i in range(n):
    val=arr[i]
    ans=[]
    for j in range(i,-1,-1):
        if val==arr[j]:
            val-=1
            ans.append(j)
    if MAX<len(ans):
        MAX=len(ans)
        rtn=ans[::-1]
print(MAX,rtn)


O(n)复杂度的(Python的字典查询是O(1)):

a=[3,3,4,7,5,6,8]
n=len(a)
pre=[0]*n
dic={}
idx={}

MAX_len=0
dic[a[0]] = 1
pre[0] = -1
last = 0
idx[a[0]] = 0

for i in range(1,n):
    if a[i] not in dic:
        if a[i]-1 not in dic:
            dic[a[i]]=1
            pre[i]=-1
        else:
            dic[a[i]]=dic[a[i]-1]+1
            pre[i]=idx[a[i]-1]
        idx[a[i]]=i
    else:
        if a[i]-1 not in dic:
            pass
        elif dic[a[i]]<dic[a[i]-1]+1:
            dic[a[i]]=dic[a[i]-1]+1
            pre[i]=idx[a[i]-1]
            idx[a[i]]=i
    if dic[a[i]]>MAX_len:
        MAX_len=dic[a[i]]
        last=i
rtn=[]
res=[]
while last!=-1:
    rtn.append(last)
    res.append(a[last])
    last=pre[last]
print("val:",res[::-1])
print("index:",rtn[::-1])



二面

    4月7日 二面,牛客网视频面,30分钟 

    跟一面的时候一样,只问数学题目,不问机器学习相关基础(这个算法岗位是做强化学习的,但是也没问强化学习的基础知识)。这次面试没有自我介绍过程,直接问我题。

(1)y=sqrt(x^2) 的可导性。先化简为绝对值函数。定义域为R。可导要求左导数、右导数存在且相等,所以函数在x等于0处不可导,其余处可导。

(2)介绍方向导数和梯度,方向导数和梯度的关系?为什么梯度在机器学习中的优化方法中有效?梯度是向量,方向导数是数量。梯度是各个偏导数组成的一个向量,方向导数是各个偏导数与方向余弦相乘再求和。梯度这个方向的方向导数是最大的。

(3)调和级数的敛散性。我这里比较尴尬,一个方法都没说出来。我只说了证明级数发散,只需要证明级数的余项的极限不为0。然后我提了一下欧拉常数,但是我不记得欧拉常数与调和级数的关系了。面试官后来还很nice的跟我简单说了两个证明调和级数发散的方法。

(4)人群中男人色盲的概率为5%,女人为0.25%。从男女人数相等的人群中随机选一人,恰好是色盲。求此人是男人的概率。全概率公式一般不会考。面试或者笔试这种一定是考贝叶斯公式。这种题把事件用变量定义好就简单了,分清哪个是条件概率。设“一个人是男人”是事件A,事件A非为“一个人是女人”。“一个人患色盲”为事件B。需要求的是逆概率P(A|B)。面试官后面问我贝叶斯公式在机器学习里有哪些应用,我只说出了垃圾邮件识别。

(5)在网游中,野怪被杀死时,有p=0.2的概率掉落一把宝剑。野怪的死亡是独立事件。玩家持续杀死了10个野怪,求掉落4把宝剑的概率。独立重复试验,二项分布。C(10,4)(p^4)((1-p)^6)。

(6)一辆巴士载了25人,路经10个车站。每个乘客以相同的概率在各个车站下车。如果某个车站有乘客要下车,则大巴在该站停车。每个乘客下车的行为是独立的。记大巴停车次数为X,求X的数学期望(要求通过编程求数学期望)。

    根据数学期望的定义进行计算,跟一面一样,继续蒙特卡洛模拟。面试官问我,如果乘客变为50人,估计一下数学期望会变为多少,应该是接近10。

import random
n=10000
cnt=[0]*11
for i inrange(n):
    arr
=[0]*10
    for j inrange(25):
        rnd
=random.randint(0,9)
        arr[rnd]+=1
    SUM=0
    for j inrange(10):
        if arr[j]>0:
            SUM+
=1
    cnt[SUM]+=1
ans=0.0
for i inrange(11):
    ans+
=i*cnt[i]/n
print(ans)


HR面

4月10日 HR面,zoom视频面,20分钟

    HR面之前,我搜了很多关于字节跳动的东西,准备了一页纸,比如看别人分享的字节跳动实习感受,了解字节跳动的企业文化,把字节跳动的字节范的内涵背了又背,追求极致,务实敢为,开放谦逊,坦诚清晰,始终创业,多元兼容。然而这些并没有用上。

1.自我介绍?介绍项目,说一下项目的分工?

2.对前两轮自己面试表现的评价?我说了一下,感觉这个部门很重视数学基础,同时也看重编程能力(我看面经,别人的HR面基本都是HR开头告知应聘者前面的面试评价。只是让我自己评价自己,HR后面也没说我前面的面试评价)

3.为什么要选择实习?我不读博,肯定实习呀。简单说了下自己的职业规划,想搞技术,同时字节跳动的技术氛围好,字节跳动不讲title。(说到这里,HR有点意外,问我我怎么知道不讲title的)

4.还面了哪些公司?

5.介绍一下你看过的电影?

6.实习时间?

7.你有什么要问我的?

4月13日接到offer call,已发正式邮件。



推荐阅读

AINLP年度阅读收藏清单

世界读书日,我来凑个单,推荐几本NLP/推荐算法/广告系统/其他相关的新书

百度PaddleHub&nbsp;NLP模型全面升级,推理性能提升50%以上

斯坦福大学NLP组Python深度学习自然语言处理工具Stanza试用

当当的羊毛,快薅,这一次要拼手速!

数学之美中盛赞的 Michael Collins 教授,他的NLP课程要不要收藏?

自动作诗机&藏头诗生成器:五言、七言、绝句、律诗全了

From Word Embeddings To Document Distances 阅读笔记

模型压缩实践系列之——bert-of-theseus,一个非常亲民的bert压缩方法

这门斯坦福大学自然语言处理经典入门课,我放到B站了

可解释性论文阅读笔记1-Tree Regularization

征稿启示 | 稿费+GPU算力+星球嘉宾一个都不少

关于AINLP

AINLP 是一个有趣有AI的自然语言处理社区,专注于 AI、NLP、机器学习、深度学习、推荐算法等相关技术的分享,主题包括文本摘要、智能问答、聊天机器人、机器翻译、自动生成、知识图谱、预训练模型、推荐系统、计算广告、招聘信息、求职经验分享等,欢迎关注!加技术交流群请添加AINLPer(id:ainlper),备注工作/研究方向+加群目的。



登录查看更多
0

相关内容

日常维护 star 数 1.8k 的开源项目 https://github.com/bytedance/lightseq,发表一篇 NACCL,公司内外皆有一定影响力。算法落地 team,负责机器翻译、文本生成,内容理解等业务模型的优化以及落地工作,算法工程双修。前沿技术持续探索,落地真正实用有效的技术。
【实用书】学习用Python编写代码进行数据分析,103页pdf
专知会员服务
194+阅读 · 2020年6月29日
【CVPR2020-Facebook AI】前置不变表示的自监督学习
专知会员服务
46+阅读 · 2020年4月19日
专知会员服务
109+阅读 · 2020年3月12日
抢鲜看!13篇CVPR2020论文链接/开源代码/解读
专知会员服务
49+阅读 · 2020年2月26日
周志华教授:如何做研究与写论文?
专知会员服务
154+阅读 · 2019年10月9日
7轮面试,入职阿里,他做对了什么?
码农翻身
7+阅读 · 2019年9月5日
爱奇艺深度学习算法实习生面经
算法与数据结构
9+阅读 · 2019年5月28日
最难求职季如何斩获算法岗
AINLP
3+阅读 · 2019年4月25日
作为字节跳动的研发面试官,有些话我不得不说!
互联网架构师
12+阅读 · 2019年4月22日
备战AI求职季 | 100道机器学习面试题(下)
七月在线实验室
9+阅读 · 2019年3月22日
备战AI求职季 | 100道机器学习面试题(上)
七月在线实验室
9+阅读 · 2019年3月16日
深度学习面试100题(第71-75题)
七月在线实验室
5+阅读 · 2018年8月2日
百度魅族深度学习大赛初赛冠军作品(图像识别.源码)
数据挖掘入门与实战
5+阅读 · 2018年3月9日
BAT机器学习面试题1000题(316~320题)
七月在线实验室
14+阅读 · 2018年1月18日
干货:10 种机器学习算法的要点(附 Python代码)
全球人工智能
4+阅读 · 2018年1月5日
Arxiv
4+阅读 · 2018年4月17日
Arxiv
3+阅读 · 2018年3月22日
Arxiv
6+阅读 · 2018年2月28日
VIP会员
相关资讯
7轮面试,入职阿里,他做对了什么?
码农翻身
7+阅读 · 2019年9月5日
爱奇艺深度学习算法实习生面经
算法与数据结构
9+阅读 · 2019年5月28日
最难求职季如何斩获算法岗
AINLP
3+阅读 · 2019年4月25日
作为字节跳动的研发面试官,有些话我不得不说!
互联网架构师
12+阅读 · 2019年4月22日
备战AI求职季 | 100道机器学习面试题(下)
七月在线实验室
9+阅读 · 2019年3月22日
备战AI求职季 | 100道机器学习面试题(上)
七月在线实验室
9+阅读 · 2019年3月16日
深度学习面试100题(第71-75题)
七月在线实验室
5+阅读 · 2018年8月2日
百度魅族深度学习大赛初赛冠军作品(图像识别.源码)
数据挖掘入门与实战
5+阅读 · 2018年3月9日
BAT机器学习面试题1000题(316~320题)
七月在线实验室
14+阅读 · 2018年1月18日
干货:10 种机器学习算法的要点(附 Python代码)
全球人工智能
4+阅读 · 2018年1月5日
Top
微信扫码咨询专知VIP会员