记2019年信工所六室预推免面试

2019年信工所夏令营于7月14日开营,非夏令营成员面试定于7月18日。因为信工所每年招收学生较多,所以信工所各室会在那些没有被选上参加夏令营的同学中再选一批参加各室自己的面试。比如今年夏令营只收了150人,我没选上,但是在接下来的一周陆续收到了信安国重、二室和六室的电话以及某位老师的邮件,都是问我18号有没有意愿去面试的。我最终选择报六室。 某室的老师曾解释过这批非夏令营学生是怎么筛选出来的,夏令营名单公布后,那些没被选上夏令营的同学的简历会被发到各个室的各个老师,如果老师对你的简历感兴趣就会为你的简历投一票,最终得票多的同学有机会参加18号的面试。这些非夏令营的同学除了中午管一顿饭,其余费用自理,时间是一天。上午安排体检,如果提前一天去的话晚上住在体检医院附近的宾馆是最好的。

在面试的前几天,六室会把面试需要准备的材料通过邮件或短信发给各同学,(很多人报名的邮箱填的是谷歌邮箱,但谷歌邮箱会默认把信工所的邮件视为垃圾邮件,导致很多人错过了邮件通知)。

18号上午体检完信工所安排班车接我们去六室所在的益园园区,位于北京五环,位置有点偏,园区内部和IT公司的陈设很相像。到了园区后各室会有一位老师领着学生到各自的办公地点参加考核,考核包括心理测试、笔试、机试和面试

心理测试就和学校每学期组织的心理调查问卷一样,提前准备好2B铅笔。

笔试是一张卷子45分钟,题目倒是有点新颖,和平时考的专业课完全不一样,更像是知识竞赛的题。比如给你一个数让你拆成几个连续的数的和,有多少种拆法?智能手机九宫格锁屏有多少种密码手势?最后还有一题给你函数让你写逆函数,总之和算法、逆向、编译原理等有一点关系,。虽然可以使用手机,但是在45分钟内确实做不了多少题(何况这种烧脑的题网上也不好搜),出题的学长直接就明说了这张卷子你们应该做不到30分。最后也是连蒙带猜地做出来几题。做完已经是1点多了,热心的学长学姐直接把午饭送到了笔试的机房。

面试下午2:00左右开始,很多人都是先做机试然后参加面试,或者机试做了一半去参加面试。我不想因为面试影响机试思路,所以决定先参加面试再回来做机试。面试分三轮:英语面、技术面、综合面,分别安排在三个办公室,没有固定的顺序。

  • 技术面:负责技术面试的是两位学长,开始是自我介绍,2-3分钟左右,然后学长会针对你的项目经历提问题。我在简历中写了做过工控安全网关和网络攻击工具集,学长问我这个网关的流量速度如何?对原工控设备是否有影响?什么是Land攻击(因为我项目经历里面写了land攻击)等等,可能学长对我的项目不太了解,问的问题不具有很强的技术性。但是两位学长人很友好,也没有问我专业课的问题,最后听说我做过内核学长还帮他的实验室打了一波广告。
  • 英语面:负责英语面试的是一位女老师,开始是英文自我介绍,也是2-3分钟,然后老师会根据你本科的经历用英语提一些问题,比如,学CTF多久了?有没有自己的CTF团队?团队有多少人?团队成员来自哪些学院等等,一般人都能应付。
  • 综合面:综合面试应该是最重要的一个环节了,被安排在一个大会议室里。正中央坐着六室的主任刘宝旭老师,两边各坐着两位老师,应该也是硕导博导级别的人物。开场是5分钟自我介绍(需提前准备PPT),然后是各个老师提问,老师问我做的网络攻击工具集有没有利用别的工具?攻击过程是怎样的?攻击效果怎么样?然后还有一些别的技术细节问题,因为项目都是自己做的所以回答起来并不困难。最后刘老师还问了我家庭的情况、每周是否运动、每次运动多长时间、有什么兴趣爱好、本科期间是否担任过什么职务等。以上问题都没有涉及专业课,整个面试流程还算流畅。

做机试的时候已经3点了,今年的机试和往年不一样。往年是CTF/编程二选一,今年编程是必做,1个小时3道题,CTF是选做,只有pwn、web、reverse(因为赶火车没来得及做……)。编程题3道:两道基础题一道附加题。基础题1是在一个二维数组保存的矩阵中找一个数,找到返回true,没找到返回false,这个矩阵的数从左到右依次增大,从上到下依次增大;基础题2是计算一个数转成二进制后包含多少个1;附加题是给一个数组,把数组的数拼接在一起,求怎么拼接得到的数最小, 例如输入数组{3,32,321},则拼接起来的最小数为321323 。前面的基础题就不用说了,附加题就是一道简单的ACM题。机试只能用C\C++\java,不能用python。因为在使用vs的时候遇到了一点小问题(没想到卡了20分钟),时间紧急也没来得及细想就转用java(况且eclipse带了自动补全)。

