2019春招安全实习工程师面试经历

抽空梳理总结一下面试经历,面了头条、腾讯、蚂蚁金服、360、默安、科大讯飞等多家公司。面试环节或是面试官抛出一个场景,我给出解决思路,或是问项目,或是聊一些前沿技术,并没有问多少条条框框偏概念性的问题,所以本文偏记叙文,技术含量不高。

0x01 头条(offer)

头条一面

和hr约的是下午两点半,结果我听成两点了,然后到了两点钟面试官还没上线可把我急坏了,联系了hr发现是自己蠢了(尴尬) 。还好面试官人很随和,我原本紧张的心淡定下来了。首先开始自我介绍,blabla,然后面试官说看我简历上有多个项目,就让我自己来介绍一下项目,我先大致介绍了一下第一个实验室的项目,描述了项目的出发点和着眼点blabla,着重讲了一下我承担的task,然后面试官开始追问,我分别从场景、数据、特征工程、算法、评估分析反馈等角度说了一通,在xx场景下,选了xx数据,我为什么选这些数据?怎么获取这些数据?blabla先声夺人。数据部分是最重要的,需要多说一点,然后到了特征工程部分,我讲了一些常用的技术,手工提取啊,NLP啊,深度学习啊之类的,然后在此场景下我选了哪种,为什么选出了这种(当然是比较了已有技术手段),算法部分我主要说了树类型的算法,为什么我喜欢树类型算法,可能是因为安全领域本来就小众,其下的安全算法、安全数据分析更小众了,而面试官都是安全出身,对算法细节并不care,一些面机器学习岗必问的算法知识都没有问,都是根据安全业务来问。最后的评估分析反馈性能优化方面,我说了一些常见的技术,和传统waf对比啊,无痕人工审核啊,数据再分析,再做特征工程不断迭代,重训练之类的方法。基本上所有安全数据分析的项目都可以按这套流程来解释。穿插着问了我接触安全多久啦,啥时候开始学习智能安全,我说我最早是做web安全的,读研以后走了安全数据分析的路子,没有继续往安全研究上发展,主动认怂说我web安全方面有点生疏了,但是基础安全技术还是掌握的,能跟上师傅们的节奏(没想到给二面挖了坑)。之后问了第二个项目,第二个是我个人github关于智能安全的项目,我从头条的人工智能用于内容分发出发,从四个方面说了我对智能安全的理解,着重讲了人工智能用于解决安全问题部分。面试官拓展问了四部分之一的AI用于攻击的部分,我说了深度强化学习和msf结合进行自动化渗透测试的例子,面试官追问了深度强化学习,我解释了一通貌似没有讲清楚。我觉得之前给面试官留下的印象是我web安全技术生疏了,所以当面试官问我有什么要问他的时候,我抛出了我的问题:如何权衡传统安全技术深度研究和智能安全(安全数据分析)?您觉得智能安全未来会怎样?然后面试官说了很多话,让我茅塞顿开,在智能安全这方面我和面试官的看法很相似,聊到了一起。

头条二面

二面的面试官好像是做安全技术的,首先介绍项目blabla,介绍完了......然后说一面面试官的评价说你web安全技术有点生疏了,那我们来问问web安全技术吧,乌云/src上提交过的都是啥类型的漏洞?PHP审计你都咋审计的?有没有自己总结的一些经验?变量覆盖产生原因有哪些?最近有没有跟过漏洞?SQL注入咋产生的?如何绕过过滤了空格的注入?如果过滤了逗号怎么绕过?宽字节注入咋产生的?MySQL中如何设置字符集编码?XSS怎么防护?讲讲你挖过的0day。大部分都答了上来,小部分记忆模糊了,就根据记忆尽量答了。然后聊智能安全,讲讲SVM,二面面试官说他也做机器学习几年了,但不太看好利用机器学习等技术来解决安全问题。面试官觉得应用场景很有限,无非做做waf,性能也有限,不适用于生产环境。我承认了这些问题是目前遇到比较棘手的问题,也给出了一些缓解的措施,比如针对尚未用机器学习解决过的场景,要勇于解决问题,不能怕,不能觉得没人解决过就是解决不了的,举了业务安全中的设备识别的例子,再抽象安全场景,定制化用机器学习解决安全问题。最后说了我还是相信智能安全未来会占有一席之地,如果现在我们不提前占坑,那么以后就被甩在后面了。

头条三面

