第一篇:微軟研究院面試題目
1、猴子過河,ABC三個大猴,各自的孩子是abc三小猴。河上只有一小舟,每次最多坐2猴,岸上和船上,如果某小猴的家長不在,會被其他的大猴吃掉,ABCa會劃船,如何過河。
2、10個箱子,每箱10瓶水,每瓶重一斤,但是有一箱次品,每瓶僅重9兩,如何稱一次找出次品箱。解答:
1、題意有讓人誤解的地方,應當理解為上下碼頭交接的時候是不允許吃的,否則此題無解。(如果有解請寫信告訴我)如此,則充分利用a的不對稱性。反復畫一下就可以。我差不多5分鐘搞定。
2、依次10、9、8、7、6……共取55瓶稱一下,如果重量為54.9則為剩9瓶的箱;依此類推。2分鐘搞定。來源:博客中國
第二篇:微軟面試題目
第一組
1.燒一根不均勻的繩,從頭燒到尾總共需要1個小時。現在有若干條材質相同的繩子,問如何用燒繩的方法來計時一個小時十五分鐘呢?
2.你有一桶果凍,其中有黃色、綠色、紅色三種,閉上眼睛抓取同種顏色的兩個。抓取多少個就可以確定你肯定有兩個同一顏色的果凍?
3.如果你有無窮多的水,一個3公升的提捅,一個5公升的提捅,兩只提捅形狀上下都不均勻,問你如何才能準確稱出4公升的水?
4.一個岔路口分別通向誠實國和說謊國。來了兩個人,已知一個是誠實國的,另一個是說謊國的。誠實國永遠說實話,說謊國永遠說謊話。現在你要去說謊國,但不知道應該走哪條路,需要問這兩個人。請問應該怎么問?
5.12個球一個天平,現知道只有一個和其它的重量不同,問怎樣稱才能用三次就找到那個球。13個呢?(注意此題并未說明那個球的重量是輕是重,所以需要仔細考慮)
6.在9個點上畫10條直線,要求每條直線上至少有三個點?
7.在一天的24小時之中,時鐘的時針、分針和秒針完全重合在一起的時候有幾次?都分別是什么時間?你怎樣算出來的?
8.怎么樣種植4棵樹木,使其中任意兩棵樹的距離相等?
第二組
1.為什么下水道的蓋子是圓的?
2.中國有多少輛汽車?
3.將汽車鑰匙插入車門,向哪個方向旋轉就可以打開車鎖?
4.如果你要去掉中國的34個省(含自治區、直轄市和港澳特區及臺灣省)中的任何一個,你會去掉哪一個,為什么?
5.多少個加油站才能滿足中國的所有汽車?
6.想象你站在鏡子前,請問,為什么鏡子中的影象可以顛倒左右,卻不能顛倒上下?
7.為什么在任何旅館里,你打開熱水,熱水都會瞬間傾瀉而出?
8.你怎樣將Excel的用法解釋給你的奶奶聽?
9.你怎樣重新改進和設計一個ATM銀行自動取款機?
10.如果你不得不重新學習一種新的計算機語言,你打算怎樣著手來開始?
11.如果你的生涯規劃中打算在5年內受到獎勵,那獲取該項獎勵的動機是什么?觀眾是誰?
12.如果微軟告訴你,我們打算投資五百萬美元來啟動你的投資計劃,你將開始什么樣商業計劃?為什么?
13.如果你能夠將全世界的電腦廠商集合在一個辦公室里,然后告訴他們將被強迫做一件事,那件事將是什么?
第三組
1.你讓工人為你工作7天,回報是一根金條,這個金條平分成相連的7段,你必須在每天結束的時候給他們一段金條。如果只允許你兩次把金條弄斷,你如何給你的工人付費?
2.有一輛火車以每小時15公里的速度離開北京直奔廣州,同時另一輛火車每小時20公里的速度從廣州開往北京。如果有一只鳥,以30公里每小時的速度和兩輛火車同時啟動,從北京出發,碰到另一輛車后就向相反的方向返回去飛,就這樣依次在兩輛火車之間來回地飛,直到兩輛火車相遇。請問,這只鳥共飛行了多長的距離?
3.你有四個裝藥丸的罐子,每個藥丸都有一定的重量,被污染的藥丸是沒被污染的藥丸的重量+1。只稱量一次,如何判斷哪個罐子的藥被污染了?
4.門外三個開關分別對應室內三盞燈,線路良好,在門外控制開關時候不能看到室內燈的情況,現在只允許進門一次,確定開關和燈的對應關系?
5.人民幣為什么只有1、2、5、10的面值?
6.你有兩個罐子以及50個紅色彈球和50個藍色彈球,隨機選出一個罐子,隨機選出一個彈球放入罐子,怎么給出紅色彈球最大的選中機會?在你的計劃里,得到紅球的幾率是多少?
7.給你兩顆6面色子,可以在它們各個面上刻上0-9任意一個數字,要求能夠用它們拼出任意一年中的日期數值
第四組
第一題.五個海盜搶到了100顆寶石,每一顆都一樣大小和價值連城。他們決定這么分: 抽簽決定自己的號碼(1、2、3、4、5)
首先,由1號提出分配方案,然后大家表決,當且僅當超過半數的人同意時,按照他的方案 進行分配,否則將被扔進大海喂鯊魚
如果1號死后,再由2號提出分配方案,然后剩下的4人進行表決,當且僅當超過半數的人同意時,按照他的方案進行分配,否則將被扔入大海喂鯊魚
依此類推
條件:每個海盜都是很聰明的人,都能很理智地做出判斷,從而做出選擇。
問題:第一個海盜提出怎樣的分配方案才能使自己的收益最大化?
第二題.一道關于飛機加油的問題,已知:
每個飛機只有一個油箱,飛機之間可以相互加油(注意是相互,沒有加油機)
一箱油可供一架飛機繞地球飛半圈,問題:
為使至少一架飛機繞地球一圈回到起飛時的飛機場,至少需要出動幾架飛機?(所有飛機從同一機場起飛,而且必須安全返回機場,不允許中途降落,中間沒有飛機場)
第三題.汽車加油問題
一輛載油500升的汽車從A開往1000公里外的B,已知汽車每公里耗油量為1升,A處有無窮多的油,其他任何地點都沒有油,但該車可以在任何地點存放油以備中轉,問從A到B最少需要多少油
第四題.擲杯問題
一種杯子,若在第N層被摔破,則在任何比N高的樓層均會破,若在第M層不破,則在任何比M低的樓層均會破,給你兩個這樣的杯子,讓你在100層高的樓層中測試,要求用最少的測試次數找出恰巧會使杯子破碎的樓層。
第五題.推理游戲
教授選出兩個從2到9的數,把它們的和告訴學生甲,把它們的積告訴學生乙,讓他們輪流猜這兩個數
甲說:“我猜不出”
乙說:“我猜不出”
甲說:“我猜到了”
乙說:“我也猜到了”
問這兩個數是多少
第六題.病狗問題
一個住宅區內有100戶人家,每戶人家養一條狗,每天傍晚大家都在同一個地方遛狗。已知這些狗中有一部分病狗,由于某種原因,狗的主人無法判斷自己的狗是否是病狗,卻能夠分辨其他的狗是否有病,現在,上級傳來通知,要求住戶處決這些病狗,并且不允許指認他人的狗是病狗(就是只能判斷自己的),過了7天之后,所有的病狗都被處決了,問,一共有幾只病狗?為什么?
第七題.U2合唱團在17分鐘內得趕到演唱會場,途中必需跨過一座橋,四個人從橋的同一端出發,你得幫助他們到達另一端,天色很暗,而他們只有一只手電筒。一次同時最多可以有兩人一起過橋,而過橋的時候必須持有手電筒,所以就得有人把手電筒帶來帶去,來回橋兩端。手電筒是不能用丟的方式來傳遞的。四個人的步行速度各不同,若兩人同行則以較慢者的速度為準。BONO需花1分鐘過橋,EDGE需花2分鐘過橋,ADAM需花5分鐘過橋,LARRY需花10分鐘過橋,他們要如何在17分鐘內過橋呢?
第八題.監獄里有100個房間,每個房間內有一囚犯。一天,監獄長說,你們獄房外有一電燈,你們在放風時可以控制這個電燈(熄或亮)。每天只能有一個人出來放風,并且防風是隨機的。如果在有限時間內,你們中的某人能對我說:“我敢保證,現在每個人都已經至少放過一次風了。”我就放了你們!問囚犯們要采取什么策略才能被監獄長放掉?如果采用了這種策略,大致多久他們可以被釋放?
第五組
1.某手機廠家由于設計失誤,有可能造成電池壽命比原來設計的壽命短一半(不是沖放電時 間),解決方案就是免費更換電池或給50元購買該廠家新手機的折換券。請給所有已購買的 用戶寫信告訴解決方案。
2.一高層領導在參觀某博物館時,向博物館館員小王要了一塊明代的城磚作為紀念,按國家 規定,任何人不得將博物館收藏品變為私有。博物館館長需要如何寫信給這位領導,將城磚 取回。
3.營業員小姐由于工作失誤,將2萬元的筆記本電腦以1.2萬元錯賣給李先生,王小姐的經理
怎么寫信給李先生試圖將錢要回來?
4.給你一款新研制的手機,如果你是測試組的組長,你會如何測試?
5.如何為函數int atoi(const char * pstr)編寫測試向量?
第六組
1.鏈表和數組的區別在哪里?
2.編寫實現鏈表排序的一種算法。說明為什么你會選擇用這樣的方法?
3.編寫實現數組排序的一種算法。說明為什么你會選擇用這樣的方法?
4.請編寫能直接實現char * strcpy(char * pstrDest,const char * pstrSource)函數功能的代碼。
5.編寫反轉字符串的程序,要求優化速度、優化空間。
6.在鏈表里如何發現循環鏈接?
7.給出洗牌的一個算法,并將洗好的牌存儲在一個整形數組里。
8.寫一個函數,檢查字符是否是整數,如果是,返回其整數值。(或者:怎樣只用4行代碼
9.給出一個函數來輸出一個字符串的所有排列。
10.請編寫實現void * malloc(int)內存分配函數功能一樣的代碼。
11.給出一個函數來復制兩個字符串A和B。字符串A的后幾個字節和字符串B的前幾個字節重疊。
12.怎樣編寫一個程序,把一個有序整數數組放到二叉樹中?
13.怎樣從頂部開始逐層打印二叉樹結點數據?請編程。
14.怎樣把一個鏈表掉個順序(也就是反序,注意鏈表的邊界條件并考慮空鏈表)?--
15.請編寫能直接實現int atoi(const char * pstr)函數功能的代碼。
第一組題答案:
1)三根繩,第一根點燃兩端,第二根點燃一端,第三根不點
第一根繩燒完(30分鐘)后,點燃第二根繩的另一端,第二根繩燒完(45分鐘)后,點燃第三根繩子兩端,第三根繩燒完(1小時15分)后,計時完成2)根據抽屜原理,4個
3)3升裝滿;3升-〉5升(全注入);3升裝滿;3升-〉5升(剩1升);5升倒掉;3升-〉5升(注入1升);3升裝滿;3升-〉5升;完成(另:可用回溯法編程求解)
4)問其中一人:另外一個人會說哪一條路是通往誠實國的?回答者所指的那條路必然是通往說謊國的。
5)12個球:
第一次:4,4 如果平了:
那么剩下的球中取3放左邊,取3個好球放右邊,稱:
如果左邊重,那么取兩個球稱一下,哪個重哪個是次品,平的話第三個重,是次品,輕的話同理
如果平了,那么剩下一個次品,還可根據需要稱出次品比正品輕或者重
如果不平:
那么不妨設左邊重右邊輕,為了便于說明,將左邊4顆稱為重球,右邊4顆稱為輕球,剩下4顆稱為好球
取重球2顆,輕球2顆放在左側,右側放3顆好球和一顆輕球
如果左邊重
稱那兩顆重球,重的一個次品,平的話右邊輕球次品
如果右邊重
稱左邊兩顆輕球,輕的一個次品
如果平
稱剩下兩顆重球,重的一個次品,平的話剩下那顆輕球次品
13個球:
第一次:4,4,如果平了
剩5顆球用上面的方法仍舊能找出次品,只是不能知道次品是重是輕
如果不平,同上
6)
o o o
o o o
o o o
7)
23次,因為分針要轉24圈,時針才能轉1圈,而分針和時針重合兩次之間的間隔顯然>1小時,它們有23次重合機會,每次重合中秒針有一次重合機會,所以是23次
重合時間可以對照手表求出,也可列方程求出
8)
在地球表面種樹,做一個地球內接的正四面體,內接點即為所求
第二組 無標準答案
第三組
1.分成1,2,4三段,第一天給1,第二天給2取回1,第3天給1,第4天給4取回1、2,第5天給1,第6天給2取回1,第七天給1
2.求出火車相遇時間,鳥速乘以時間就是鳥飛行的距離
3.四個罐子中分別取1,2,3,4顆藥丸,稱出比正常重多少,即可判斷出那個罐子的藥被污染
4.三個開關分別:關,開,開10分鐘,然后進屋,暗且涼的為開關1控制的燈,亮的為開關2控制的燈,暗且熱的為開關3控制的燈
5.因為可以用1,2,5,10組合成任何需要的貨幣值,日常習慣為10進制
6.題意不理解...*_*
7.012345 0126(9)78
第四組 都是很難的題目
第一題:97 0 1 2 0 或者 97 0 1 0 2(提示:可用逆推法求出)
第二題:3架飛機5架次,飛法:
ABC 3架同時起飛,1/8處,C給AB加滿油,C返航,1/4處,B給A加滿油,B返航,A到達1/2處,C從機場往另一方向起飛,3/4處,C同已經空油箱的A平分剩余油量,同時B從機場起飛,AC到7/8處同B平分剩余油量,剛好3架飛機同時返航。所以是3架飛機5架次。
第三題:需要建立數學模型
(提示,嚴格證明該模型最優比較麻煩,但確實可證,大膽猜想是解題關鍵)
題目可歸結為求數列 an=500/(2n+1)n=0,1,2,3......的和Sn什么時候大于等于1000,解得n>6 當n=6時,S6=977.57
所以第一個中轉點離起始位置距離為1000-977.57=22.43公里
所以第一次中轉之前共耗油 22.43*(2*7+1)=336.50升
此后每次中轉耗油500升
所以總耗油量為7*500+336.50=3836.50升
第四題:需要建立數學模型
題目可歸結為求自然數列的和S什么時候大于等于100,解得n>13
第一個杯子可能的投擲樓層分別為:14,27,39,50,60,69,77,84,90,95,99,100 第五題:3和4(可嚴格證明)
設兩個數為n1,n2,n1>=n2,甲聽到的數為n=n1+n2,乙聽到的數為m=n1*n2
證明n1=3,n2=4是唯一解
證明:要證以上命題為真,不妨先證n=7
1)必要性:
i)n>5 是顯然的,因為n<4不可能,n=4或者n=5甲都不可能回答不知道
ii)n>6 因為如果n=6的話,那么甲雖然不知道(不確定2+4還是3+3)但是無論是2,4還是3,3乙都不可能說不知道(m=8或者m=9的話乙說不知道是沒有道理的)
iii)n<8 因為如果n>=8的話,就可以將n分解成 n=4+x 和 n=6+(x-2),那么m可以是4x也可以是6(x-2)而4x=6(x-2)的必要條件是x=6即n=10,那樣n又可以分解成8+2,所以總之當n>=8時,n至少可以分解成兩種不同的合數之和,這樣乙說不知道的時候,甲就沒有理由馬上說知道。
以上證明了必要性
2)充分性
當n=7時,n可以分解成2+5或3+4
顯然2+5不符合題意,舍去,容易判斷出3+4符合題意,m=12,證畢
于是得到n=7 m=12 n1=3 n2=4是唯一解。
第六題:7只(數學歸納法證明)
1)若只有1只病狗,因為病狗主人看不到有其他病狗,必然會知道自己的狗是病狗(前提是一定存在病狗),所以他會在第一天把病狗處決。
2)設有k只病狗的話,會在第k天被處決,那么,如果有k+1只,病狗的主人只會看到k只病狗,而第k天沒有人處決病狗,病狗主人就會在第k+1天知道自己的狗是病狗,于是病狗在第k+1天被處決
3)由1)2)得,若有n只病狗,必然在第n天被處決
第七題:(提示:可用圖論方法解決)
BONO&EDGE過(2分),BONO將手電帶回(1分),ADAM&LARRY過(10分),EDGE將手電帶回(2分),BONO&EDGE過(2分)2+1+10+2+2=17分鐘
第八題:
約定好一個人作為報告人(可以是第一個放風的人)
規則如下:
1、報告人放風的時候開燈并數開燈次數
2、其他人第一次遇到開著燈放風時,將燈關閉
3、當報告人第100次開燈的時候,去向監獄長報告,要求監獄長放人......按照概率大約30年后(10000天)他們可以被釋放
第五組無標準答案
第六組部分題參考答案:
第三篇:微軟面試經歷中英文面試
微軟面試經歷中英文面試
微軟面試經驗一:
上周三晚上,我收到了ATC的面試通知(郵件)周四晚上,整整復習了一天,直到晚上2點鐘,主要看數據結構,重點看了排序,檢索,二叉書,自己還想了想怎么存儲一個二叉樹到文件中,怎么從文件恢復(這個據說今年考過),怎么不用遞歸實現前序,后序,中序遍歷。圖論部分稍微看了一下。結果,上周五(19日),我參加ATC的面試時候,我看的一個都沒有考到2,慘啊。第二輪的時候,考官的問題是:怎么實現在一個圖中,判斷能否沿所有邊走一遍且只走一遍,如果能夠,寫出走法。需要自己定義數據結構和寫算法。其實,這個就是著名的七孔橋問題,反正我當時一下就有點懵了,幸虧考官給我一些提示,后來還簡化了一些條件和要求,但是我自己感覺答的不是很好。不過,幸運的是,我還是能參加了下午的面試,只有一個人面試,呵呵。現在等待結果中。。
總之,大家還是看看圖論的一些東西吧,當然二叉樹還是要看的。至于其它一些編程題,主要要考慮編程習慣,邊界條件(保證程序正確),以及算法效率,估計都得靠臨場發揮了。就像版上所說的,自己不會的時候,一定要和面試官多聊,試探性的說出自己想法,他總不會讓你往一個明顯錯誤的方向走下去吧1
微軟面試經驗二:
ATC PM 面經 首先聲明,我是被人推薦面試去的。不要和現在的校園招聘混淆了,面試的流程應該是不一樣的。感謝推薦我的Darren.Wang,這位ee的師兄是我的伯樂,雖然我們就見過2面。注:以下的面試都是全英文,就最后報告offer的是中文。ok,首先是電面,9月中旬,是hr打過來的,問了一些基本問題,問了簡歷上的問題,然后問我最熟悉的編程語言是什么,我大言不慚的說c#。于是她問了我3個c#的問題,都是概念性問題,期間聽到有用筆在記錄什么東西(汗)。
分別是thread pool, overload/overri de, 還有一個忘記了。大概就是看你能不能流利的說出來的把。這一輪的重點大概就是英語。最后告訴我給我一個on-site interview, 過了一周左右,通知了我是在10-17號面試,天,一個月。折磨阿,早上7.45??折磨阿基本上是從10月12號之后開始準備的,在此推薦一個pdf,programer interview,有中文版。17號早上6.30點鐘起床,東川路么,很近的。但是我還是打了車。在上車之前的準備工作有:上廁所,吃半塊德福的白巧克力,喝了一點水。其他都帶著上車了。7。30到了,5個人,3個工作的,一個intern,還有一個我 8點開始面試,一共5輪,2輪中國人,3輪外國人,遺憾的我一個名字都沒記住。每輪 1個小時 1面,很nice的gg,英語說得很慢,明顯照顧我。先問了問簡歷的問題,然后開始做題,首先是“TestString“->”StringTest"的問題,而且第二個單詞是給定位置的,用區間反轉解之。然后是一個隨機數字的數組,求和是100的兩個數字位置,用兩邊夾逼解之。這兩個都要寫detail的程序的。然后問了一道open question,怎么樣在擁有很多書的情況下把書擺的適合查找,而且增加的時候也要保持查找的順序。后來覺得這道題就是數據庫的文件系統怎么設計么。還不用考慮刪除,用物理索引解之。
2面,很有氣質的gg,感覺是里面的資深工程師。先給我解釋了一下sde,sdet,pm的區別。然后問了我簡歷上的問題。編程上問了我兩個sorted single list的merge問題。讓我寫代碼。我是真的從上完數據結構課就沒寫過c 的東西了,居然把節點指針寫成了in t *。費了半天勁終于寫好了。結果指針移位的時候多用了個temp指針,被指出,道歉,改正。然后繼續討論sde,sdet,pm的選擇問題。真的是很有風度,恩。3面,很有趣的foreign gg,感覺是開發部的lead。先簡單問了我實習的問題,然后問了我畢業論文的情況。令我驚訝的是我畢業論文寫的是本體的進化,他居然懂得。緊張阿,不是遇到這方面的大牛了八。還好沒有繼續問下去(雖然我不是沒做,但總是心虛阿)。然后出了一道我至今見的最巧妙的面試題(大概是我孤陋了)。
首先,寫個power(x, y)的test cases,就是x的y次方拉。然后,用循環實現,不用循環實現(用遞歸),遞歸費內存如何解決。我到寫遞歸的時候已經暈了,test case 寫了7,8個,自己寫程序的時候每個都要注意,真正的test case driven...這面感覺最不好。4面,很pp的foreign jj,是test lead(我問的,確定)。先問我sde,sdet,pm有沒有講過,我想當哪個。我說sde,pm把,sdet不干。后來最后才知道她是test lead。汗阿。首先問了我一個設計問題,讓我設計一個媒體播放器,越細越好。我一頓mvc,3層架構,設計模式,插件結構,哈哈,我強項阿。然后吹了一通我的設計的健壯,完整,擴充。恩。然后她讓我寫個算法,一個隨機整形數組,找出里面第一對相同的item。我當時吹得太興奮了,頭腦還是處于結構性狀態中,于是只想出了排序的nlogn,沒有能做出n的算法(但是我用空間換時間的辦法得到了n,就是開一個65563的數組。)。
4面結束 5面,很有氣質的foreign jj,是unit manager。先問我sde,sdet,pm選哪個,我說sde,pm.她說為什么每個人都是sde。我辯解一通。然后她給了我一個case,說如果一個世界冠軍給你1/4 billion dollar讓你造一臺自行車,但是輪子是別人造的,而且要time-critical你怎么辦。我當時想,這造火箭都出來了。
我用標準流程應對之,plan,采購,評估。,后,她繼續:如果造輪子的說好了周二給你又沒給怎么辦。我說首先通知客戶,這是 integrity問題。然后push那邊快點,實在不行就換人!反正老子錢多。問題1結束。問題 2:假設現在你有幾個best developer,你想做一個什么軟件?并解釋,設計它。這真是天賜良機阿,我前一周剛和allen討論過要做一個personal的高級收藏夾一樣的東西。于是略作思考,提升至personal knowledge center的級別一頓猛說,激動阿。感覺那個manager 跟你說話就能感染你,讓你很有passion。基本上說完,中間她就提了一兩個問題,還是我接下來就要說得,問題2結束。
離開atc.感覺后兩輪就是按照pm來面試我。等待睡不好,吃不好。聽到手機響就緊張。周五我一個好久不見的高中同學過來了,陪他了一天,期間作了一點心理咨詢。送他去車站的時候,電話響了,通知我給我pm的offer。至此我job的**面試結束。總結一下:英語是基礎,盡量做到能流暢的表達自己的意思,我覺得后兩輪我能通過有很大部分是因為我的想法充分表達出來
了。簡歷是過去,要有漂亮的實習和獎學金。前者是你證明自己能力的最好方式,后面是補充。熱情是必須,當你表達出你對這個job的熱情并且面試官也很high的時候,offer就來了。恩,bless all who will have their interview and wish they get what they want.微軟面試經驗三:
12月上旬面的(遲了點,希望對后面的人有一點點用,MS看見還有人要面)在美羅城體會上上下下的(可不是享受啊!每次上上下下都好緊張啊,誰讓我不是牛人呢?DDMM們一定要好好學習啊,基礎課是很重要的,唉,從前別人跟偶這么說的時候偶也是左耳進右耳出,但是基礎課(特別是DATA STRUCTURE)真的非常重要(真的不是我羅嗦啊,實在太重要了)似乎面試官都是從北京飛來的,(包括HR JJ,PP哦),除了上海的DIRECTORHR JJ告知是3+1輪,不過實際面了3+2輪(3輪后淘汰或者是直接錄取(這個偶不知道)了1/4,呵呵,其實就是1個人拉,一共才4個人那天)偶面的POSITION是SDET(不敢面SDE,本人實在太弱)
第一輪:自我感覺還比較良好,問了STATIC和POINTER的一點東東,然后是一個ITOA的實現+如何測試,然后問了二叉排序樹中如何刪除一個結點第二輪:讓偶寫那個刪除結點的CODE,寫的亂七八糟,錯誤多多,被強烈BS,不過MS的人都很和藹,說還有機會第三輪:是ATC的一個VICE PRESIDENT,先問了些問題(非技術),智力題好牛(應該說是我弱),答不出,和藹的告訴偶:今天辛苦了,感謝來應聘!(智力題是12球未知輕重問題)RP爆發了一下,竟然在如此情況下還有下面的2輪,感謝黨,感謝**,感謝微軟 第四輪:老外出現,負2進制,循循善誘后總算答出一點,英語太差亞,有人同去學口語不?然后是寫STRCMP+如何測試,汗啊,KMP俺背不出。第五輪:BOSS出現,就是上海的DIRECTOR,頗有親和力,上來聊了會,然后出了一個WORD COUNT 的實現+TEST,還有一道智力題然后HR就告訴說結果下周一會通知,確實非常準時。周一下午就收到了。
總結一下偶的一點心得,僅供參考:千萬不要緊張,答不出不是問題。偶就是太緊張了,丟臉啊(XDJM不要BS偶啊)。答不出應該保持風度,或者請他換道題也可以。(這個感覺是面試經驗問題,偶的面試經驗確實是太少了,不過充分牛的話應該就不會遇到這個問題了(好像多嘴了,牛人應該不用看面
經?!@#$%))還有英語是真的太重要了,那里人人都是講英語的。偶就是太[被過濾],洋文這個東東啊,是一定要學好的,不僅要GOOD,還要BETTER,BEST!偶是下定決心學習口語+聽力了,望懂行的XDJM給我支個招,上什么班比較好?要自信,感覺微軟的確不是只根據你的強弱來錄用你的,我想這個也是MS的風格吧,雖然以前也有所耳聞。
第四篇:微軟亞洲研究院創始人李開復在演講
微軟亞洲研究院創始人李開復在演講(全文)
新浪科技訊11月5日“二十一世紀的計算-探索計算之源”國際學術研討會在北京國際會議中心舉行,微軟公司高級副總裁Rick Rashid博士、菲爾茲獎獲得者丘生桐博士、圖靈獎獲得者Raj Reddy博士、微軟亞洲研究院院長兼首席科學家張亞勤博士、微軟公司副總裁李開復博士等知名學者做了主題演講。新浪科技對本會議做了全程獨家直播報道。
以下為微軟亞洲研究院創始人李開復演講全文
我記得在五年前的今天是我們微軟亞洲研究院成立的時候,我曾經說過這么一句話身為在軟件界工作的人能夠在微軟工作感覺非常幸運,身為炎黃子孫,我能夠在中國工作感到非常幸運,在五年之后的今天,回顧這五年在微軟研究院的成就,看到今天多種研究結果輝煌的演示,而且見到這么多中國年輕的朋友、學生,讓我感到非常欣慰,而且非常自豪。微軟,亞洲研究院我為你們的成功感到自豪,中國,我為你未來的潛力感到自豪,中國的學生,我為能夠在中國出一點力量,幫助你們成長,感到自豪。謝謝。我從一個幸運的人變成一個自豪的人,今天我演講的題目是一個讓我工作了20多年,也感覺非常幸運,因為我有非常多好的老師。如果我們從計算機界能夠找到兩位非常有哲理的計算機教授,他們分別是兩位MIT的教授,他們曾經說過這樣的話,語音和語言是人類的一個工程,是人類的一個創作。因為在數千年前人類并沒有語言和語音這個東西,人創造發明這個東西是希望能夠通過語言來做溝通,做人際交流,因為有這樣的人際交流這樣一個習慣,這樣一個工程,希望讓機器也能夠用同樣的方法和我們溝通。計算機界上兩位非常有哲理的哲學家,兩位非常務實的專家分別是英特爾和Microsoft的創始人,他們認為過去人類為自己人際交流的工具,也將是未來人機最自然、最表達性的用戶界面的方式。所以我們可以看到的是過去這五六十年來科幻片里面用的人機的科幻界面用的都是語言和語音,而且我們能夠看到微軟、蘋果等公司對未來技術的展望,作出一些錄像讓人們對未來的展望非常樂觀,這些錄像也都是用語音的界面,現在我們來看兩個例子,第一個例子是很有名的科幻片。
這是一個70年代很有名的科幻片,在這里面計算機雖然是有會話式的交流,但是是一個非常邪惡的計算機,最后我們看到這位主人翁被會話性的計算機所謀殺了,這是一個例子。但是并不見得這種用戶界面都是邪惡的。我們看另外一個例子,這是蘋果公司非常有名的一個例子,它是非常經典的一個會話式用戶界面的創作,這里面沒有任何一個技術是真的,它只是對未來的展望。
我就放到這里,但是我們可以看到這是一個教授他在和經過新一代會話式的用戶界面他和另外一個教授進行了合作,而他有一個非常聰明得力的助手,隨時都有無限而且精確的信息能夠幫助他更好地工作。這兩個例子都是一個非常長遠、非常科幻的甚至是不可達到的一個目標。但是我們可以從這兩個例子看出來,為什么這么多人都對這樣的未來多么向往,因為我們就可以和機器有很好的溝通,能夠自己工作更有效率。所以人們不能避免地都對這個未來的前景非常看好,而且很多人對未來,包括我自己做的一些預測,而這些預測今天并沒有達到,但是從1950年MIT的校長就認為說也許十年之后我們就可以做人機的機器翻譯,1957年諾貝爾的得主就預測十年之內計算機能夠做很多工作,包括人工智能方面的預測。在1969年,這不是一個人,而是一個美國專家協會他們預測在1978年語音的輸入和輸出將成為一個自然交流的方式。在1993年,很不幸的是我做了一個預測2003年所有語音都會作為一個計算機的功能,雖然現在有很多計算機都有語音的功能,但是幾乎沒有用戶在用它。在1998年美國最受尊敬的在商業方面的一個專家組預測在2003年PC會有語音輸入的能力,而且會成為用戶界面的一個重點方向。2003年這個預測也沒有達到。所以在這些非常樂觀的人對未來的前景非常看好,做了一個非常樂觀的預測,而今天這一個又一個預測,從1950年到1998年都沒有達到,那么今天在此我們是應該對未來感到一份絕望呢?還是應該對未來有一個新的樂觀,這就是我今天想要講的主要的題目。如果我們把會話式的計算機能夠拆分出來,比較簡單的,剛才舒教授給了比較完整的圖片,如果我們簡單來看的話有三個部分,語音識別、語音理解和語音合成,這是三個最重要的部分,我們我將介紹這三個部分過去十年的進展,這十年進展有沒有給我們一些啟示我們應該是樂觀還是悲觀?
在介紹完這三個技術之后將探討是不是十年之后可以達到未來這些非常好的前景還是會有更大的挫折,我很勇敢地將再做一次對十年之后的預測,希望十年之后來到中國能夠證明這次預測比上次預測成功。首先我想講的是語音識別。語音識別在二三十年前更多人是想用專家系統的方式來模擬人聽的方式,用專家系統來做一個很好的語音識別。但是在80年代在IBM的工作更證明用下列的方法能夠得到更好的結果,基本上概念很簡單,如果X是我們講的音波,W是所有可能的詞或者是句子,要做一個語音識別系統就是要搜索所有可能的句子W,挑選一個W把這個值能夠做的越大越好,也就是說我聽到X這個音波之后,在所有的句子里要挑一個概率最高的。怎么去做這個問題呢?要把這個拆成兩各部分,可以得到這個基本上是挑選最大的值,第一個是所有的句子里面能夠產生這樣一個音波的概率有多大,再乘上每一個句子它出現的概率有多大,如果我們能夠做兩個模型,能夠很好地模擬這兩個模型的話,就做成了一個很好的語音識別系統。第一個部分就是作為的音的模型,就是我們要預測對于一個句子對于一個字它將造成每一種音波的概率有多大,而W是任何一串字它出現的概率又有多大。既然這是概率的一個模型所以就用統計的方法來優化它。怎么優化音的模型呢?就先做一個統計的模型能夠很好地模擬每個字、每個音,這每個字、每個音可以有非常細膩的細節,但是剛開始可以假設每個音、每個字有自己的模型,針對這個字、這個音會收取非常多的數據。有一句話在語音界非常出名的,就是最多的數據就是最好的數據。我們發現如果你有很好、很平衡而且很是完美的數據,反而部署得到十倍多的數據它不是很完美、很平衡的。所以多的數據能夠構成一個很好的模型參數。我們用這個數據訓練這個模型,可以再回去這個音已經做得很好了,現在能不能再收十倍的數據,做一個模型收集很多數據,根據這個數據把模型好好訓練好,然后做更大的模型,這個時候需要更多的數據,再用更大的數據訓練更大的模型,這樣源源不止,一步一步地把語音的識別做得更好。
我們也可以同樣用統計的方法來做,有一個非常簡單的每一個句子的概率就是每個字的概率相乘,當看到前兩個字,第三字出現的概率有多大,這就是它的概率了。怎么樣訓練這個東西呢?又需要很大的語量,無限大的語量,其實這是跟音的模型是一樣的。這樣讓數據模型都有一個很大的進步。語音模型達到的進步都是更多的數據加上很好的模擬來得到這樣的進步的。
其實Moore’S對語音來說是一個必須條件,而不是充分條件。當三者結合之后,我們發現摩爾定律每十八個月翻一番,所以對未來應該說帶著一種樂觀,但是不是特別樂觀的樂觀。我們樂觀因為它確實每60個可以翻一番,但是不能特別樂觀,因為它的速度不如純粹的Moore’S來的那么大。我們從微軟公司的結果可以詳細看到60個月翻一番的結果。每五年錯誤率降低一半,96年黃博士第一次在微軟演示一套新的系統,很多用戶對這個非常興奮,但是認為精確率還不夠,但是我對未來還是非常樂觀的,我們可以預測每60個月翻一番,對未來我們將有希望可以達到人的錯誤率大概是在2%左右。如果我們往前推測的話,應該在7年到10年之內有和可能近或者是達到人類識別的精準度。
第二語音的合成,我們看到的很多很好的例子,但是語音合成和語音識別是非常類似的。在80年代末90年代有另外一種方法是更合適的。其實就是一個統計的方法來做語音合成。語音合成有兩個部分,一個是前端處理,一個是后端處理。前端處理要做一個名詞或者是動詞其他詞的處理,然后斷定在什么地方停頓,怎么樣把韻律做得更好,怎么做很好的節奏、輕重等等。它會把這個信息傳給一個后端,現在我處理的這些字你要去找最好、最大、最合適的,一段一段曾經錄過的語料庫,然后找出一段段音、字、詞,讓這些串字之間做的越平滑越好。而且有很好的方法能夠評估怎么樣挑選最好的單元,怎么把單元銜接在一起,怎么樣優化他們之間的平滑度,而不是調一些參數。因為我們發現調一些參數其實和人對自然的期望并不是非常合適的。所以這和語音識別有非常大相似的地方。因為我們也是收集很大的語音庫、語料庫,在合成的時候做一個非常好的優化和挑選。當庫越大,參數越好,你的指標更接近人類對語音字的要求,你就會做到更高的質量。從82年到2001年做的1是很糟,5是非常完美的結果。現在我們放一些過去中文語音合成效果你們可以聽出來有很顯著的進步,這是82年。這就很接近人的一些表現了,但是新聞播報人員可以達到大約4.5,可以像木蘭這樣的系統2001年的還是有一些距離,但是比較接近了。純粹不要考慮理解,只要考慮到語音的識別和合成可以看到的是經過了語音的識別和合成確實有很大的進步,其實已經慢慢接近人的能力。但是并不是因為所謂的人工智能而做出來的,更是一個優化的過程、一個統計的過程做出來的。
話說回來了,雖然語音識別期望在七年能夠達到人的識別率,但是如果很多人一起講的話,語音識別系統就不行了。而且人可以做很快地學習和適應,我們聽一個人的講話只要一個音節就可以識別一個人了,而語音系統可能需要一個小時兩個小時之后才能達到。純粹靠語音識別和語音合成就已經有很多很好的應用了,在語音識別來說我們可以做聽寫的工作,我們看到了一些語音搜索的例子,還有教一個中國人怎么樣把中國人教的更好,或者是美國人怎么把中文講得更好,或者是小孩怎么學好外語,這些都是很好的應用。同樣語音合成也有很多很好的應用。比如說做一個個性化的語音合成,這次我來中國這邊語音組給了我一個小小的禮物,我現在把這個禮物放給你們聽。就是把我的聲音加上一個很標準的北京腔調。
下面我們談的是比較困難的問題自然語言的理解,其實是結合了多種問題,英文BOOK可以當做書也可以當做訂購票,但是怎么知道在什么情況下用什么語法的?還有語意。另外還有需要很聰明的能夠結合多種的知識,如果BOOK作為名詞和動詞哪一個概率比較大,這就要看哪個網站了。如果知道個人住在什么地方,喜歡什么地方都會影響語音理解,這些都是一些需要結合的因素。
這些聽起來是很困難的,但是如果能夠在自然語言理解上面挑選一個領域,不要奢求做一個像人一樣的自然語言理解,如果只挑選一個領域,收錄很多語料,剛才語音識別的方式完全用在自然語音理解上面。有一個音波X進來,同樣也可以是一個W進來,M是語意,我要求的是給我這這一串字最大可能的語意是哪個,最后需要訓練兩個模型,第一個模型是當我有這個語意的時候,每一種可能表達句子的概率是多大。第二是每一種語意的概率有多大,回到剛才訂票的例子就可以看到,我們對于一個BOOK是動詞或者是名詞的概率有多大,或者是要定某一種票和另一種票概率有多大,都可以從已存的語料上求出來。如果我們是做一個領域的,而且能夠收集到很多數據,完全可以做到非常好的語音的理解。但是人真正很深的理解是非常非常廣、非常的。甚至今天看起來機器是不能達到的。因為要把不同來源的知識能夠結合起來,而且人的理解不在一個領域,而是可以跨領域。就像我今天做這個演講,如果突然加上一句今天油條很好吃,各位都能懂我講什么,但是和訂票系統講的話,就不行了。所以今天看來是沒有解決的方式。什么是合理的什么是不合理的,這對機器來說也是很困難的。還有幽默感的問題等等這些都是人所具有的,但是可以說今天完全不知道怎么樣讓機器有這樣的一個理解、一個智慧。所以真正說AI能夠和人一樣的智能,當我們解的AI的問題之后這些問題都解了。但是解決AI的問題可能是遙遙無期的,可能在這一代、下一代、很多代之后都不知道能不能夠解決的。
雖然很大的問題很難解決,但是在過去四十年中,如果很宏觀來看其實都是有很大的進步的。為什么我們總是十年,為什么過去的預測都不正確,我們還敢不敢再做預測。我認為有幾個很重要的事情,一個因為技術還不成熟,當你做一個演示的時候看起來技術很好,但是真正做產品就不是那么回事了。當你沒有過去的數據做未來的推測是很危險的事情。第二個是科幻片對人們有一個非常高的期望,期望一高要達到就很困難了。所以我們現在做的工作就是給很低的期望而超過它。還有一件事做DEMO是很漂亮的,但是只有一些句子能夠做得很好,并不是能夠馬上成為產品化的工作。當一個演示成為產品的過程還有是用戶要需要它,用戶要愿意改變他們過去的一些習慣。另外還要知道開發新的語音的應用要花多少代價,有多少回報,有沒有足夠的商業價值。
我認為今天我們學到了很多教訓,但是今天看來遠景和過去是不一樣的今天我認為技術慢慢達到了成熟,而且我們學多了很多教訓。第一個教訓就是不要亂做預測,尤其如果你沒有過去的數據能夠證實你的預測是合理的。第二數據的力量是無窮的。第三我們知道的不要期望一次徹底地改變所有的事情,一步步地改變世界,一個個領域地來做是非常合理的。而且我們經過數據、經過努力的工作,能夠得到很好的應用也是很值得的工作,雖然它不見得是最高科技的發明。還有不要去做一些非常科幻、未來的一些應用。而要開始做用戶愿意做的事情,要挑選一些真正有商機的一些可能。如果今天看有什么樣商機的可能?下列是幾個可能的方向,第一個是在PC上做應用軟件,第二是做聽寫,第三是把會議做一個很精準的音字轉換,第四是殘障人士手不方便用的時候語音是很好的方法,第五個是行動上,最后一個是呼叫的時候做很好的語音的工作。如果我們看有沒有用戶需要它?除了語音,有沒有別的好的方法,市場需不需要它,還有技術是不是足夠成熟?如果我們看這些方面的話,在Telephone上面有最大的機會。
我們在這個錄像里面看到的是在移 動和電話環境之下能夠做到很好的應用。現在我想很迅速做兩個產品的演示,這兩個演示是實際的產品,而不只是研究的一些結果。第一個演示是我們剛剛看到電話上的應用,我們公司在昨天推出了一個新的產品,這也是一個電話。我現在做另外一個例子,這個例子能夠幫我們找到很好的地圖和開車的方向,這是在微軟附近的一個體育球場,如果要開去的話可以看看怎么樣開是最好的路,它可以給我怎么樣開車的路線,這個演示到此為止。我們現在利用語音能夠隨時隨地查詢我們要走的方向。
這是我對三年的一個展望,如果我們對三年看起來電話對行動、對殘障人士特別看好,我想再過三年之后慢慢就會發現有更多在電話方面更主流的一些應用,比如說隨時隨地可以搜獲你所有的信息,包括E—mail等等,我們也期望所有的電話都有語音的能力。我們會發現聽寫可能在五年之后慢慢接近人的識別能力,也會有更多的人使用它。我希望能夠看到語音不僅成為一個主流,而且成為一個核心的角色,而且我們也會發現在那個時候可以慢慢做到一個主流的狀態,我希望剛剛看到蘇教授一些例子能夠在2010年做到一些代理式的用戶界面。當你告訴你的機器要達到什么樣的目標,讓它一步步地去做這些工作。在十年之后,我想能夠看到蘇教授的一個例子,這也是比較困難的工作,我們希望能夠在家庭的使用,比如說電視,甚至在廚房語音都能夠使用。但是這些方面需要用戶做更大的轉變,能夠接受這樣的技術。我希望語音在十年之后能夠成為一個部分,我并不認為它會成為一個主要的用戶界面,但是成為用戶界面主要的部分之一。
前三個電話、設備和PC是今天我們考慮到語音的使用方式,其實未來語音當中的數據也是非常重要的一個方向,慢慢地我想我們可以搜索我們自己所錄的語音,再未來我們可以做一些真的能夠把開會的過程很精準地錄下來,所以我希望在下十年能夠看到這一系列令人興奮的應用,他們是在一個領域,許多數據進步,在摩爾定律幫助之下能夠完成的任務。語音確實能夠得到摩爾定律的幫助,但是我們不僅需要很快的PCU,也需要很多數據和更好的算法,我們希望能夠在十年之內能夠在語音合成、語音識別達到人的能力。但是語言的理解是更難的一個問題,我不認為在短的時間我們有可能解決不分領域的自然語言理解,也不能夠達到真正的人類自然語言理解的程度。但是在針對某個領域或者是某幾個領域,我認為在兩到三年之內我們會看到很多電話和移 動的和殘障人士的應用,而在七年到十年我們的機會是更大的,包括很聰明助理式的服務,包括搜索開會的程序,希望語音不僅是在電話一些必須要用語音的設備上,而是可以在每一個機器,真正能夠做到在任何地方任何時間任何方式來使用語音。
第五篇:微軟stb實習面試感受
微軟stb實習面試感受
----05本AubinXia
1.引言:
在寫這篇文章前慎之又慎,查了好多網上類似文章的寫法,總結了一下。是 這樣的,身為軟件學院的一分子,自然有義務幫助每個身邊的朋友進入好的公司,但是作為半個微軟員工,為微軟帶來利益也是我應做的。我很相信軟院同學的實 力,但是如果我的文章對于面試的細節挖掘得過深,探討了過多技巧性的問題,顯然是不利于微軟公司招到真正優秀的人才,而且把面試細節完全公開出來個人覺得 不是很道德。畢竟這是一篇公開出來的文章,而且署了名。
所 以,想了許久,決定采用這樣的寫法,本文以面試經過的形式寫就,對于面試的詳細細節不會探討過深(說實在話沒什么好探討的,面過一次就知道了),但是重心 卻是放在由此引出的對于一個人需要努力的各個方面,至于技巧,大家完全可以推敲出來,但卻是建立在實力的基礎上。我相信這種寫法既符合軟件學院人才培養的 長遠目標,更加有利于同學們的長遠發展,又符合微軟公司的利益。從這個角度來講,本文更適合于06、07的同學。2.STB簡介:
微軟服務器與開發工具事業部,原來隸屬于atc上海(微軟亞洲工程院),于05年改制單獨成立為一個新事業部,近年來發展迅速,其員工由05年20多人,已經擴充至200多人,并將繼續擴大規模。據說,秋天將要搬到微軟上海研發基地中,屆時,GTSC/MSN/STB,貌似都要集中到一起。聽說是這樣。該事業部致力于為微軟用戶提供高性能計算、互連系統、系統配置管理等方面的核心產品和技術,同時,全面參與家庭和中、小型企業服務器、安全與訪問、數據平臺和開發工具等服務器及開發工具等的研發工作。
反正以上我不是很懂,不過應該是很有意思的。我唯一知道的,該事業部是參與Visual Studio和SqlServer開發的(這應該就是名字中“開發工具”的由來吧),所以應該會非常有趣的說。
3.注意基本品質的培養
第一次電面很不好意思的說,前前后后麻煩了HR姐姐4次,因為前3次都不方便。這里對微軟HR姐姐致敬一個,真是耐心!贊!英文自我介紹,5年職業規劃,一道技術性小題目,考察多線程同步的理解,不難的。還有對微軟的理解,各方面。
這里考察一個人的基本品質。
首先,要學會表達自己,第一個問題就是英文自我介紹。用萬老師的話來說,就是要學會“秀”。這個表達上的問題,已經是老話題了,但是總有很多同學表達能力 欠缺,包括我在內的。總結一下,問題的根源在于自己不夠自信。這是同中國國情相關的。但是進入大學之后,培養自信是很重要的一個方面,要當成一門很重要的 課程來修。要學會自己獨立解決問題,擺脫依賴心理,能夠對一個問題給出自己的判斷。平時我們多注意觀察一下獨立性很強的人,就會發現其實這是一種狀態,一 種生活狀態。當你達到這種狀態之后,就會擁有很多品質,比如堅毅、果斷、善于言辭,甚至頭腦也變得靈活。事實證明,一個人如果多注意多培養,完全可以變成 一個很自信的人,但關鍵是要花心思,每個人都有不同的方法,但是只要堅持下來,自信是完全可以被征服的。
其次,這里有一個職業規劃的問題。其實大家查一下微軟的信息,會發現微軟培養員工的體制里面,職業規劃是一個重要的組成部分。為什么呢?因為不管人生哪一 個階段,目標和計劃都是促進一個人發展的強有力動力。這里我可以說的就是要告訴學弟學妹們重視目標和計劃的重要性。以我為例咯,我對此感觸還是很深的,說 實在話我是一個反應很慢的人,或許金牛座的人的通病哈哈,所以之前的我經常走在別人的后面,沒辦法,我只好定下詳細的規劃,遠至幾年,近至最近幾個小時要 發生的事,我比較習慣于分析任何一件事的所有可能性,然后在事發之前做出選擇,之后你就會發現很多事情其實都在你的控制之中,這種感覺很COOL,真的。目標和計劃不能百分百有效地督促你,但是他可以讓你知道你自己在做什么,并采取措施,即使你墮落,你也很清楚的知道你自己在墮落,程度有多深。我比較抵制得一種生活狀態就是沒有目標、沒有計劃、無聊混日子那種,并美其名曰:輕松享受生活還有什么80后 的流行生活等等。我個人覺得完全就是無知和逃避生活借口的產物。其實這種生活真的很享受么?有很多人經常會發現自己沒事情做無聊得想撞墻吧,然后突然事情 急了,根本已經沒時間,突然壓力巨大無比,然后再慨嘆:“做人真煩!”,繼續想撞墻。我比較欣賞的生活狀態至少可以讓我很充實,玩的時候也玩的很盡興,真 的充滿樂趣。
然后呢,就是那個技術上的小問題了。這個問題的回答被HR表揚了,哈哈。是一個JAVA中的多線程和同步的問題,關于這個問題我回答的比較深,把JAVA歷史上的同步機制都挖了出來,并分析其解決方案的優缺點,說了很多,怪不得HR姐姐開心了。關于技術上的問題,其實是治學了。這也是一個老話題,我這個人有個毛病,老師講東西給我聽,我總是聽不進去,我很抗拒從外面灌輸給我的東西,我理想中的學習狀態是這個樣子,探索式的自學,遇到很感興趣的問題或者是比較艱深的東西再找個老師探討。所以在這里對07同 學提的一個小建議了,預習真的很重要,我們不能達到那種理想的教育狀態(那樣教育成本太高了),但是可以盡量去模擬。不要老說自己做項目,沒時間,這事那 事,然后再一頓狂批軟院的體制,什么不夠合理等等。我在大一的時候也是這種心理狀態,后來才逐漸發現,人生中沒有一件事是完全合理的(相比較其他學院,軟 院的體制其實不知道好到哪里去了)。總會有各種各樣的東西在擋著你,失敗的人總會怨天尤人憤世嫉俗,成功的人會冷靜思考,分析情況,如何避開不利因素,做 出正確選擇。前者是主觀思維,情緒控制個人,后者理性思維,個人控制情緒,個人覺得成功者和失敗者的差別就在這里的。我不敢說自己已經達到后者的境界,但 是正在努力想后者靠攏。這個扯遠了哈,繼續往下。
接下來的問題,是關于對微軟公司的理解,包括其文化以及你最喜歡的產品等等。這個問題我答的不是很好,因為專業是軟件的緣故,so,談了一下.Net,但是談的不是很深入,因為僅僅是學了些.Net皮毛,也沒有深入了解過。這里引出來的一點就是一句老話啦,知己知彼。根據我個人的總結,從我記事起到現在所遇到的所有關卡,早期的中考、然后OI,接著的各種考驗。幾乎其中我失敗的經歷原因都在于我沒有重視。所以我現在覺得對任何一場考驗,都要去認真對待,這很重要,你要去了解你的對手,了解整個操 作的流程,考慮
各種可能的情況,然后自己努力的方向。總之,就是要去研究它,我這個人很笨,腦子不夠用,所以我總喜歡在一張紙上對一件事分析,寫寫劃劃,思路可以清晰好多。說實在話,第一次電面我認為我不是很成功,主要原因就在于我對第一次電面沒有重視,沒有去做深入研究。不過還好,HR姐姐讓我過了。然后的問題都是對于一些學習和工作中的問題,看你如何去處理了。比如,有人問你,你在大學階段的各項目中很多充當leader的角色,你會不會覺得你過強的leadership會與將來的工作氛圍發生沖突。大家想想,如果有這樣一個問題該怎樣回答呢?這還是一個情緒和理性沖突的問題。我覺得如果一個人真正能夠做到個人控制情緒的話,這個問題其實真的很好回答的。一個人并不是為了表現出leadership而去表現leadership,在理性分析了所有的情況之后,我們會發現,在大學這一個環境下,表現出leadership有助于項目的進展,所以這種leadership是個人根據外界環境理性控制的結果,而不是感情的發泄,如果一個人到一個新環境中,首先要做的就是適應這里的環境、氛圍、文化,然后分析,做出關于自己工作方式的正確選擇,使其有助于自己的發展,有助于公司的發展。
第一面差不多就是這樣了,說實在話,前面幾個問題因為準備不充分,所以答的不是好,但是后面幾個問題,我個人覺得還是很滿意的,能夠聽出來對面的HR姐 姐也是很滿意的。這可能同我的性格以及行事風格有很大關系,所有人都說我像個書呆子,很迂腐,而我這個人沒事就是喜歡思考人生觀和價值觀的一系列問題,并 經常可以想通很多事情,比如,如何去接受別人的缺點,如何學會去尊重別人,如何去控制自己的情緒,我經常美其名曰:“提高修養!”,呵呵。所以當HR姐姐跟我探討起比較趨向于人生哲學的問題時,我基本上還是能夠探討的入木三分,嘿嘿~~~
當然,大家不要像我這么迂腐哈,像我這種迂腐性格也有不少壞處的,打住了,傷心往事不提了~~~反正只是要知道能夠找個正確的方向,培養自己,就OK了~~
4.編程素養的提高
前面話題扯的有點多,后面盡量從簡了。
第二次電面是一個技術工程師,全英文面試。提前預約,需要用到一個工具Office Live Meeting, 微 軟的產品。確切說是遠程網面。每輪面試流程都差不多,自我介紹一下,談談對于軟件開發的理解,都是些很開闊的問題,每個人都會答,但是答的深度就有差距 了,這就取決于在軟件開發方面的造詣了,一個基礎扎實的人肯定有很深入以及其他人沒有的獨到見解,這方面臨時很難準備的。接下來就是基本算法題目了,出給 我的題目很簡單,具體題目不說了,總之真的很簡單,沒有謙虛,完全沒技術難度。這也在告訴我們微軟的題目要的不是一個正確的結果,而是在你解決這個問題過 程中所展現出來的綜合素質。
這就是為什么要用Office Live Meeting了,這是一個遠程會議工具,中間界面有個白板,技術工程師會要求你在白板上現場coding,他那邊可以完全看到的。你在解決問題的過程會與技術工程師發生不斷的交互。
比如:
在你每寫一步的時候,你有沒有考慮其他情況呢?
在你開始code的時候,你想過邊界條件么?
你知道你現在的這套命名規范,能和其他組員很好的一致么?
你知道一個標準的子程序最佳代碼量是多少行么?
你傳入的子程序的參數是多少個啊?排列順序是否是按照輸入、修改、輸出的呢?
你的子程序編碼布局美觀么?
你有加注釋的習慣么?
你知道什么時候該把一個單獨功能模塊單獨分出去作為另一個子程序最合適么?
……
發現了吧,其實一個再簡單的程序,不同的人寫,完全不一樣哦~~質量參差不齊,夸張一點,一個人寫程序的過程,幾乎完全就是一個人性格的再現了。能夠看出很多問題,一個人的思維是否縝密,這個人是否喜歡耍小聰明,是否夠冷靜……這里推薦大家讀一本書《代碼大全》,現在出第二版了吧,這本書里對一個優秀程序員所給出的基本素質介紹的很全面,盡管不是具體的技術,但是真的很受用。這里還要說一點,其他公司我不清楚,不過面微軟,他不在意你其他技術的掌握情況,什么UML/J2EE/MFC/.Net,微軟要選拔的是具有潛力的人,按照我的經歷,就完全是以C++算 法題目的形式展現出來,核心是挖掘你在編制程序過程中的基本素養。技術這種東西,說白了就是產品,一代一代過,過時了就不用了,而一些很經典的東西,數學 基礎、數據結構算法、數據庫、操作系統、計算機網絡等等,是計算機科學的基石,建議學弟學妹們分清主次,否則將來會吃大虧。
寫到這里相信大家已經發現了,要準備微軟的面試幾乎沒有技巧,說容易也容易,說難也難。容易是因為,你幾乎不用準備,因為考察的是你這大學幾年來所培養起來的內在品質,不是一些臨時抱佛腳的東西,說他難,是因為你有時候根本準備不來,如果你大學前幾年在混……再好的技巧,神都幫不到你了。
對 了這里還要再說明一下,大家其實要學會培養自己的學習和分析能力。再遇到一個沒有遇見的問題時,根據現有的知識,做出自己的理性猜測,然后再去尋找答案。在這一面時,我就遇到了一個從來沒遇到過的問題,我就是先扯到了一個跟這個問題相關并且我很熟且搞得很深的問題上,講完之后,告訴面試官,那個問題如果讓 我現在去設計,我是這樣考慮的,盡管我沒遇到過這類問題,但是要向面試官展示出你的學習能力和潛能,本來嘛,計算機學科這么廣,一個本科生怎么可能掌握所 有呢,但是其學習能力對于一個程序員來說更加重要。