校园招聘 - 比较容易的面试题
又到校園招聘的季節了, 自從和一些同事出版了《編程之美》一書之后, 我經常收到一些關于面試, 編程,? 和“題庫”的詢問。 其實我自己對算法沒有什么研究, 有些問題都答不上,? 研究院最近搬了一次家, 原來的 “題庫”也不知道搬到那一層樓去了。? 不過, 常在河邊走, 哪能不濕鞋?? 在微軟亞洲研究院這個水很深的地方混,? 一些題目還是打濕了我的腳。? 今天新的校園招聘 正式開始了,? 我準備了幾個比較容易的題目, 作為 “獻禮”。這些題目不是一上來就刷刷刷寫代碼的那種, 我自己都不知道最佳解法是什么, 如果你有好的想法, 可以討論一下.?
1. 只考數據結構的題目
不少同學覺得《編程之美》上面的題目太難了, 還要寫那么多程序… 好, 其實也有很簡單的問題, 例如這一個 - 只考數據結構的知識:
?
《編程之美》 中提到 “求數組最大子數組的和”這一題目,
?
?(圖1)
?
腦快手快的同學寫一個 10 行的程序就把這個問題搞定了。?
?
我們還把這個問題擴展到二維, 例如:
?
?
(圖2)
?
我還問過一些同學, 如果數組首尾相連, 像一個輪胎一樣, 又怎么辦呢? 這些同學也給出了漂亮的答案, 并且用 SilverLight/WPF 給畫了出來:
(圖3)
?
好,設想我們有一張紙帶,兩面都寫滿了像 [圖2] 那樣的數字, 我們把紙帶的一端扭轉, 和另一端接起來, 構成一個莫比烏斯環 (M?bius Strip).?
?
(圖4 – wikipedia)
?
我想盡管這個紙帶扭了一下,? 但是上面還是有數組, 還是有最大子數組的和, 對么? 在求最大子數組的和之前, 我們用什么樣的數據結構來表示這些數字呢? 你可以用 Java, C, C#, 或其他語言的數據結構來描述這個莫比烏斯環上的數組。數據結構搞好了, 算法自然就有了。?
?
?
?
2. 舉一反一的問題
《編程之美》的第一題是讓Windows 任務管理器的CPU 使用率曲線畫出一個正弦波。我一直在想, 能不能把CPU 使用率邊上的網絡使用率也如法炮制一下呢?? 比如, 也來一個正弦曲線?
?
?
?
3. 人月的問題
如果你沒看過, 也至少聽說<人月神話>? (The Mythical Man-month) 這本在軟件工程領域很有影響的書.? 當你在微軟學術搜索中輸入 “manmonth” 這個詞的時候, 你會意外地碰到下面這個錯誤:
?
?
經過幾次試驗之后, 你發現必須要輸入 “man-month” 才能得到希望的結果。 這不就是只差一個? ‘-’ 符號么?? 為什么這個搜索引擎不能做得聰明一些, 給一些提示 (Query Suggestion)? 或者自動把用戶想搜的結果展現出來 (Query Alteration)??? 我們在輸入比較長的英文單詞的時候, 也難免會敲錯一兩個字母, 網站應該幫助用戶, 而不是冷冰冰地拒絕用戶啊。
?
微軟的學術搜索 (Microsoft Academic Search) 索引了超過 3千萬的文獻,? 2 千萬的人名, 怎么能以比較小的代價, 對經常出現的輸入錯誤提供提示? 或直接顯示相關結果, 避免用戶反復嘗試輸入的煩惱???
?
你可能會說, 這很難吧,?? 但是另一家搜索引擎似乎輕易地解決了這個問題 (例子)。 所以, 還是有辦法的。
?
這個題目要求你:
1) 試驗不同的輸入, 反推出目前微軟的學術搜索是如何實現搜索建議 (Query Suggestion)的。
2) 提出自己的改進建議,? 并論證這個解決方案在千萬級數據規模上能達到 “足夠好” 的時間 (speed) 和空間 (memory usage)效率。
3) 估計這事需要幾個 人·月 (man-month) 才能做完?
?
?
----
有人問, 把題目都公開出去, 大家都知道答案了, 我們還怎么面試啊??
回答: 這就看面試官的功夫了.
?
三個題目都做好的應屆畢業生, 請直接找我。
總結
以上是生活随笔為你收集整理的校园招聘 - 比较容易的面试题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 现代软件工程系列 结对编程 两周写好3D
- 下一篇: 现代软件工程讲义 5 项目经理 Prog