10:15 到 10:45 – 與邀請我參加面試的人交談。我講了今天的計劃,介紹了兩組要采訪我的人,分別是CLR部門和企業(yè)服務(wù)部門。
11:00 至 12:00 – 采訪企業(yè)服務(wù):討論高性能系統(tǒng)和企業(yè)服務(wù)標(biāo)準(zhǔn)。提出的問題:設(shè)計和實(shí)現(xiàn)一個自我管理的線程池。
12:00 到 13:30 – CLR 面試官在午餐時間采訪我:討論 CLR 和 PKI 安全問題。提出的編程問題:兩個用零填充的固定字緩沖區(qū)。字節(jié)的順序可以交換和顛倒,但零的位置不能。
14:00 到 15:00 – Enterprise Services 訪談:討論 VS.NET。設(shè)計了一個功能,讓汽車的立體聲系統(tǒng)選擇信號最強(qiáng)的六個頻率。
15:30 到 16:30 – CLR 面試團(tuán)隊面試:使用 strpbak。
微軟秘密面試題
微軟和許多其他公司一樣,在面試中擁有“秘密測試武器”,通常被稱為“挑戰(zhàn)”。我的一個朋友沒有通過微軟的面試。采訪結(jié)束后,我和他共進(jìn)晚餐。他抱怨道:“我討厭那個考官微軟面試題 病狗,他是個徹頭徹尾的白癡,連鋼琴公理之類的基礎(chǔ)知識都不知道!”因?yàn)榭脊俨恢雷约涸谡f什么,導(dǎo)致了這個粉碎。
結(jié)果如何?他申請的職位是項(xiàng)目經(jīng)理,一個負(fù)責(zé)設(shè)計軟件而不是編程的職位,所以這個職位需要大量的說服工作。與一群邏輯思維能力強(qiáng)但缺乏社交能力的程序員打交道,需要項(xiàng)目經(jīng)理的特殊才能。作為項(xiàng)目經(jīng)理,你需要具備的獨(dú)特能力是讓人們相信你認(rèn)為是真的,這基本上是你的日常工作。你必須有耐心和友善,這是一個人擔(dān)任項(xiàng)目經(jīng)理職位的基本素質(zhì)。
“挑戰(zhàn)”的最早版本出現(xiàn)在斯坦福-比奈口試 IQ 測試中。測試者可能會提出以下問題:我們都知道水可以在水中提魚,所以請回答這個問題:如果我們有一個只有半桶水的水桶,將水桶放在天平上,水和水桶恰到好處 重45公斤。然后把一條5kg的魚放進(jìn)桶里,現(xiàn)在總重量是多少?
大多數(shù)成年人會說 45 加 5 是 50 公斤。進(jìn)行測試的人此時可能會問:“這怎么可能是真的?你知道水能養(yǎng)魚。”如果被測試的人不斷改變答案并說:“我認(rèn)為答案應(yīng)該是 50 公斤,但不太確定?!比缓蠓?jǐn)?shù)為零。只有當(dāng)測試對象使用邏輯來證明他的正確答案是正確的并且連續(xù)兩次擊敗“挑戰(zhàn)”時,這個答案才被認(rèn)為是正確的。
這些問題似乎不是智力測試,但毫無疑問,應(yīng)用這種“復(fù)雜性”測試的公司會認(rèn)真對待他們的結(jié)果。大致情況如下:在整個面試過程中,考官都會引導(dǎo)考生給出一些完全肯定的、無可爭議的正確答案。然后說“等等,等等”,并故意給他唱兩分鐘的反曲微軟面試題 病狗,直到他們能夠完全證明他們的答案是正確的。
選擇放棄的懦弱候選人永遠(yuǎn)不會被接受。優(yōu)秀的候選人會使用戴爾·卡內(nèi)基 (Dale Carnegie) 的完整方式來說服你始終堅持自己的立場。這樣的人將被雇用。
未回答的公開考試問題
微軟不愿公開面試題,但也很無奈。早在互聯(lián)網(wǎng)誕生之初,這些試題就陸續(xù)發(fā)布了。
Chris Sells 于 1990 年代初在 Developer Mentor 接受采訪。在采訪的最后,公司的一位創(chuàng)始人說:“好吧,你被錄用了。不過我再問你一個微軟在面試中經(jīng)常問的問題——下水道蓋為什么是圓形的?”
銷售人員回答:“沒問題,如果你先回答這個問題,我會回答你的問題——為什么消防員的安全帶是紅色的?”
公司創(chuàng)始人無語。
這種經(jīng)歷促使 Sells 開始收集來自 Microsoft 的面試問題。 1996 年,他創(chuàng)建了一個網(wǎng)站并開始發(fā)布他聽說過的 Microsoft 試題。
南加州大學(xué)的學(xué)生 Curran Bondrapati 和他的幾個朋友一起參加了微軟的面試。 Bondrapati 整理了題目,組建了自己的“微軟面試題庫”。還有其他提供類似服務(wù)的網(wǎng)站,例如 4guysfromRolla。 com 的“Microsoft 面試問題”和 Michael Pryor 的“技術(shù)面試問題”(該網(wǎng)站包含各種問題,而不僅僅是 Microsoft 面試問題)。
您可能認(rèn)為微軟對自己公司的面試問題被公開感到非常惱火,但事實(shí)并非如此。 Bondrapati 和 Sells 都聽說過,微軟人力資源部門的人會指示員工在首次考官時參考他們的網(wǎng)站。
當(dāng)然,候選人也可以使用這些網(wǎng)站準(zhǔn)備面試,但 Sells 和 Bondrapati 網(wǎng)站都沒有提供問題的答案,或者很少。邦德拉帕蒂在微軟面試的前一天晚上接到了一位朋友的緊急電話。她面前是一堆來自 Bondrapati 網(wǎng)站的打印件,但沒有一個問題有明確的答案,她希望 Bondrapati 告訴她。
Sells 收到許多公司的電子郵件,這些公司也希望“像 Microsoft 一樣招聘”。但他們需要知道答案,而 Sells 的網(wǎng)站卻忽略了答案。 Sells 說:“我總是說,如果你不知道答案,就不應(yīng)該在面試中問這些問題。這往往會讓他們生氣?!?/p>
微軟的謎題從何而來
邏輯主題是在 Microsoft Building 16 自助餐廳進(jìn)行的一次休閑午餐談話的一部分。微軟的競爭精神讓人們認(rèn)為能夠提出“新的”和“有效的”問題是“酷”的。
許多 Microsoft 問題都具有傳奇色彩。據(jù)說,史蒂夫鮑爾默在和另一位微軟高級官員慢跑時,看到一個下水道蓋,隨口問道:“為什么下水道蓋是圓形的?”另一個人有一個想法:“喲,這是面試的好問題?!边@個故事可能是真的,但幾乎可以肯定鮑爾默不是第一個提出下水道蓋問題的人。事實(shí)上,微軟的面試謎題已經(jīng)出現(xiàn)在一些謎題匯編書籍中,或者一些以謎題為主要內(nèi)容的網(wǎng)站中,而微軟只是將它們“粉飾”起來。
最受歡迎的面試問題:
如果沒有天平,你如何稱量一架噴氣式飛機(jī)?
為什么鏡子里的圖像是倒置的而不是倒置的?
為什么在酒店打開熱水水龍頭時熱水會流出?
M&Ms 是如何制作的?
你在船上,你把一個盒子扔了起來,水位會上升還是下降?
世界上有多少鋼琴調(diào)音師?
美國有多少個加油站?
每小時有多少密西西比河流過新奧爾良?
一個曲棍球場有多少冰塊?
如果你可以移動美國 50 個州中的任何一個,你會移動哪一個?
地球上有多少個點(diǎn):南1公里,東1公里,北1公里,你能回到原來的起點(diǎn)嗎?
時鐘的指針一天重疊多少次?
邁克和托德總共有 21 美元。邁克比托德多 20 美元。每個有多少?您的答案不能得分。
一般來說,查看曼哈頓電話簿需要多少次才能找到您要找的人的姓名?
你會如何設(shè)計比爾蓋茨的浴室?
你會如何設(shè)計一個電腦控制的微波爐?
]]>之所以ZombieLoad 會引起安全研究人員的高度關(guān)注,是因?yàn)槠渑c曾經(jīng)影響了所有 iPhone、Android、PC 設(shè)備的Meltdown 與 Spectre 有著諸多的相似之處。
我們都知道彼時不少芯片廠商為了提高 CPU 性能,從而在芯片上引入了兩種特性,一種叫亂序執(zhí)行(Out-of-Order Execution),另一種為推測性執(zhí)行(Speculative Execution),如今這兩種特性是現(xiàn)代處理器工作方式的重要組成部分:
其中,對于采用推測執(zhí)行,最大的好處就是可以讓應(yīng)用程序或系統(tǒng)運(yùn)行得更快、更高效。但讓大家不容忽視的是,這也就造成了黑客可以利用Meltdown 或 Spectre漏洞,在應(yīng)用軟件未經(jīng)任何授權(quán)下便可讀取到英特爾處理器內(nèi)核的信息,進(jìn)而攻擊者可獲取到用戶設(shè)備上的一些敏感數(shù)據(jù),如密碼、登錄密鑰、私人消息、郵件甚至是商業(yè)秘密文件。
如今,最新被研究人員發(fā)現(xiàn)的ZombieLoad 漏洞,針對的也是英特爾芯片在引用兩種特性作設(shè)計的缺陷,即可以使用推測性執(zhí)行來誘騙英特爾的處理器抓取從芯片的一個組件轉(zhuǎn)移到另一個組件的敏感數(shù)據(jù),不過這與使用推測性執(zhí)行來獲取內(nèi)存中的敏感數(shù)據(jù)的 Meltdown 不同,MDS 攻擊專注位于芯片組件之間的緩沖區(qū)。
據(jù)英特爾官方介紹,雖然 MDS 攻擊也是通過側(cè)信道攻擊的方式,但它的實(shí)現(xiàn)是由四種截然不同的漏洞共同組成。
事實(shí)上,這四種不同的 MDS 攻擊都利用了英特爾芯片如何執(zhí)行省時技巧的捷徑。在上文推測執(zhí)行的解釋中,我們看到 CPU 在程序執(zhí)行請求之前或猜測程序正在請求數(shù)據(jù)的過程中,經(jīng)常跟隨代碼中的命令分支,以便獲得先機(jī)。如果指令執(zhí)行完成后發(fā)現(xiàn)用不上,那么系統(tǒng)會拋棄計算結(jié)果。(在不同條件下,芯片可以從三個不同的緩沖區(qū)中獲取數(shù)據(jù),因此研究人員可以進(jìn)行多次攻擊。)
此前,英特爾的芯片設(shè)計人員可能認(rèn)為錯誤的猜測,即使提供敏感數(shù)據(jù)的猜測也無關(guān)緊要。于是,他們將這些結(jié)果拋棄了。
但其實(shí)這個漏洞,如同Meltdown 和 Spectre 一樣,攻擊者可以通過處理器的緩存泄漏處理器從緩沖區(qū)獲取的數(shù)據(jù)。整個過程,最多從一個 CPU 的緩沖區(qū)竊取幾個字節(jié)的任意數(shù)據(jù)。但是倘若連續(xù)重復(fù)數(shù)百萬次,攻擊者可以開始竊取 CPU 正在實(shí)時訪問的所有數(shù)據(jù)流。
與此同時,通過一些其他技巧,低權(quán)限攻擊者可以發(fā)出請求,說服 CPU 將敏感數(shù)據(jù)(如密鑰和密碼)拉入其緩沖區(qū),然后由 MDS 攻擊將其吸出。這些攻擊可能需要幾毫秒到幾小時,具體取決于目標(biāo)數(shù)據(jù)和 CPU 的活動。
據(jù) Wired 報道,這一次的漏洞是由英特爾聯(lián)合如奧地利大學(xué)、阿姆斯特丹大學(xué)、密歇根大學(xué)等歐洲多家大學(xué),以及 Cyberus、360、Oracle 等安全軟件公司的研究人員共同公布的。此前英特爾要求所有的研究人員對其研究成果保密,其實(shí)有些研究已經(jīng)超過了一年,如今當(dāng)它可以發(fā)布針對漏洞的修復(fù)程序時,這一事件才被爆出來。
當(dāng)前,英特爾也正在試圖淡化這一漏洞帶來的影響,不過有研究人員警告道,這些漏洞代表了英特爾硬件的嚴(yán)重缺陷,可能需要禁用其部分功能,甚至某些公司的補(bǔ)丁也無濟(jì)于事。
如今論其影響的范圍,可追溯到 2011 年以后擁有英特爾芯片的所有計算機(jī)設(shè)備。不過,據(jù)悉,此次影響也僅局限于英特爾芯片,而 AMD 和 ARM 芯片不像早期的側(cè)信道攻擊那樣易受攻擊。
英特爾對此也表示,過去一個月最新發(fā)布的某些芯片型號已經(jīng)包含了解決問題的方法。與此同時,微碼的補(bǔ)丁將有助于清除處理器的緩沖區(qū),防止數(shù)據(jù)被讀取。
那么,這個漏洞對普通用戶究竟意味著什么?
其實(shí),對于個人用戶而言,大家也不必太過驚慌。對此,安全研究人員格魯斯解釋道,“ZombieLoad 漏洞的出現(xiàn)并不意味著黑客或攻擊者可以即刻接管用戶的計算機(jī),且進(jìn)行驅(qū)動攻擊,這個與去年的Meltdown(熔斷)與 Spectre(幽靈)兩大漏洞相比而言,要比 “Spectre(幽靈)更容易觸發(fā)”,但是“比Meltdown(熔斷)更難觸發(fā)”。”
其實(shí),想要通過該漏洞進(jìn)行攻擊,黑客需要具備足夠的技能儲備。
“但是,如果該漏洞利用代碼在應(yīng)用程序中編譯或作為惡意軟件提供,那么黑客也可以以此進(jìn)行攻擊,”格魯斯補(bǔ)充道。
“其實(shí),另也有很多方法可以入侵計算機(jī)并竊取數(shù)據(jù)。不過,當(dāng)前對預(yù)測性執(zhí)行和側(cè)信道攻擊的研究重點(diǎn)仍處于起步階段。未來隨著越來越多的調(diào)查結(jié)果曝光,數(shù)據(jù)竊取攻擊有可能變得更容易利用和更簡化。”
對于用戶而言,想要避免或降低被攻擊的風(fēng)險,最好的做好就是,一旦有任何可用的補(bǔ)丁,記得及時安裝。
當(dāng)前,英特爾已發(fā)布微碼以修補(bǔ)易受攻擊的處理器,其中包括了 Intel Xeon、Intel Broadwell、Sandy Bridge、Skylake 和 Haswell 芯片。英特爾 Kaby Lake、Coffee Lake、Whiskey Lake 和 Cascade Lake 芯片也受到影響,以及所有 Atom 和 Knights 處理器。
基于此,英特爾也正面回應(yīng)道:”關(guān)于微架構(gòu)數(shù)據(jù)采樣(MDS)安全問題,我們近期的很多產(chǎn)品已經(jīng)在硬件層面得以解決了,包括很多第 8 代和第 9 代英特爾酷睿處理器、以及第 2 代英特爾至強(qiáng)可擴(kuò)展處理器系列。
對其它受影響的產(chǎn)品,用戶可以通過微代碼更新、并結(jié)合今天發(fā)布的相應(yīng)操作系統(tǒng)和虛擬機(jī)管理程序的更新獲取安全防御。
我們在官方網(wǎng)站上也提供了更多信息,并一如既往的鼓勵大家保持系統(tǒng)的及時更新,因?yàn)檫@是保持安全的最佳途徑之一。我們在此要感謝那些與我們通力協(xié)作的研究人員、以及為此次協(xié)同披露做出貢獻(xiàn)的行業(yè)合作伙伴們。”
除此之外,如蘋果、微軟、Google 等科技巨頭們,也相繼發(fā)布了補(bǔ)丁,希望將此作為抵御可能受到攻擊的第一道防線。
據(jù)外媒 TechCrunch 報道,英特爾表示,與以前的補(bǔ)丁一樣,微代碼更新會對處理器性能產(chǎn)生影響。大多數(shù)修補(bǔ)后的消費(fèi)者設(shè)備在最壞的情況下可能會受到 3% 的性能損失,在數(shù)據(jù)中心環(huán)境中則高達(dá) 9%。但是,其發(fā)言人表示,在大多數(shù)情況下,它不太可能引人注意。
事實(shí)上,在硬件的設(shè)計與性能不斷地優(yōu)化與迭代下,安全防御功能肯定會由此逐步提升,但這并不意味著所有的設(shè)備就會足夠的安全,而這也正如《我是誰:沒有絕對安全的系統(tǒng)》中的經(jīng)典語句所言,“人類才是系統(tǒng)中最大的漏洞?!?/p>
因此,對于身處數(shù)字信息化大爆炸時代的從業(yè)者,需銘記的是:技術(shù)本無罪,不要讓其為人性的罪惡去買單。
]]>