校园招聘 - 比較easy的面试题

本文提出了几个编程挑战,包括设计数据结构表示莫比乌斯环上的数组、改进微软学术搜索的查询建议功能等,旨在考察应聘者的算法思维和技术能力。

又到校园招聘的季节了, 自从和一些同事出版了《编程之美》一书之后, 我常常收到一些关于面试, 编程,  和“题库”的询问。 事实上我自己对算法没有什么研究, 有些问题都答不上,  研究院近期搬了一次家, 原来的 “题库”也不知道搬到那一层楼去了。  只是, 常在河边走, 哪能不湿鞋?  在微软亚洲研究院这个水非常深的地方混,  一些题目还是打湿了我的脚。  今天新的校园招聘 正式開始了,  我准备了几个比較easy的题目, 作为 “献礼”。这些题目不是一上来就刷刷刷写代码的那种, 我自己都不知道最佳解法是什么, 假设你有好的想法, 能够讨论一下. 

1. 仅仅考数据结构的题目

不少同学认为《编程之美》上面的题目太难了, 还要写那么多程序… 好, 事实上也有非常easy的问题, 比如这一个 - 仅仅考数据结构的知识:

 

《编程之美》 中提到 “求数组最大子数组的和”这一题目,

 

image (图1)

 

脑快手快的同学写一个 10 行的程序就把这个问题搞定了。 

 

我们还把这个问题扩展到二维, 比如:

 

 

image (图2)

 

我还问过一些同学, 假设数组首尾相连, 像一个轮胎一样, 又怎么办呢? 这些同学也给出了美丽的答案, 而且用 SilverLight/WPF 给画了出来:

image(图3)

 

好,设想我们有一张纸带,两面都写满了像 [图2] 那样的数字, 我们把纸带的一端扭转, 和还有一端接起来, 构成一个莫比乌斯环 (Möbius Strip). 

 

image (图4 – wikipedia)

 

我想虽然这个纸带扭了一下,  可是上面还是有数组, 还是有最大子数组的和, 对么? 在求最大子数组的和之前, 我们用什么样的数据结构来表示这些数字呢? 你能够用 Java, C, C#, 或其它语言的数据结构来描写叙述这个莫比乌斯环上的数组。数据结构搞好了, 算法自然就有了。 

 

 

 

2. 举一反一的问题

《编程之美》的第一题是让Windows 任务管理器的CPU 使用率曲线画出一个正弦波。我一直在想, 能不能把CPU 使用率边上的网络使用率也如法炮制一下呢?  比方, 也来一个正弦曲线?

 

image 

 

3. 人月的问题

假设你没看过, 也至少听说<人月神话>  (The Mythical Man-month) 这本在软件project领域非常有影响的书.  当你在微软学术搜索中输入 “manmonth” 这个词的时候, 你会意外地碰到以下这个错误:

image 

 

经过几次试验之后, 你发现必需要输入 “man-month” 才干得到希望的结果。 这不就是仅仅差一个  ‘-’ 符号么?  为什么这个搜索引擎不能做得聪明一些, 给一些提示 (Query Suggestion)? 或者自己主动把用户想搜的结果展现出来 (Query Alteration)?   我们在输入比較长的英文单词的时候, 也难免会敲错一两个字母, 站点应该帮助用户, 而不是冷冰冰地拒绝用户啊。

 

微软的学术搜索 (Microsoft Academic Search) 索引了超过 3千万的文献,  2 千万的人名, 怎么能以比較小的代价, 对常常出现的输入错误提供提示? 或直接显示相关结果, 避免用户重复尝试输入的烦恼?  

 

你可能会说, 这非常难吧,   可是还有一家搜索引擎似乎轻易地攻克了这个问题 (样例)。 所以, 还是有办法的。

 

这个题目要求你:

1) 试验不同的输入, 反推出眼下微软的学术搜索是怎样实现搜索建议 (Query Suggestion)的。

2) 提出自己的改进建议,  并论证这个解决方式在千万级数据规模上能达到 “足够好” 的时间 (speed) 和空间 (memory usage)效率。

3) 预计这事需要几个 人·月 (man-month) 才干做完?

 

 

----

有人问, 把题目都公开出去, 大家都知道答案了, 我们还怎么面试啊? 

回答: 这就看面试官的功夫了.

 

三个题目都做好的应届毕业生, 请直接找我。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值