2019年3月

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

抽空梳理总结一下面试经历。面试环节或是面试官抛出一个场景,我给出解决思路,或是问项目,或是聊一些前沿技术,并没有问多少条条框框偏概念性的问题,所以本文偏记叙文,技术含量不高。

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给了代码审计选手。。。哭。。。

体验

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