校招回忆录---小米篇

来源:互联网 发布:java 异步写文件 编辑:程序博客网 时间:2024/05/02 00:19

2015届[2014年秋]小米(安全工程师)校招求职经历

本文由CSDN-蚍蜉撼青松【主页:http://blog.csdn.net/howeverpf】原创,转载请注明出处!

       需要提前说明的一点是,由于这系列文章都是记录我自身参加各大公司校招的经历,部分推断或评价(尤其是对面试官的评价)是带有很大主观色彩和一定偶然性的,不一定准确也不求客观,所以我的这些文章真的只能作为一个侧面的参考。管中窥豹,可见一斑,但切勿以偏概全哦~


一、网申

校招主页:http://hr.xiaomi.com/campus/index

       小米的绝大部分研发类岗位工作地点都在北京,除此以外,仅“软件开发工程师”和“软件测试工程师”有少量工作地在上海;其网申系统只允许投递一个岗位志愿。

       小米校招网站上对研发类岗位还划分得蛮细的,对于安全方面,有专门的安全工程师这一独立的岗位,其要求如下:


图1 小米-安全工程师的岗位需求信息描述


二、笔试(运维类)

       仅就我们考场来看,小米研发类(貌似仅软件)的笔试分A、B两套试题,其中A卷供应聘非运维类岗位的童鞋使用,B卷供应聘运维类岗位【如图1,职位列表条目中用(运维部)标注】的童鞋使用,比如应聘安全工程师的我。A卷我大概瞟了一眼,貌似以程序设计的大题为主,而B卷则以问答题为主。

       B卷的范围主要涉及:Linux应用基础、计算机网络、网络安全(主要是Web渗透方面)、编程开发、数据库原理与应用。下面例举了一些我当时遇到的题目:

1.设计一个shell脚本xm.sh,在/tmp/test下创建50个目录,即user1至user50,并设置每个目录权限,其中其他用户权限为“读”,文件所有者权限为“读写执行”,文件所有者组的权限为“读执行”。2.Linux系统中执行uptime后会有以下输出:10:54:44 up 158 days, 20:11, 3 users, load average:0.62, 0.41, 0.31其中load average的三个值分别代表什么含义?造成load值很高有哪些常见的原因?3.线上运行的程序/usr/sbin/nginx,有可能因为某个特殊请求或BUG导致服务异常退出,但可以通过重新开启继续服务。设计一种方式,能够监管程序异常,并在异常退出时自动开启。4.Linux系统掉电有可能造成数据损失,原因是什么?有哪些方面可以降低或避免这种问题?5.有用户反馈无法访问http://www.xiaomi.com,请简述排查过程和可能的原因。6.ARP协议的用途是什么?简述其工作过程7.简述你所了解的网站负载均衡方式。8.Linux下常用的文件系统格式有哪些?其特性是什么。9.如在PHP源码中有如下语句,有什么安全风险?并写出其利用原理<?$_POST['a']($_POST['b']);?>10.你所了解或者使用过的渗透测试工具都有哪些?分别阐述其工作原理,以及对比各自的优缺点。11.简述线程和进程的关系,对比http server的多线程实现和多进程实现的优缺点12.请简述链表与数组的区别:编写一个程序,merge两个升序数组,用你熟悉的语言实现,如果是C语言的话,方法签名如下: int[] merge_array(int[] a, int[] b)13.前端web开发a)CSS:列出display的值,说明他们的作用?b)JavaScript:请列出js中的基本数据类型。c)JavaScript:通过js来隐藏一个DOM元素,比如ele为被操作的DOM元素。14.数据库理论a)说说你对索引的理解(包括索引的结构、对dml影响、对查询影响)。一个表的索引是否越多越好?b)什么是事务?有什么特性?c)什么是巴斯-科德范式(BCNF)?15.SQL语法    有如下三个表:学生(学号,姓名,性别,年龄,系号)课程(课号,课名,学时)选课(学号,课号,成绩)a)查询有不及格科目的学生姓名(60分及格)b)查询各科成绩的最高分,显示课号和最高分c)查询选课人数不足30的课程名称

三、面试

       小米的技术面试一般是三面吧,前两面是技术面,第三面是主管面。我倒在了第二面,所以第三面的情况母鸡啦~

