職位類(lèi)型:安全工程師
面試地點(diǎn):北京
招聘公司:北京小米科技有限責(zé)任公司
我是一名工程師,已經(jīng)工作了3年,也算是個(gè)有點(diǎn)工作經(jīng)驗(yàn)的人士了。小米公司也差不多是這3年里起來(lái)的,還記得小米第一款手機(jī)我就買(mǎi)了,當(dāng)時(shí)覺(jué)得特別值,價(jià)格便宜,功能強(qiáng)大。隨后小米在國(guó)產(chǎn)手機(jī)行業(yè)里也占領(lǐng)了一個(gè)不可動(dòng)搖的位置。
我有幸來(lái)到了小米公司面試,這次面試給我的感覺(jué)很深刻,讓我知道了我為什么喜歡小米的產(chǎn)品,下面就看看面試的經(jīng)歷吧。
小米公司招聘安全工程師的面試筆試經(jīng)歷
面試采用電話面試的形式,主要針對(duì)簡(jiǎn)歷上的內(nèi)容發(fā)問(wèn),耗時(shí)1h20min左右。根據(jù)問(wèn)題推斷,應(yīng)該是要對(duì)我做一個(gè)比較全面地初步了解。下面是我還記得的幾個(gè)面試題:
1.做個(gè)自我介紹
2.當(dāng)初為什么選擇信息安全這個(gè)專(zhuān)業(yè)?你覺(jué)得研究生階段收獲了什么?你覺(jué)得讀研是否有價(jià)值
3.說(shuō)說(shuō)BASE64編碼的過(guò)程
4.熟不熟悉Linux系統(tǒng),Linux命令用的多么?會(huì)不會(huì)使用awk,比如說(shuō)我要讀取一個(gè)文件的第二行信息,應(yīng)該怎么做?
5.幾個(gè)項(xiàng)目經(jīng)歷的一些說(shuō)明
a)項(xiàng)目是做什么的?應(yīng)用環(huán)境?
b)系統(tǒng)的處理能力以及性能瓶頸
c)自己解決的問(wèn)題,改進(jìn)的地方
總結(jié)一下小米面試官主要看的幾點(diǎn):
1.熟悉Linux操作系統(tǒng),計(jì)算機(jī)網(wǎng)絡(luò)等,基礎(chǔ)知識(shí)扎實(shí)
2.精通Linux系統(tǒng)下C語(yǔ)言以及Python、php、Shell等腳本語(yǔ)言開(kāi)發(fā)
3.進(jìn)攻web安全技術(shù),熟悉OWASPTOP10漏洞,并了解漏洞原因以及解決方案
4.熟悉滲透測(cè)試流程,并有較強(qiáng)滲透測(cè)試和漏洞挖掘能力
5.了解移動(dòng)平臺(tái)漏洞挖掘技術(shù),以及解決方案
6.學(xué)習(xí)能力強(qiáng),肯鉆研,認(rèn)真踏實(shí)
7.有良好的時(shí)間觀念,能很好的溝通交流,樂(lè)于分享
8.具有正確的價(jià)值觀,良好的職業(yè)道德,充分認(rèn)識(shí)到信息安全工作的社會(huì)責(zé)任
小米研發(fā)類(lèi)(貌似僅軟件)的筆試分A、B兩套試題,其中A卷供應(yīng)聘非運(yùn)維類(lèi)崗位的童鞋使用,B卷供應(yīng)聘運(yùn)維類(lèi)崗位【職位列表?xiàng)l目中用運(yùn)維部標(biāo)注】的童鞋使用。而我應(yīng)聘的安全工程師屬于運(yùn)維部,使用的是B卷。A卷我大概瞟了一眼,全是程序設(shè)計(jì)的大題,而B(niǎo)卷則以問(wèn)答題為主。
B卷的范圍主要涉及:Linux應(yīng)用基礎(chǔ)、計(jì)算機(jī)網(wǎng)絡(luò)、網(wǎng)絡(luò)安全(主要是Web滲透方面)、編程開(kāi)發(fā)、數(shù)據(jù)庫(kù)原理與應(yīng)用。下面例舉了一些我當(dāng)時(shí)記下來(lái)的題目:
1.設(shè)計(jì)一個(gè)shell腳本xm.sh,在/tmp/test下創(chuàng)建50個(gè)目錄,即user1至user50,并設(shè)置每個(gè)目錄權(quán)限,其中其他用戶權(quán)限為“讀”,文件所有者權(quán)限為“讀寫(xiě)執(zhí)行”,文件所有者組的權(quán)限為“讀執(zhí)行”。
2.Linux系統(tǒng)中執(zhí)行uptime后會(huì)有以下輸出:
10:54:44up158days,20:11,3users,loadaverage:0.62,0.41,0.31
其中l(wèi)oadaverage的三個(gè)值分別代表什么含義?造成load值很高有哪些常見(jiàn)的原因?
3.線上運(yùn)行的程序/usr/sbin/nginx,有可能因?yàn)槟硞€(gè)特殊請(qǐng)求或BUG導(dǎo)致服務(wù)異常退出,但可以通過(guò)重新開(kāi)啟繼續(xù)服務(wù)。設(shè)計(jì)一種方式,能夠監(jiān)管程序異常,并在異常退出時(shí)自動(dòng)開(kāi)啟。
4.Linux系統(tǒng)掉電有可能造成數(shù)據(jù)損失,原因是什么?有哪些方面可以降低或避免這種問(wèn)題?
5.有用戶反饋無(wú)法訪問(wèn)http://www.xiaomi.com,請(qǐng)簡(jiǎn)述排查過(guò)程和可能的原因。
6.ARP協(xié)議的用途是什么?簡(jiǎn)述其工作過(guò)程
7.簡(jiǎn)述你所了解的網(wǎng)站負(fù)載均衡方式。
8.Linux下常用的文件系統(tǒng)格式有哪些?其特性是什么。
9.如在PHP源碼中有如下語(yǔ)句,有什么安全風(fēng)險(xiǎn)?并寫(xiě)出其利用原理
10.你所了解或者使用過(guò)的滲透測(cè)試工具都有哪些?分別闡述其工作原理,以及對(duì)比各自的優(yōu)缺點(diǎn)。
11.簡(jiǎn)述線程和進(jìn)程的關(guān)系,對(duì)比httpserver的多線程實(shí)現(xiàn)和多進(jìn)程實(shí)現(xiàn)的優(yōu)缺點(diǎn)
12.請(qǐng)簡(jiǎn)述鏈表與數(shù)組的區(qū)別:編寫(xiě)一個(gè)程序,merge兩個(gè)升序數(shù)組,用你熟悉的語(yǔ)言實(shí)現(xiàn),如果是C語(yǔ)言的話,方法簽名如下:int[]merge_array(int[]a,int[]b)
13.前端web開(kāi)發(fā)
a)CSS:列出display的值,說(shuō)明他們的作用?
b)JavaScript:請(qǐng)列出js中的基本數(shù)據(jù)類(lèi)型。
c)JavaScript:通過(guò)js來(lái)隱藏一個(gè)DOM元素,比如ele為被操作的DOM元素。
14.數(shù)據(jù)庫(kù)理論
a)說(shuō)說(shuō)你對(duì)索引的理解(包括索引的結(jié)構(gòu)、對(duì)dml影響、對(duì)查詢影響)。一個(gè)表的索引是否越多越好?
b)什么是事務(wù)?有什么特性?
c)什么是巴斯-科德范式(BCNF)?
15.SQL語(yǔ)法
有如下三個(gè)表:
學(xué)生(學(xué)號(hào),姓名,性別,年齡,系號(hào))
課程(課號(hào),課名,學(xué)時(shí))
選課(學(xué)號(hào),課號(hào),成績(jī))
a)查詢有不及格科目的學(xué)生姓名(60分及格)
b)查詢各科成績(jī)的最高分,顯示課號(hào)和最高分
c)查詢選課人數(shù)不足30的課程名稱
就拿筆試來(lái)說(shuō),小米的考試范圍比較廣泛,可能跟他們的企業(yè)文化或商業(yè)戰(zhàn)略有關(guān)系吧,需要一些符合他們想法的人群。再有就是對(duì)細(xì)節(jié)和深度比較重視,能在小米公司里工作確實(shí)學(xué)到了很多。