腾讯2016春季校园实习招聘技术岗复试(二面)问题汇总(CC++后台)

时间:2021-06-23 18:52:33

Preface:感谢您对博文的关注!2017年秋季校招已经开始,有需要内推腾讯的可以QQ(1589276509)联系我哈,期待你的加入。

1.前言

2016.4.12日下午在广州东圃参加了腾讯安全技术面的二面。一面是两天前下午4点多结束,晚上大概十点多接到复试(二面技术面)的通知。晚上回来就开始整体一面的问题,花了一天多的时间。详见2016腾讯校招实习一面

技术二面的面试官应该是部门总监,开始寒暄了几句,问了我到这里远不远,为了缓和气氛吧。

面试的总体内容基本上是个人项目,安全防护和网络异常行为识别,都是比较开发的问题,没有绝对的对错。

最后也问了一下大学经历,社会活动还有数学的排列组合问题。并没有我担心的手写代码。总体来说运气没那么背。二面时间不长,大概35分钟。

下面将简略的记录二面的内容,供网友参考,亦备复习。明天HR面,希望不要出什么意外。

2.问题汇总

问题一:
你参与的“多功能口令破解平台”这个项目,其功能是什么?
答:
项目简介:基于DCR并行编程框架,构造Linux下基于MIC异构的集群多功能口令破解平台,支持暴力、字典和明文库破解,支持常见加密算法的植入,并在天河二号近200节点稳定运行。

问题二:
相对同类的产品,其优势是什么?
答:
目前世界公认最快的口令破解的工具就是Hashcat,但是其是基于GPGPU(General Purpose GPU,NVIDIA的通用计算图形处理器),虽然单机性能很高,但是目前很少有基于GPGPU协处理器的大规模集群计算系统。所以我们的项目优势就是利用MIC协处理加速单节点计算性能,利用大规模集群提高整体计算性能。

问题三:
QQ用户群庞大,我们现在面临着QQ号经常被盗的风险,如果你是安全工程师,你改如何降低QQ号被盗的风险。

答:
(1)用户明文口令是加密后存储在数据库中,一般都是采用散列算法加密后存储。因散列算法的不可逆性,如果不法分子想通过口令碰撞的方式获得口令明文,那么必须先拿到QQ用户的口令密文。因口令密文是存储在服务器的数据库之中,我们要做的就是加强服务器的安全保障,防止不法分子盗取数据库中的数据。

(2)如果不法分子获取获取用户口令密文之后,其要做的是对每一个口能的口令明文进行相同加密过程处理,得到一个猜测的明文对应的密文,如果猜测密文与用户真实的口令密文匹配,那么其猜测的明文就是正确的口令明文。

面试不法分子的破解方法,我们要做的就是:一保护QQ用户口令加密过程的实现不要泄露,二就是加强QQ用户口令加密过程复杂度,给不法分子采用口令碰撞的方式带来压力。比如,假如QQ用户口令的加密过程是是pwd=SHA1(plaintext.qqNumber)。那么我们可以采用千次或万次SHA1对密文循环迭代。这样就增加了口令明文加密的时间复杂度,为口令破解带来更多的时间消耗。

以上都是个人面试时回答的,是从口令实际破解的方法的角度去理解的。正确与否,有待考究。

问题四:
实际上,QQ被盗的实际情况很少像你所说的那样,利用QQ口令密文和明文猜测的方式进行破解,那样的成本太大。我们所知的,QQ号被盗的大部分情况要么是用户电脑被种植木马病毒,窃取其键盘输入的明文,要么是破解了QQ用户在其他网站以QQ邮箱和相同口令注册的账户密码。这种我们称之为“撞库”现象。针对“撞库”现象,你该如何解决这类安全问题呢?

答:
这种情况是不法分子已经获取了QQ用户的口令。那么我们所要做的就是识别这种非法的登陆行为并阻止,然后告知真正的QQ用户,QQ账户存在风险,请及时修改密码。

如何识别非法的登陆行为并阻止,我们可以从以下几个方面考虑:
(1)异地登录检测;
(2)识别QQ用户异常行为分析,如向不常用qq好友发送消息或者发送一些敏感类消息,如银行卡号,转账请求等。