三面面试官人很nice,一直笑嘻嘻让我没一点压力,按照套路自我介绍,然后问项目问项目,基本上都是我一个人在blabla,面试官偶尔会根据我的回答打断一下追问问题,卧槽我咋想不起来面试官问了哪些问题了,好像面试官并没有问具体的问题,大多都是我们在讨论,印象深刻的问题是面试官抛出了一个具体的业务场景让我给解决方案,我借鉴了一些以往的经验然后分析抽象了问题,然后blabla,先做个baseline,再不断优化等等。然后开始聊弱智能安全,三面的面试官和一面面试官一样都看好智能安全,对一些新颖的技术比较感兴趣,比如前面提到过得智能攻击技术。还问了有没有了解过其他公司的智能安全研究现状和技术,我举了百度和阿里的例子,讲了下他们的产品和技术,对标了一下,重点讲了我做的和他们类似的demo,说我个人做的还比较菜,和企业级比不了。再然后面试官说来写个代码吧,问我熟悉啥语言,C++?Java?我说都不怎么会,我写python多一些,面试官说没关系写伪代码也行,然后出了个编程题reverse,说在聊天框写代码就行。我想了一下写了代码,面试官评价了一下,然后问我咋测试你写的代码健壮性,我说测试样例要多样化极端化blabla。最后问面试官问题的时候我问了如果入职所在部门的工作内容以及我的一些职业发展规划和他的看法。

头条hr面

和hr约了晚上七点的电面,六点半到了操场等hr的电话,有点小紧张。起手自我介绍(紧张,不知道是操场冷还是真紧张),hr问为啥考研?考研成绩?家在哪儿对工作地点有没有要求?导师让不让实习?实习时间?职业规划怎么打算的?每个实习生都有mentor,你希望从你的mentor学到哪些东西?怎么评价之前面你的三个面试官?有没有投其他公司?考虑了哪几家公司?为什么考虑这几家公司?拿到了哪些offer?我blabla举例子,对标说了阿里,然后hr问我我给我的面试打多少分?我说85+吧,然后说了为啥85,哪些地方不足还可以改进。全程语速比较快略显紧张,最后问hr问题的时候,我问了您觉得我今天表现的怎么样?以及我有哪些可以改进的地方?hr说觉得我今天有点紧张,我说是的,第一次网申面试,以后会好很多的。hr问我电话号码是不是微信,我说是,然后加了我的微信,说2-3个工作日有消息会通知我。第三个工作日后,收到了hr小姐姐的口头offer,谈了一下入职时间,之后收到了邮件offer。

0x02 云鼎实验室

云鼎一面

哇啊啊一面面试官是rr,一面主要考察安全技术,乌云的洞都是啥?有没有跟过最近的洞?ThinkPHP的最近的RCE跟过吗?审计做的都是啥?基本的漏洞类型?常用的语言?SSRF漏洞中绕过IP限制的方法(需要补习)?主机入侵检测中怎么用机器学习解决问题?python web开发?django的secret key的洞跟过吗?了解二进制安全吗?总的来说,rr的安全研究深度很深(rrtql)。

云鼎二面

