24年1月找实习面经
在写论文的过程中投了近一个月的实习,终于拿到了满意的offer。之前由于对自己的实力没自信不敢投实习,但在逐步获取正反馈后,我发现招实习并没有那么难,你只需要达到六七十分就够了,不用苛求拿一百分。正如电棍的一句话:只要勇敢起来就行了。拿到offer之后,我准备写一篇面经,并分享找实习的感想。(虽然过了八个月才发出来)。
我总计投了十多个厂,岗位主要投的是AI算法和信息安全,各种小厂大厂和外企都有,最后拿了字节风控和一个小厂的offer。
字节跳动(安全)
比较搞的是,因为字节很看面评,我实习都没投字节避免给自己留面评。但我在第三方软件一键海投的时候,这b软件给我投了字节的数分岗。字节HR给我打电话时,我一直说对不起对不起,我投错了,我不想投数分岗的。结果HR说是我数分简历挂了,他把我的简历捞到安全部门,初筛过了(我投的简历不是安全的简历而是AI的简历,结果安全岗初筛过了,真离谱)。面试前,我以为会考很多算法,就跑去刷力扣。面试时发现安全部门部门算法都不咋问的全在问业务。由于我读了零信任的白皮书,他问的业务我都能很好的答出来,简直在我舒适区蹦迪,比较顺利的拿到了offer。
一面
让我开始介绍ABE和AI版权保护的项目,中途问了我有些功能具体是怎么实现的。
就照本宣科的介绍嘛
对现在同态加密的发展怎么看?
因为我本来就不是搞同态加密的,我就介绍了一下原理,说了下Paillier算法和Gentry构造了第一个全同态加密,但是现在同态加密效率依然较低,目前有用GPU来加速运算的相关研究
除了保护AI模型本身的安全,有没有保护AI训练数据安全的经验,以及AI生成内容合规性的经验
对训练数据安全,我先介绍了联邦学习,然后介绍了隐私计算里面的同态加密和安全多方计算。对内容合规性的安全我没答出来,只是介绍了攻击层面可以替换提示词之类的绕过安全检测。后面复盘下来,可以用类似大模型在预训练后,用强化学习模型给大模型的输出打分的思路,用一个模型给大模型输出的合规性打分,高于一定阈值才算合规的。或者用这个模型来打出的分值来训练大模型,让它输出更合规的内容。
一个API在实现的时候有问题,攻击者可以利用API的漏洞非法访问别的用户的数据,怎么用密码学的方法来解决。
我说用密码学的算法来做强制的访问控制,比如说用ABE或者IBE实现认证的功能。
然后又给个场景,他们调用阿里云的服务怎么在这个服务器分类分级细粒度分发权限
其实还是ABE那套,我重新给他在这个场景下解释了怎么用的
还有个场景,一些攻击者可能会恶意操作,从系统的漏洞中窃取数据,这个怎么根据访问流量来分析数据?AI和密码都可以。
因为恶意请求的特征和正常的请求有差距,有三个识别恶意请求的办法。第一个是从正常用户的请求中提取出访问特征,对正常用户的建模用户画像,根据访问请求和用户画像的差异自动识别恶意请求。第二个是从攻击者的角度来建模,但会有只能识别已知攻击,繁华性不足的问题。第三个是用ai模型自己对访问请求做二分类,或者给个评分。
一面时长一小时,问的内容比较出乎意料,我全去准备AI和算法题了,但面试的时候全问我业务。但因为安全本就是我老本行,我也读过几次零信任的白皮书,问这些业务这些属实在我舒适区蹦迪了,一面过的很顺利,面评也很好。第二天HR就打电话和我约二面时间。
二面
还是公式的自我介绍。面试官说我一面项目和业务的评价很好,于是想考察我基础。问我最熟练的语言是哪个,我说JAVA。接着就开始了他的拷打环节
简单介绍一下HashMap,并实现一个简单的HashMap
我一开始Array的长度定的64,但想到应该不要我搓扩容就改成了一个素数来降低冲突的概率。我觉得实现一个简单的哈希表,应该可以直接用链表处理冲突,写的差不多的时候,面试官说我这不是O(1)的,让我改。我说我用idx++处理冲突,他说冲突过多就没法存了。后面我才知道他要我手搓扩容,搓到一半,面试官看我时间花的有点多就让我停下来了。
你觉得你的这个HashMap线程安全吗?
不安全,可以加锁来解决,我说出了哪些位置会有线程安全问题,需要加锁。我当时根本没复习这个,纯粹照着感觉说,但看面试官表情没有皱眉和大力王,我应该是都说出来了。
来道排序吧,写个单链表的排序
我当时听到排序,以为是数组排序,想着终于不压力我了。由于没准备链表的快排、归并排序。我就用最直观的选择排序来做,但我忘了链表交换节点的时候指针也要交换,导致我指针到处乱飞,运行超时。面试官看时间不早了,就让我把思路说出来。真是拉大胯。
链表排序还可以用什么算法?
我说应该冒泡和归并可以,快排和堆排不清楚,然后面试就结束了,反问环节都没有。
二面时长也是一小时,因为表现的不是很好,我以为我寄了,结果第二天下午HR打电话约三面时间,有点意料之外。或许是一面表现太好了在上压力面(但扩容应该是个相对简单的操作),也可能是我二面表现不好但是被我一面的面评捞起来了,运气有点好吧。
三面(交叉面)
三面和一面问的东西差不多,我的回答基本也是我一面的回答加上一面面试官给我的补充
介绍一下https
我说我主要在搞密码算法的研究,对https不熟悉,但我可以介绍tls,他就让我介绍TLS也行。我就分别介绍了TLS每个协议是干啥的,怎么握手的,数据的认证和加密是怎么做的。
介绍ABE和模型版权的项目
介绍中间人攻击,如何防止中间人攻击
我用DH密钥交换为例,介绍了中间人攻击,并说用PKI可以解决中间人攻击的威胁。
有没有漏洞挖掘的经验
没有
介绍了一下零信任
接下来就是又问那几个业务问题
三面时长四十分钟,有三个面试官,是交叉面。我以为是主管面,还准备了智力题,结果又全在问业务,我把我一面的回答加上一面面试官补充的内容答上去了,看面试官应该比较满意,运气真好。
四面(主管面)
四面也主要在问业务,然后加了道算法题
介绍项目,问了下项目效率的极限
简单介绍公钥加密
公钥加密和数字签名的区别
RSA2048bit的安全性的复杂度是多少
我当时确实不知道复杂度是多少,我说要看最新对大整数分解问题的破解算法是多少。之后复盘下来发现,可以说是指数级的,复杂度是2^{a*2048},这个a由最新的大整数分解算法决定。
把我的ABE项目套到抖音中需要对好友执行访问控制的一个场景,问我可不可行
我说可以加个TTL,或者请求数据的时候调用一下CA(开销更小的方法其实就是CA再加一重签名,但当时没想到)。因为我设计的ABE算法没有密钥更新的功能,我就说可以用可撤销的ABE来实现这个场景的鉴权和访问控制。
问我了不了解AI安全?
我说AI安全分为两个大类,AI本身的安全和用AI来做安全。AI本身的安全有AI版权安全、AI训练数据安全、AI生成内容安全。AI做安全是用AI甚至是大模型来识别异常流量,给出可信值,实现风险控制和漏洞分析。
如何保护AI训练数据,如何保障大模型生成内容的合规性。
用联邦学习、MPC、同态加密保护AI训练数据。问我了不了解Prompt镜像。训练一个给大模型生成内容的合规性打分的模型,如果生成内容不合规就让大模型重新生成,或者用这个模型输出的合规分值来训练大模型。
算法题:给定一个只由a和b组成的字符串,寻找a和b数量相等的最长子串
我一开始想用滑动窗口做,但找不到左指针前移的条件,在给面试官说了暴力二重循环、二维DP的思路后,面试官给我说把a看成1,b看成-1试试。我灵机一动,前缀和+hashMap+贪心秒了。
持续时间大概有40分钟,四面结束当晚HR就找我来确定HR面的时间。四面面试官真的很会面试,一开始他还先做自我介绍,然后给我说明面试流程,面试过程中逐步引导,最后还说感谢我的时间。我本来因为最后一次技术面很紧张,但面试官太随和,我开始面试两分钟后就进入状态了,神中神的面试官,我哭死。😭
小米(音频算法)
一面
9分钟最速通过一面传说
让我介绍项目,介绍完了项目说我和他们的业务很match,之后会约我二面,但因为主管一直在开会没有合适的时间就一直在拖着。字节都给我发offer了都还没进二面流程。(年后过了一周约了二面,但那时候已经在字节了,最近发现这个岗位其实在搞audio编码,是我之后会研究的方向,比byte的风控香多了,可惜了哎)
易来科得(NLP算法)
易来科得真的很好,给的很多,能接触核心技术,还955,我的梦中情司。但因为实习还是得刷履历,最后还是选了字节。
笔试
当时联系我说做点算法题,我以为是力扣上的那种算法题。但现场却叫我嗯造numpy,但我不会,就给他现场手搓矩阵乘,哈密顿内积,距离计算。面试官看着我肯定觉得我太幽默了,我以为了我寄了,但在一周后收到了面试邀请,真是太神奇了。
面试
介绍项目,然后问了下水印怎么嵌入到模型里的,方案的评估指标是什么
了解哪些优化算法?
面试官应该想让我介绍退火算法和贝叶斯优化那些,但我不会,我说我只会SGD。
介绍Adam
我说我只记得SGD和Momentum了
简单介绍SVM
我把优化目标,支持向量,核函数介绍了就过了
有没有NLP相关经历
没有,但是我接着介绍了RNN,LSTM和Transformer
有没有了解过大模型Prompt
我说没有,但还是把GPT3的思路给他说了,结果还真给我撞对了
简单介绍动态规划
就把定义子问题、初始状态、状态转移方程啥的说了出来
了不了解回溯?回溯有哪些通用的剪枝操作?
介绍完回溯后,我说我对回溯题的剪枝都是具体问题具体分析,没有了解具体有哪些通用的剪枝方法。
面试完成后第二天发了offer,扁平化管理效率真的高,但由于我还有方向更match,title更好的字节和小米在流程,就给面试官说过几天给答复。
总结
找实习还是比较简单的事,不用害怕失败,这种事情只要成功一次就可以了。找实习过程中,我最容易被卡的还是简历初筛。包装简历很重要,在简历里很直观的表现为什么自己适合这个岗位,适度润色,把自己的技术栈怼到最前面,每个相关的项目写详细点,负责工作写出来,这样比较好过初筛。进了面试后如果没有神仙和你抢同一个hc并且表现达到六七十分,拿offer没什么问题。