校园招聘 - 比较容易的面试题

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

1. 只考数据结构的题目

不少同学觉得《编程之美》上面的题目太难了, 还要写那么多程序… 好, 其实也有很简单的问题, 例如这一个 - 只考数据结构的知识:

 

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

 

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) 这本在软件工程领域很有影响的书.  当你在微软学术搜索中输入 “manmonth” 这个词的时候, 你会意外地碰到下面这个错误:

image 

 

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

 

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

 

你可能会说, 这很难吧,   但是另一家搜索引擎似乎轻易地解决了这个问题 (例子)。 所以, 还是有办法的。

 

这个题目要求你:

1) 试验不同的输入, 反推出目前微软的学术搜索是如何实现搜索建议 (Query Suggestion)的。

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

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

 

 

----

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

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

 

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/500439.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

现代软件工程讲义 2 工程师的能力评估和发展

Advanced Software Engineering 现代软件工程 讲义 软件工程师的能力评估和职业发展 介绍: 个人软件流程, 职业发展&#xff0c; 个人绩效的衡量和提高, 软件开发是科学, 工程, 手艺, 或是艺术? 我们刚讲了软件工程, 它包括了什么呢? 软件工程包括了开发&#xff0c;…

现代软件工程讲义 7 设计阶段 典型用户 - 故事 - 任务 - 具体工作

当我们写一个软件的时候, 都知道要为用户考虑, 但是用户在哪里? 有同学写 “图书馆管理系统” - 说来图书馆的同学都是我的用户, 但是他们有没有区别呢? 有同学写“自动柜员机系统”, 那到底有多少类型的用户来到柜员机前呢? 这些都是团队成员在需求分析和设计阶段要反复…

现代软件工程讲义 7 开发 开发阶段的日常管理

[移山之道 14 章] 14.6 开发阶段的日常管理14.6.1 闭门造车&#xff08;leave me alone&#xff09; 荔荔&#xff1a;我今天真失败&#xff01;在办公室里坐了10个小时&#xff0c;但是真正能花在开发工作上的可能只有3个小时&#xff0c;然后我的工作进展大概只有两个小时…

现代软件工程讲义 7 用户界面和用户体验

说到用户界面 (User Interface)&#xff0c;我们先看一个图: [来源] 有些同学认为UI 设计是充满创意和非常潇洒的工作&#xff0c; 另一些同学 (特别是有一定实际项目经验的) 也许会抱怨, UI 的工作就是在衣服后面夹夹子, 让前面好看一些。 其实&#xff0c;计算机软件的用户…

现代软件工程讲义 5 项目经理 Program Manager

在一个软件团队里, 不同的人有不同的投入, 我们在 猪,鸡和鹦鹉 的故事里已经说明了. 不同的人还要在团队中担负不同的任务, 我们也要讲一下. 开发人员 &#xff08;大部分内容在: 现代软件工程讲义 2 工程师的能力评估和发展&#xff09; 项目经理 ( 这篇博客 ) 测试人员 …

现代软件工程讲义 5.1 软件的质量保证 (QA) 和测试 (Test)

在一个软件团队里, 不同的人有不同程度的投入, 我们在 猪,鸡和鹦鹉 的故事里已经说明了. 不同的人还要在团队中担负不同的任务: 开发人员 &#xff08;大部分内容在: 现代软件工程讲义 2 工程师的能力评估和发展&#xff09; 项目经理 ( 内容在这里) 测试人员 ( 本篇博客 ) 团…

现代软件工程讲义 8 稳定阶段 (测试的计划和执行)

[来自 移山之道 第 13 章] 13.8 测试计划 测试不是在所有的开发工作完成之后才进行&#xff0c;而是与开发几乎同步进行的。一个软件项目的各个功能都可以有自己的测试计划&#xff0c;它们可以在不同的阶段发挥作用。但是针对整个项目的总测试计划&#xff08;又叫测试总纲&a…

现代软件工程讲义 2 开发技术 - 效能分析

[移山之道 第九章] 9.4 VSTS 效能分析工具 啊&#xff0c;效能分析&#xff0c;Performance&#xff01;这是每一个程序员都梦想的事儿&#xff0c;让自己的程序跑得又快又好&#xff0c;最好是比别的同学快一个数量级&#xff0c;别人的程序是O(N^2)&#xff0c;而我的程序是…

现代软件工程讲义 2 开发技术 - 单元测试 amp; 回归测试

[移山之道 第11章] 1单元测试 你的RP是由你的程序质量决定的。 ——阿超 这一章讲的是两人合作&#xff0c;既然程序是两个人写的&#xff0c;那就会出现一个人写的模块被另一个人写的模块调用的情况。很多误解、疏忽都发生在两个模块之间。如何能让自己写的模块尽量无懈可击…