//基础题1:对每行进行二分查找
public static boolean find(int [][] matrix, int number){
	int row=matrix.length,column=matrix[0].length;
	for(int i=0;i<row;i++){
		if(number<matrix[i][0])
			break;
		else if(number>matrix[i][column-1])
			continue;
		else{
			//采用二分查找
			int min=0,max=column-1;
			if(number==matrix[i][min] || number==matrix[i][max])
				return true;
			int middle=(min+max)/2;
			while(middle !=min){
				if(number<matrix[i][middle])
					max=middle;
				else if(number>matrix[i][middle])
					min=middle;
				else
					return true;
				middle=(min+max)/2;
			}
		}
	}
	return false;
}
public static void main(String[] args) {
	// TODO Auto-generated method stub
	int [][] matrix={
			{0 ,1 ,2 ,3 ,9 ,11,14},
			{5 ,7 ,12,13,15,18,20},
			{8 ,9 ,19,20,21,40,60},
			{10,11,31,32,70,80,81},
	};
	System.out.println(find(matrix,19));
}
//基础题2:每次向右移一位,判断最低位是不是1
public static int binary(int num) {
	int count=0,r=0;
	while(num!=0){
		r=num&1;
		if(r==1)
			count++;
		num=num>>1;
	}
	return count;
}
public static void main(String[] args) {
	// TODO Auto-generated method stub
	System.out.println(binary(17));
}
//先对数组中的数进行排序,如果mn<nm,则视m<n,比如m=32,n=3,323<332,所以32<3
//这种大小比较仅是为了给数组排序,m<n意思是在拼接数字时m要排在n前面
package algorithm;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;

public class Test3 {
	public static String find_min(int [] array) {
		List<String> num_list=new ArrayList<String>();
		//数字转字符串为了防止数字太大发生溢出
		for(int i:array){
			num_list.add(String.valueOf(i));
		}
		Collections.sort(num_list, new Comparator<String>(){
			public int compare(String a,String b){
				String r1=a+b;
				String r2=b+a;
				return r1.compareTo(r2);
			}
		});
		String result=new String();
		for(String num:num_list){
			result+=num;
		}
		return result;
	}
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int [] a={321,30,321};
		System.out.println(find_min(a));
	}
}

experience:
1、信工所看重本科项目经历,面试也都是基于项目经历来问,所以本科期间在实验室做开发还是有一些帮助。但是在实验室尽量要负责一些有技术含量的模块,很多模块虽然代码量大但是没有什么难度,对于日后推免没有什么实际益处;
2、如果有编程题机试,一定要提前做题练习。虽然此次机试题不难,但是如果长期不做题,在真正机试的时候还是会有些不适应,毕竟换了个环境而且有时间限制,对做题人来说有一定的心理压力。

记2019年东南大学网络空间安全学院夏令营

东大网络空间安全学院前几年由信息学院、计算机学院等多个学院抽调老师组建而成,2018年开始以网安院名义招收研究生,今年2019年是东大网安院第一次举办夏令营,总共收到了七百多份申请,审核通过四百多份,最终入营的有三百多人。这三百人来自主要是由南京周边的学校,如南京邮电大学(28人)、河海大学(25人)、安徽大学(30人),然后还有一部分是周边如合工大、湖南大学、南昌大学等,令我意外的是西安电子科技竟然来了30多人,不得不佩服西电在计算机领域的名气~。

7月9日上午报到,下午是学院介绍和参观企业(烽火科技)。通过下午的介绍我才知道,东大一方面承担着国家给的网络空间安全模范学院建设任务,一方面自己也有着雄厚的资金,有足够的校舍、足够的实验室和足够的老师。所以东大网安院招生规模庞大,18年招收了250名左右研究生,150名左右本科生。

7月10日上午,听东大网安院的导师讲座,5位老师中一位(网安院长)是做网络安全的(如网络攻击主动防御、网络测量、恶意流量检测等,比较符合计科、信安的学生)、两位是做深度学习的、还有两位是做物联网/无线通信的。网安院老师的配置还不错,既有能做项目的导师,又有能发论文的导师。

10日下午面试,也许是面试学生太多,每个人只有5分钟左右的时间(如果老师对你感兴趣也许会多问你一些问题,时间会长一点),我的面试顺序安排在中间,等了近3个小时才轮到我(心疼后面那一半同学,据说有的组到后面就直接让学生自我介绍完就出来)。面试流程很简单,老师会看你的申请表,上面有排名、竞赛成绩和项目经历,根据这些老师就有了对你的基本评价,如果对你的基本评价不好,他就会问几个和技术没啥关系的问题,比如我面试的时候,我自我介绍完老师说我排名有点低,然后问我有没有竞赛荣誉,接着就问我你们这个产品现在是不是已经投产了、你们专业人数、你的项目个人贡献云云,总之没有什么技术上的问题。最后几乎所有的学生都被问了同样的问题:你是否报名了其他学校的夏令营?如果让你在东大和xxx大学之间选择你会选哪所?等等,似乎这个问题也对面试最终分数有一点影响。我还准备了英文自我介绍部分,可惜老师没问,老师没有问我任何和英语有关的问题。别的组有的老师问了,如果你在申请书里面写了你考过雅思/托福,老师可能会让你用英文介绍你的项目经历,如果你的英语水平一般,老师也许会让你用英文讲一下你的电话号码。

总结一下:
1、东大比较看重排名和竞赛,可能是因为第一年举办夏令营的缘故,感觉面试比较鸡肋(毕竟时间少);
2、如果有科研项目的话,一定要把自己参与成分较多的项目写在前面,有些项目虽然很高大上,但你只负责了一小模块,几乎没啥作用;
3、东大确实很大,环境很好,资源很多,食堂很好吃。

2019.7.19更
7月17号公布优秀营员名单,在名单公布之前,申请直博的同学需要联系好导师。东大还给我打了电话问我能不能确定有保研资格,估计没有保研资格的话应该就不会给优营了吧。此次优营名单有150人,占到总人数的一半,还是挺多的。