©原创作者 | 三金
字条跳动人工智能实验室(AI-Lab)是公司内部的研究所和技术服务商,其包括8个领域方向:自然语言处理、数据挖掘、计算机视觉、机器学习、计算机图形&增强现实、系统&网络、安全&隐私以及语音与音频[1]。今天小编着重给大家介绍自然语言处理、语音与音频两个领域,带好笔记本让我们一起出发!
01 领域介绍
1.1 领域应用
1)自然语言处理领域:为字节跳动所有产品提供翻译服务以及为头条、抖音提供搜索服务等;
2)语音与音频领域:虚拟广播员和歌手、AI 辅助呼叫中心、具有语音功能的机器人和设备等。
1.2 相关岗位
3)自然语言处理领域:AI-Lab NLP算法工程师-教育方向、AI-Lab NLP自然语言处理算法工程师、AI-Lab后端开发工程师—NLP方向等;
4)语音与音频领域:语音/图像算法测试开发工程师-AI Lab/智能创作、AI-Lab 智能质检产品经理(智能客服方向)、AI-Lab 智能语音ToB方向产品专家等。
1.3 工作地点
北京、上海均有相关岗位
02 面经干货
1)面经来源牛客网(ID:牛客788302983号)
面试岗位:AI-Lab NLP自然语言处理实习生
A、一面45分钟(实际80分钟)
1. 首先自我介绍,然后介绍简历上的项目和论文。
AI面试指南参考答案:
简历上的项目、论文等必须熟悉,特别是技术细节方面。
2. 机器翻译中可能存在哪些问题?
AI面试指南参考答案:
1)机器无法理解上下文语境,导致翻译后语义出现问题;
2)词类出现问题,例如英语中没有意义的助动词会翻译成实义动词;
2)造成句子不通顺,例如在英翻中时,英语中部分冠词实则无需翻译出来,但机器翻译无法判断冠词是否该翻译,所以导致翻译出来的句子不通顺。
3. 对于类别非常多的序列标注任务,如何能让结果更准确?
AI面试指南参考答案:
1)使用模型融合的方法,即将多个分类器进行有效融合进行序列标注任务。
2)设置合适的损失函数,例如Focal loss损失函数(度量难分类和易分类样本对总损失的贡献)。
3)采用数据增强(即词汇替换、先翻译成其他语言再翻译回原来的语言、打断句子顺序、随机噪声注入等方法)、过(降)采样、修改类别权重值等方法。
4. 如何能够控制生成摘要的长度?
AI面试指南参考答案:
首先将文本拆分成句子,接着对句子进行预处理,例如删除停用词、替换空格等,然后检查文本中单词的频率,同时频率越高的单词给予越大的分数值,进一步计算每一个句子的分数,分数越大表示越重要,最后根据需求选择分数排名前n的句子作为摘要。
5. 题目描述:给你一个数组,以及一个常数k,你每次都可以从数组的第一个或者最后一个中选择一个,但是不放回,也就是选完就要把这个数扔掉,返回可能的k个数的和的最大值。
AI面试指南参考答案:
使用暴力破解方法
6. 用过哪些做摘要的模型?简单介绍一下。
AI面试指南参考答案:
1)Word2vec:得到更优的词向量,包括两种结构:CBOW模型根据周围词预测中心词(多对一)与Skip-gram模型根据中心词预测周围词(一对多)。
2)RNN:能够捕获之前已经计算过的信息用于当前计算。
3)LSTM:弥补了RNN缺陷,能够捕获无限长的上下文信息进行计算。
4)Transformer:由Encoder和Decoder组成,能够高效并行化。
5)BERT:基于深度双向Transformer的预训练模型,输入是一个线性序列,支持单句文本和句子文本。
7. BERT的三个输入embedding向量为什么可以相加
AI面试指南参考答案:
三个Embedding相加即特征融合。由于Embedding的数学本质是以独热编码为输入的单层全连接,所以可以理解为先将三个输入(token、position、segment)进行独热编码,然后再通过concate的方式融合成一个新的特征,这样可以使BERT能够学习到更多的信息。
8. BERT的输入为什么限制在512?
AI面试指南参考答案:
使计算效率与运行效率更高。
9. BERT的[MASK]token是和[CLS]一样,是一个有语义的向量吗?
AI面试指南参考答案:
是。在BERT中,受完型填空任务的启发,会选取语料中所有词的15%进行随机mask。在选取的词中,80%会被替换为[MASK] token,10%随机替换,10%保持不变,而[MASK] token可以在不泄露 label 的情况下融合真实的双向语义信息。
B. 二面:45分钟(实际55分钟)
1. 首先自我介绍,然后介绍简历中的论文
AI面试指南参考答案:
两次面试,面试官均详细提问了简历内容,故大家应该对自己的简历上的项目、论文等特别熟悉。
2. 把论文里使用的对比损失(InfoNCE loss)写一下
AI面试指南参考答案:
对比损失的核心思想是最大化相似性和最小化差异性。公式如下图所示,其中q表示待查询的样本,kr表示与查询样本相似的样本,ki表示负样本。
3. 中文分词的算法
AI面试指南参考答案:
有基于字符串匹配、n元语法、隐马尔可夫模型、条件随机场的分词算法。
2)面经来源牛客网ID:宵夜95
面试岗位:AI-Lab 智能语音团队
A、一面(50分钟)
1. 虚拟内存的概念和好处
AI面试指南参考答案:
1)概念:虚拟内存是计算机系统内存管理的一种技术,将物理地址空间定义为一个连续的虚拟内存地址,在实际中,虚拟内存通常被分隔成多个物理内存碎片,还有部分暂时存储在外部磁盘存储器上,在需要时进行数据交换。
2)好处:①可以将主存视为一个存储在磁盘上的地址空间的高速缓存,在主存中只保存活动区域,并根据需要在磁盘和主存之间来回传送数据;②为每个进程提供了一致的地址空间,简化了内存管理;③保护了每个进程的地址空间不被其他进程破坏。
2. 内存共享和保护怎么实现的
AI面试指南参考答案:
1)内存共享:把同一片内存映射到多个进程的虚拟地址空间,以便CPU可以在各个进程访问到这片内存。
2)内存保护:①CPU中设置上、下限寄存器,存放用户作业在主存中的下限和上限地址,每当CPU要访问一个地址时,分别和两个寄存器的数据比较,判断是否越界;②使用重定位寄存器(基址寄存器)和界地址寄存器(限长寄存器):重定位寄存器中包含最小物理地址值,界地址寄存器包含逻辑地址的最大值。
3. 分段和分页的区别,为什么要分段
AI面试指南参考答案:
1)分页:从计算机角度考度设计而成的,将主存空间划分为大小相等且固定的块,块相对较小,作为主存的基本单位,进程以块为单位进行空间申请。有利于提高内存利用率。
2)分段:从用户和程序员的角度提出,按照用户进程中的自然段划分逻辑空间。目的方便编程,信息保护和共享,动态增长和动态链接等多方面的需求。
4. 一个进程如何创建一个子进程
AI面试指南参考答案:
用fork()函数创建子进程。fork()函数有两个返回值,其中一个是给父进程返回子进程的PID,另外一个是给子进程返回0。
5. 说一说锁机制
AI面试指南参考答案:
1)在数据库中,锁是一种基于多用户访问的并发控制技术,一个事务在访问数据库中的数据时,获得锁,可以禁止这一段时间内的其他事务的访问,同时也规定了该事务能执行什么样的操作。锁的类型可以分为:排它锁(写锁),共享锁(读锁),注意不能同时写,不能边写边读,不能同时读。2PL 协议(两段锁),在事务提交或者回滚之前为加锁阶段,之后为解锁阶段。
2)在Java中,锁机制可以分为公平锁、非公平锁;独享锁、共享锁;互斥锁、读写锁;悲观锁、乐观锁;可重入锁等。
·公平锁:多个线程根据申请锁的顺序获得锁;
·非公平锁:不根据申请锁的顺序获得锁,后来的线程可能更优先获得锁。容易造成饥饿现象;
·独享锁:一个锁只能被一个线程拥有;
·共享锁:一个锁可以被多个线程拥有;
·互斥锁:独享锁的具体实现;
·读写锁:共享锁的具体实现;
·悲观锁:悲观锁认为同一个数据的并发操作,数据一定会发生改变,故进行加锁;
·乐观锁:乐观锁认为同一个数据的并发操作,数据不会发生改变,更新数据的时候采用不断更新的方式。
·可重入锁:即递归锁,指同一个线程在外层方法获取锁的同时,内层方法也会自动获得锁。
6. (算法题)无序数组找中位数
AI面试指南参考答案:
1)思路一:将无序数组进行排序,然后取出中间的元素;
2)思路二:使用分治法。
7. (算法题)二叉树的之字形的遍历
AI面试指南参考答案:
1)思路:层序遍历,递归查询。
B、二面(40min)
1. (算法题)给定一棵二叉树,返回二叉树宽度,保证结果不超过int
AI面试指南参考答案:
1)思路:二叉树的层序遍历,可以考虑使用队列存储元素。
2.一个程序写完之后要如何执行
AI面试指南参考答案:
需要经过以下4个阶段:
1)预处理:输入源程序,预处理器根据命令行修改源程序;
2)编译:将程序转为汇编语言程序;
3)汇编:将汇编程序转为机器语言指令;
4)链接:合并代码生成可执行文件,加载到内存中,系统执行程序。
3. 动态链接和静态链接的区别
AI面试指南参考答案:
1)静态链接比动态链接加载更快,因为动态库没有打包到程序中;
2)动态链接更节省磁盘空间和内存;
静态库如果更新了,需要重新编译,但是动态库更新,不需要重新编译。
4. 用过哪些编译命令,动态链接的命令是什么
AI面试指南参考答案:
1)“gcc -S”将文件编译成为汇编代码;“gcc -E”将文件重定向到一个输出文件里;“gcc -g”只是编译器,在编译的时候,产生调试信息......
2)-fPIC和-shared可以生成一个动态链接库,再链接到可执行程序就可以正常运行;readelf命令可以查看动态链接库的segment信息。
5. inline函数的作用、优缺点
AI面试指南参考答案:
1)作用:可以解决程序中函数调用的效率问题,通过增加空间开销而节省时间成本;
2)优点:inline定义的内联函数可以把函数代码放到符号表中,使用时效率更高;
3)缺点:内联函数通过复制函数代码,会增加空间开销,此外,如果函数体内有循环,则时间开销也较大。
6. 编译器一定会对inline函数进行处理吗(不会,内联函数只是对编译器的建议,是否对函数内联,决定权在于编译器,对于较为复杂的代码(比如递归层数太多,循环过多等等)编译器不会选择内联)
AI面试指南参考答案:
不会。编译器具有决定权,可以决定是否对内联函数进行处理,如果面对多层循环等复杂代码,使用内联函数会产生较大的时间开销,故编译器此时不会选择对内联函数进行处理。
7.觉得自己有什么优势
AI面试指南参考答案:
列出三个关键词,并举例论证。
8. 其他面试题:
·可以实习的时间,什么时候可以来实习
·现在大三是吧,接下来有什么打算
·平时怎么学习的,有没有学习过机器学习相关内容
总体来看,字节AI-Lab的自然语言处理、语音与音频两个领域的面试流程均为两轮面试,且两轮面试中都会考察面试者的编程能力。令人感到惊奇的是,在语音与与音频领域的面试中,这位同学并没有问到AI相关的理论知识,而是着重被问了408。由此可见,大家在准备面试的时候,一方面要准备AI基础知识,另一方面,408也务必充分准备。最后小编希望大家都能获得心仪岗位的offer~
引用来源
[1] AI-Lab官网
https://ailab.bytedance.com