现代软件工程讲义 4 方法论 - MSF

[内容来自 移山之道]白话MSF方法论 2.1 果冻的预习果冻&#xff1a;超总&#xff0c;听说你要讲MSF&#xff0c;我就先预习了一下&#xff0c;但是MSF的名词太多了&#xff0c;我真是头大&#xff0c;能不能解释一下这两句&#xff1a; “MSF的一个基础原理是学习所有的经验。…

现代软件工程讲义 9 测试 关于闰年的测试

我们谈了不少测试的名词, 规范和原则 (link1, link2). 软件是人写的, 测试计划和测试用例也是人写的, 人总会犯错误。错误发生之后, 总有人问: 为什么这个bug 没有测出来啊?! 我们看看一类简单的bug是如何发生的&#xff0c;以及如何预防它们再度发生: 闰年 软件少不了和…

现代软件工程 来自卓越大学教师的建议 (读书笔记)

教师教学有培训和参考书么? 我从来没想到过我会在大学里教书, 而且还教了好几年, 四个学校。 当时接到任务的时候, 我把它当作实习生培训和新员工培训的”学院版”, 还是继续强调实践, 反馈, 合作, 就这么开讲了。 在微软公司, 做大部分和人相关的事情, 都得先有一个培训, …

软件工程讲义 9 创新的出路 走进作坊

我第一次注意到 “作坊”这个词和软件行业联系起来大概是这个 2004 年 11 月的报道: 标题: 信产部副部长娄勤俭&#xff1a;中国软件业还在手工作坊阶段 日前&#xff0c;信息产业部副部长娄勤俭在出席中国软件产业生态链高层论坛时表示&#xff0c;中国软件产业的规模还比较小…

现代软件工程 习而学的软件工程教育

茅于轼先生写了一篇博客 ( http://blog.sina.com.cn/s/blog_49a3971d0102dufj.html ) 纪念茅以升先生提出的 习而学的工程教育: 把颠倒了的工程教育顺序恢复过来&#xff0c;即他称之谓“习而学的工程教育”。 以桥梁建筑专业为例&#xff0c;大学一年级先学施工条例&#xff0…

现代软件工程 教课心得

现实世界是最好的老师, 我们这些叫 “老师” 的人, 充其量是个助教。 但是有些助教却不让学生见到老师。 **************** 老师都想把课教好, 学生都想把课学好. 但是我们常常看到一个学期过后, 老师, 学生都有很多抱怨 (例如: 各种良好愿望和计划在实施中的问题). 看了上…

微软学术搜索项目 10个版本的历程

这是我在微软亚洲研究院参与的项目之一, 从 2009 年秋天开始, 我们小组把它从一个研究原型发展为涵盖全学科的学术搜索门户。 它索引了 4千万论文, 2千万作者, 6 大实体类型, 8 种数据可视化功能, 具有开放的API 平台和手机客户端. 下面说说项目的发展: 2009/8: 内部发布 alp…

现代软件工程讲义 9 测试 QA 的角色和分工

测试的角色 (Test) 要独立出来么 ? 独立出来的测试角色怎么才能发挥作用? 有些成功人士和成功的公司号称没必要有独立的测试角色 (Test), 你怎么看? 最近又看到一些关于开发人员要不要负责测试的讨论。 例如: http://www.aqee.net/on-testers-and-testing/ 大多数的开发…

程序设计作业: 车模+数模 = ?

我上学的时候只听说过 “航模”, 没听说过“数学建模”这门学问. 这几年在简历里看到过不少人号称数模得过什么奖之类的, 我都没好意思问太仔细。 在帝都开车经常遇到堵车, 我于是想到了一个车模的问题。 我想请大家帮着给这个车模搞个数模, 求个解法: 想象帝都北四环或北五…

计算机考研的调查和改进建议

几星期前, 我在微博上讨论考研的事, 有专家建议不如把意见整理出来, 说不定可以转告给相关方面。 我没有考过研, 问了公司的同事们, 绝大多数都是保研的, 也没考过。 我从网上下了一份模拟题, 好像还挺难&#xff0c;有一种要翻书的冲动。 全国有多少学生为了考研而奋斗? …

2012 夏季高校微软俱乐部活动 - 开门创新

创新啊创新, 大家都在讲创新。 一般的理解, 创新就是公司内部关起门来想, 实验, 内部评审, 然后申请专利什么的, 其实也有开门创新的办法: http://www.innovationexcellence.com/blog/2012/08/13/40-examples-of-open-innovation-crowdsourcing/ it is about bringing extern…