一旦检测到QQ账户的异常现象,应该采取以下措施组织其登陆行为:
(1)异地登录需要输入密保问题或者手机校验码;
(2)QQ用户异常行为,想QQ真实用户绑定的手机发送通知类消息,并要求当前登陆者提供密保问题或者已绑定的手机校验码,来验证登陆者的合法性。

问题五:
QQ号或者微信号具有重要的价值,如果不法分子为了获取大量的QQ号,我们该如何阻止这种行为呢?

答:
(网上好像没找到权威的说法,这里继续自己YY。)

这里应该应该也是涉及到QQ注册时异常情况的检测和识别。
(1)如果同一台机器,相同IP地址向服务器在短时间内发出大量的注册行为,服务器应该拒绝注册请求;

问题六:
如果非法团体采用代理服务器中转,隐藏了真实IP,他们可以将注册请求分散在不同的终端, 又该如何识别呢?

答:
我说QQ注册时,我们可以要求QQ用户提供实名认证的手机号,来进行校验,并使用图片验证码来防止非法的大量注册。

面试官又说:现在可以伪造手机号来接收验证码,并且软件可以通过图像识别来分析图片验证码,这个方法不可行,还有其他的办法吗?
答:
(1)可以在终端注册成功后,防止其再次注册。比如利用cookies来保存用户注册的记录。如果再次提交注册请求则拒绝服务。

(2)可以对注册时按键速度,鼠标点击,键盘输入,密码强度,注册来源进行分析,来判断是软件在操纵还是真实的人为操纵。

问题七:
问你一个排列的问题吧。有五个人排成一排,现在要重新排列,要求都不能站在原来的位置,有几种排法?

答:
首先我们把人数推广到 n个人,即n个人排成一列,重新站队时,各人都不站在原来的位置上。设满足这样的站队方式有an种,现在我们来通过合理分步,恰当分类找出递推关系。

第一步:第一个人不站在原来的第一个位置,有n-1种站法。
第二步:假设第一个人站在第2个位置,则第二个人的站法又可以分为两类:第一类,第二个人恰好站在第一个位置,则余下的n-2个人有an-2种站队方式;第二类,第二个人不站在第一个位置,则就是第二个人不站在第一个位置,第三个人不站在第三个位置,第四个人不站在第四个位置,……,第n个人不站在第n个位置,所以有an-1种站队方式。

由分步计数原理和分类计数原理,我们便得到了数列an的递推关系式: an=(n-1)*(an-1+an-2),显然,a1=0,a2=1,a3=2,a4=9,a5=44 有44种排法。

问题八:
给定一个正整数,如何判断其对应的二进制形式有多少个1。
答:
解法一:将给定的数与1按位与,判断是否为1,若为1则1的个数加一,然后再逻辑右移重复前面的操作,直至给定的数逻辑右移结果为0。
代码描述如下:

int x=2015;
int count=0;
while(x){
if(x&1) ++count;
x=x>>1;
}

解法二:可以通过如下方式获取。

int x=2015;
int count=0;
while(x){
++count;
x=x&(x-1);
}

问题九:
面试就差不多这样了,请问你有什么想问的吗?
答:
安全技术岗位的工作对应聘者的要求是偏安全防治策略多一点,还是后台的编码能力多一点。

面试官:主要以编程能力为主,但是安全防治策略在从全局的角度要有了解,要知道常见的网络安全问题以及应对策略。

3.小结

二面并没有太多的技术问题的面试,反而是考察对腾讯相关产品面临的安全问题有没有什么应对的策略和想法。

对于最后一个提问环节。我个人得还是提个问题比较好,一是体现自己对工作岗位的一片热枕,二是给自己一个和面试官主动的交流机会,而非被动的回答问题,让面试官感觉应聘者是比较求知好学的。当然,至于问什么问题,最好跟岗位工作的内容相关,切勿询问面试结果。


参考文献

[1]五个人排成一排.
[2]讨论一下腾讯防止重复注册QQ的机制.