3.1 一面(安全工程师)

       一面采用电话面试的形式,主要针对简历上的内容发问,耗时1h20min左右。(电话打过来的时候大概11点10分左右,我正准备去吃午饭。当时想着面试完再吃也是一样的,就开始面了。结果面到一半的时候,去哪儿的二面电话又到了,只好在小米的面试结束后继续去哪儿的二面,两场面试耗时2个小时左右,生生把我的饭点蹉跎了,真是好心酸~~~)根据问题推断,应该是要对我做一个比较全面地初步了解。下面是我还记得的几个面试问题:

1.做个自我介绍2.当初为什么选择信息安全这个专业?你觉得研究生阶段收获了什么?你觉得读研是否有价值3.说说BASE64编码的过程4.熟不熟悉Linux系统,Linux命令用的多么?会不会使用awk,比如说我要读取一个文件的第二行信息,应该怎么做?5.几个项目经历的一些说明a)项目是做什么的?应用环境?b)系统的处理能力以及性能瓶颈c)自己解决的问题,改进的地方


3.2 二面(安全工程师)

       二面也采用电话面试的形式,提问偏向于一些开发的细节,耗时45min左右。根据问题推断,其目的是想要准确了解我的开发能力。下面是我还记得的几个面试问题:

1.几个项目经历的一些细节a)后台部分采用的什么语言?PHP还是JSP?b)项目的后台与前台之间采用什么通信机制?请描述细节c)项目里面数据库是如何设计的,请描述数据表结构2.用C语言设计一个公用函数,它的输入是n个字符串,功能是找出这些字符串的最长公共前缀,并将此前缀作为函数输出。请告诉我函数原型怎么写,函数怎么实现,你的实现时间复杂度又是多少?3.你期望的薪酬?4.你有什么要问的?


3.3 面试官的介绍

1.我若能有幸加入你们的团队,主要从事哪方面的工作,需要哪方面的能力?答:我们的团队不大,主要做两方面的工作,一是Web安全,二是系统入侵检测与流量监控。另外还有云计算安全、私有DNS服务等。流量监控的话,主要是从流量中检测是否存在SQL注入。流量比较大,1000~2000个G(不知道有没有听错),所以会需要数据包捕获技术的优化以及数据包重组效率的提升。我们希望你对Shell脚本比较熟悉。2.如果我被录用的话,就要去北京工作,不知租房如何,方不方便?答:一般我们都租公司附近的小区,月租大概是1000~2000,2000已经可以住得很舒适。

四、小结

       就网申来说,小米的校招主页挂靠在小米官网上,感觉做得还比较简陋,使用起来也不是很方便。

       就笔试来说,小米的运维类岗位笔试考得范围比较广泛,也比较注重细节,深度的话一般,还算好做。

       就面试来说,小米面试对安全技术问得不多,开发的东西反而问得多些(当然,这也可能只是针对我而言,因为我本身也是偏安全开发方向的)。

       从回答来看,小米的安全工程师岗位偏向于安全运维类型,安全团队感觉还比较新,进去应该还有比较大的成长空间。

       总的来说,小米是第一个完全靠我自己的努力,走“正规”途径,从笔试一路杀入二面,并且我真心想去的公司。(百度给了第一次二面机会,但其实有公司缺人而捡漏的因素在其中;锐捷给了我第一次三面的机会,但其实我不怎么想去;去哪儿的二面也在小米二面之前,但正如我在骆驼篇中所说,这个二面的获取是有点取巧的)小米的这一段应聘经历,在我整个的九月求职历程中有着非常重要的强心剂和催化剂作用!


写在最后

       本文旨在从一个求职者的角度,将小米今年校招的流程、岗位需求对大家做一个简单的介绍,希望能够让有意在今后加入小米的学弟学妹们有所收获,有的放矢。作者经历有限,部分内容(笔试题目、面试形式等)仅针对成都地区。

       虽然我在文中记录了笔试面试的一些真题,但是我并不希望我的读者只是冲着这些真题而来,我希望的是,你们通过我的经历,能够从侧面对小米以及它安全工程师的岗位有更多的了解。共勉!



7 0
原创粉丝点击