二面面试官主要是做数据分析的吧。自我介绍,然后开始问大数据框架,ELK都是啥?Spark?你是咋做DGA域名检测的?特征咋提取的?GBDT和XGBoost的区别?Kaggle上你的恶意软件那个项目?阿里云恶意软件多分类项目?Java会吗?R语言懂吗?python web开发咋样?kafka知道吗?怎么实现关联进程和网络传输(这个没回答上来,得好好捋一捋,wget http://www.xxx.com?这种吗?是不是主机入侵检测混合网络入侵检测)?多个数据源怎么关联?如果给你文件信息、进程信息、端口信息等等你能用机器学习解决哪些安全问题?介绍下你简历中的项目一。最后我问面试官所在部门的主要工作内容以及如果我入职的话我的主要工作内容。云鼎实验室的工作内容之一是用机器学习技术和大数据技术做安全监控,比较符合我的预期。最后问了面试官接下来的流程,面试官说和同事商量一下可能还有1-2轮面试。

云鼎三面

就在刚刚又面完了,感觉面试官是个中年和蔼大叔(上来先介绍了面试官自己,按照套路不是应该我做自我介绍嘛)。总的来说面试官都是根据我简历来问,问了前乌云的漏洞是什么情况?通用型漏洞是什么情况?项目一的情况?我blabla介绍,从问题的着眼点、数据、特征、结果解释了一通,面试官追问了两个问题。然后问了阿里云恶意软件算法挑战赛和Kaggle上的恶意软件预测相关的一系列问题,主要关注点在:数据、特征、算法。又问了SVM和线性回归的区别,讨论了一波SVM的线性不可分情况,核啊,升维啊这些。问的都是做过的项目,感觉回答的还可以。后续:系统里面凉了之后问了rr,说是这次招人目标比较明确就是看代码选手,只有一个hc给了代码审计选手。。。哭。。。

体验

我在想一个问题,如果你看好的团队有比较明确的招聘需求,比如招安全开发开发扫描器,而招聘需求和你目前的研究和规划有出入咋办?是花时间转方向填坑呢还是继续做自己擅长的事?以后工作中也可能出现这样的问题,如果领导让你去填坑,是去做呢还是拒绝呢

0x03 腾讯云安全(实习已录用)

数据分析一面

  1. spark等大数据框架的熟悉程度

  2. spark和storm的区别,以及什么场景选用spark

  3. 常用的语言,java会吗

  4. GBDT和XGBoost的区别

  5. 无监督学习算法,Kmeans的原理

  6. 单分类下HMM和One class SVM效果比较

  7. 深度学习和机器学习的区别

  8. 如何区分机器流量和正常用户流量,给出解决方案(重头戏)

我当时想了两种方案,有些细节没表达清楚,可能面试官误解了我的意思,后来我查资料发现我说的还是有那么点道理的。给出的第一种解决方案是传统安全手段/无监督学习+有监督学习,针对数据未打标问题,采用传统安全手段比如威胁情报,或是通过恶意机器流量的分析发现有些恶意机器流量来源于一些云服务商来对数据进行一些打标;也可以通过聚类来打标得到标记数据,之后再有监督学习。另一种方案是规避未打标数据的问题,直接无监督学习,使用Kmeans或是HMM等算法区分流量,从问题本身的角度来理解正常用户流量和机器流量的区别在于人的操作是有主观意识、有序的,而机器的操作是无主观意识、无序的,所以暂时倾向于使用HMM算法。两种初步的解决方案的后续都依赖特征工程,这就要分析观察机器流量和正常流量的异同。简单的机器流量可能是从脚本直接产生的,所以直接观察browser可能就可以区分,高级点的机器流量可以伪装成正常的浏览器,这就需要从是否模仿人类交互功能的角度来观察区分了,比如鼠标点击的(网页的)有序性和无序性,鼠标的轨迹等。

数据分析二面

  1. 自我介绍

  2. 做过渗透测试漏洞挖掘吗

  3. 提交漏洞的平台、类型和危险程度

  4. 打过CTF吗

  5. 会Java吗(看来java不学不行了啊)

  6. 机器学习做waf的方法

  7. 追问了模型预测阶段如何处理使模型能够自动学习,比如如何达成预测阶段的误报和漏报,然后数据回流再训练模型(开始我以为是训练阶段的漏报和误报,直接说了混淆矩阵,然后花了几分钟才get到面试官意思是预测阶段的误报和漏报,也就是模型自适应性)

  8. 如何选择模型,如何调参,有没有什么方法

hr面

吐槽一下腾讯座机,声音超小,hr又用自己手机打给我才继续面下去。

  1. 评价一下腾讯安全

  2. 用两个词概括你的性格特点

  3. 从本科到现在你遇到的最困难的事情

  4. 家是哪的

  5. 是不是独生子女

  6. 对工作地点有没有什么要求

  7. 介绍简历上个人维护的项目

  8. 有没有和同学发生过矛盾

  9. 有没有拿到其他公司的offer,以及包括腾讯在内这些公司在你心目中的排名

  10. 相对于其他安全人员,你的核心优势是什么

  11. 你打算怎么融入团队

  12. 如果实习的话,你有什么担忧

  13. 实习时间大概什么时间

0x04 蚂蚁金服

网商银行一面(3月17日,通话时长49分钟)

  1. 介绍一下你最成功的一个项目(面试官开始以一个项目为切入点从深度和广度综合考察知识工具逻辑业务体系)

  2. 追问数据的构成以及预分析,特征工程如何做,特征编码的比较,算法的对比和选择,效果怎么样(考察深度)

  3. 你的核心优势是什么(面试官之后给了一个中肯的建议,非常受用)

  4. web安全中你实践过哪些漏洞类型(考察广度)

  5. 记不清了...

  6. 请面试官就我今天的面试表现给我一些建议

感觉一面是个质量面,从深度和广度不断试探深挖。

网商银行二面(4月1号,通话时长一小时)

二面等了比较长的时间,腾讯hr面都面完了二面还没来,可能网商银行安全团队刚组建师傅们都很忙(哭),无奈催了一下,然后二面终于来啦哈哈哈。晚上七点半左右电话来了,我正好出差到广州还在吃晚饭,手机也没多少电,然后和面试官师傅约了十五分钟后再面,赶紧回酒店充电准备面试。

  1. 你刚说在广州出差,具体是做啥的

  2. 问了本科的学院和专业,研究生的学院和专业,面试官在疑惑我为啥是网络与信息安全学院计算机技术专业

  3. 你用机器学习解决过哪些安全问题(我举了url异常检测的入门例子)

  4. 面试官开始追问咋做的,具体问了数据和特征这块,算法稍微提了一下

  5. 你是怎么选择模型和算法的

  6. 除了url异常检测这个例子还做过哪些(说了DGA检测、DNS隧道检测、主机和网络入侵检测等)

  7. 常用的语言和工具熟练度怎么样

  8. 了解数据安全吗(靠平时这块比较少的积累和面试官讨论了一下)

  9. 了解加密算法吗(不了解)

  10. 面试官说为啥面了几个同学,对加密算法都不了解,我尝试从学硕和专硕的角度分析了一下

  11. 在学校你最喜欢的课程

  12. 能不能给我推荐一项技术或是一个领域以及一些学习资料(推荐了智能安全技术,很不要脸的给面试官推荐了我的github项目,介绍了项目的大致情况,会不会多个star,哈哈哈哈)

  13. 你对web安全的理解(感觉面试官问的有点大,稍微确认了一下问题,一是基本的漏洞理解,二是我之前做过的一些工作)

  14. 问了面试官主要的工作内容以及如果我入职我的主要工作内容

  15. 问了面试官多久能给答复

  16. 请面试官就我今天的表现给我一些建议(面试官非常nice,提了两点建议,都是我目前的缺点。一是我的回答表述有点啰嗦容易陷入一些技术细节,应该先从整体脉络讲清楚,二是工程能力需要加强,以及不能仅局限于自己的研究方向和擅长方向(感觉是针对数据安全和加密算法问题,知识和技术是通用的))

交叉面(4月9号,通话时长28分钟)

内推人说有交叉面说明前面表现不错(至少是A?)。约的昨天交叉面,结果因为赶飞机正巧没接到电话,然后今天晚上七点半电话过来了,面到八点感觉面试官还有很多事要去处理。

  1. 自我介绍

  2. 机器学习技术解决安全问题对比与传统安全手段有什么优势

  3. 问机器学习做DGA检测的例子,追问检出率和召回率多少,海量数据如何处理,传统的DGA都是随机性生成的,如果是单词字典组合的DGA该怎么判别,我回继续人工提取特征,然后面试官提示我,能不能从其他维度数据考虑DGA,然后我想到了时间序列、HTTP层数据。

  4. 问机器学习做URL检测的例子,如果是扫描器扫描触发的大量异常该怎么处理,我说用聚类手段聚类忽略,继续追问,如果有攻击成功的异常,不能忽略的话,怎么判别是不是成功的攻击,我回通过响应内容来判断,这就涉及到用机器学习来做页面相似度检测了

  5. 问机器学习做XSS检测的例子

  6. 请面试官评价一下我的面试表现给我一些建议,面试官给了两个建议。1)在实际场景中不能为了机器智能而机器智能,得综合各种技术解决问题。2)我的表述技术细节说的多了。和二面面试官给的建议一样,我解释了一下,不说细节感觉空落落的。

交叉面的作用感觉是保级的,如果交叉面表现不错大概率还是A,表现不好的话就是B+成替补了,交叉面面下来感觉表现还行,估计技术评级还是A?

hr面(4月12号,通话时长29分钟)

hr就问了三个问题,感觉自己的数学思维需要强化,半只脚都迈进蚂蚁了,太惨了,hr面表现不好,感觉要凉。

  1. 介绍下让你收获最多的一个项目

  2. 说说你的优缺点

  3. 数学题1:100层楼两颗玻璃珠的题;数学题2:100颗白豆100颗黑豆的概率题