Eri*_*ver 50 algorithm data-structures
您在候选筛选过程中发现哪些简单的算法或数据结构相关的"白板"问题?
我有一些简单的用于验证解决问题的技能,可以简单地表达,但有一些机会来应用一些启发式方法.
我用于初级开发人员的基础之一是:
编写一个C#方法,它接受一个包含一组单词(一个句子)的字符串,并将这些单词X向右旋转.当句子的最后位置中的单词被旋转时,它应该显示在结果字符串的前面.
当候选人回答这个问题时,我会看到他们可以使用.NET数据结构和方法(string.Join,string.Split,List等)来解决问题.我也寻找他们来确定优化的特殊情况.就像需要旋转的单词实际上不是X的次数一样,它是X%的单词数.
您用来采访候选人的白板问题是什么?您在答案中寻找的是什么(不需要发布实际答案).
Dav*_*ron 25
我喜欢经典的"LinkedList和ArrayList之间的区别(或链接列表和数组/向量之间的差异),为什么你会选择其中一个?"
我希望的答案包括以下讨论:
Jim*_*uls 25
有一次,当我在大学面试微软时,那家伙问我如何检测链表中的循环.
在上周的课堂上讨论了问题的最佳解决方案后,我开始告诉他.
他告诉我,"不,不,每个人都给我解决方案.给我一个不同的解决方案."
我认为我的解决方案是最佳的.他说,"我知道这是最优的.给我一个次优的."
与此同时,这是一个非常好的问题.
图表很难,因为如果需要的不仅仅是算法草图,那么大多数非平凡的图形问题往往需要大量的实际代码才能实现.很多问题往往归结为候选人是否知道最短路径和图遍历算法,熟悉周期类型和检测,以及他们是否知道复杂性界限.我认为关于这些东西的很多问题归结为琐事而不是现场的创造性思维能力.
我认为与树有关的问题往往会涵盖图问题的大部分困难,但没有那么多的代码复杂性.
我喜欢Project Euler问题,要求找到树下最昂贵的路径(16/67); 共同的祖先是一个很好的热身,但很多人都看到了它.要求某人设计一个树类,执行遍历,然后找出他们可以重建树的遍历,也可以深入了解数据结构和算法实现.Stern-Brocot编程挑战在板上也很有趣且快速开发(http://online-judge.uva.es/p/v100/10077.html).