今天面了一个"Smart Guy"
本帖最后由 superopengl 于 14-1-2015 11:01 编辑这个家伙的resume可谓光辉灿烂:Master of computer science,Senior Software Engineer@Bank of America 4年工作经验,各种buzz words(AngularJS, MEAN, MongoDB, MVC, Dependency Injection, jQuery, blah, blah)。有自己Git Repository,说是参与了很多OpenSource的项目。还有自己的Tech Blog,有15000个读者,其Blog文章的内容还被几本书引用。
Question
给他一个C#上机编程题,找出一个Integer Array里重复的数字(实在run不过,写pseudo code也行,可以Linq, 可以Google, 可以上网)
var items = new List<int>{1, 2, 2, 3, 4, 4, 4, 5};
// Should return an array containing 2 and 4.
这家伙自己没写出来,而且思路很奇葩。沿着他的思路,经过若干提示最终,最终的代码是
var result = new List<int>();
for(var i = 0; i < items.Length; i++){
var tmp = input;
items.RemoveAt(i);
if(items.BinarySearch(tmp) >= 0) {
result.Add(tmp);
}
items.Insert(i, tmp);
}
return result;没用Linq、HashSet、Dictionary、HashTable也就算了,这种先删除在插回去思路我头一次见到,这家伙Master是咋毕业的:o?!
5轮面试后,大家开会讨论一致认为他就不应该申请Tech类的职位,应该去当Salesman。我的评语就是“Can talk, but cannot programme.”
C#真不靠谱阿。。。。。。。。。。
这么简单的东西还要自己写fucntion。。。。。。。。。。。:lol。 array_count_values 我写了一个
using System;
using System.Collections.Generic;
using System.Linq;
namespace DuplicateNumber {
internal class Program {
private static void Main(string[] args) {
var items = new List<int> {1, 2, 2, 3, 4, 4, 4, 5};
var dictionary = new Dictionary<int, bool>();
var resultDictionary = new Dictionary<int, bool>();
foreach (var item in items) {
if (dictionary.ContainsKey(item)) {
if (!resultDictionary.ContainsKey(item)) {
resultDictionary.Add(item, true);
}
}
else {
dictionary.Add(item, true);
}
}
var result = resultDictionary.Select(b => b.Key).ToList();
foreach (var b in result) {
Console.WriteLine(b);
}
Console.ReadKey();
}
}
} return items.GroupBy().Where(g => g.Count() > 1).Select(g => g.Key); 本帖最后由 艾瑞克 于 14-1-2015 11:51 编辑
这不就是一句话的事么,我这样写对吗?
return items.Where( i => items.Count(i1 => i == i1) > 1 ).Distinct(); 本帖最后由 艾瑞克 于 14-1-2015 11:39 编辑
superopengl 发表于 14-1-2015 11:33
你的GroupBy没有key
GroupBy(i=>i) DDD888 发表于 14-1-2015 11:11
我写了一个
using System;
:L 楼上两位的代码为何都编译出错啊? 本帖最后由 艾瑞克 于 14-1-2015 12:00 编辑
DDD888 发表于 14-1-2015 11:41
楼上两位的代码为何都编译出错啊?
我没拿VS编译,用LinqPad跑跑就行啦
莫非你还在用.net 2.0? 我最近也在找工作,lz把你们的面试题拿来给我操练操练啊:lol 看来我要好好学习linq啦 艾瑞克 发表于 14-1-2015 11:36
你的GroupBy没有key
GroupBy(i=>i)
You are right. 当场写出来这句Linq有点不记得语法,但是能用google就简单多了: http://stackoverflow.com/questions/18547354/c-sharp-linq-find-duplicates-in-list
楼主澳洲面试都能用Google查询的吗?
感觉国内这种题目的测试一般考查的是能否用自己算法来解答,利用各种语言特性的答案反而会被pass掉。。。 能用Google,会用Google也是技能呀。就比如这位Smart Guy,能用Google都没搞出来。自己写算法的能力固然重要,然如果Candidate能用Lib解决掉,也算他的本事的一部分。其实实际工作中99%都不用自己写算法,都是用Lib。自己写就是重复造轮子。会用Lib的人大都了解那些Lib的算法原理和特点,所以我不倾向于写algorithm in plain language。 superopengl 发表于 14-1-2015 14:50
能用Google,会用Google也是技能呀。就比如这位Smart Guy,能用Google都没搞出来。自己写算法的能力固然重 ...
最新科技往往是没有先例可循,例如google无人驾驶汽车,说近一点的,牵涉到async的许多代码,也要自己造轮子啦:),或者编写apple iphone/ipad 用swift语言也都是不能用google来得到结果啦,毕竟太新了 qingyi2002 发表于 14-1-2015 12:35
当场写出来这句Linq有点不记得语法,但是能用google就简单多了: http://stackoverflow.com/questions/1854 ...
如果面试的时候,有IDE可以用,哪怕是支持autocomplete的linqpad可以用,不用google也可以写得出来,如果真的要考算法,这道题也未免太简单了。 这个smart guy当salesman也不称职,因为他并没有把自己推销出去啊,顶多做做marketing ;P 艾瑞克 发表于 14-1-2015 13:06
如果面试的时候,有IDE可以用,哪怕是支持autocomplete的linqpad可以用,不用google也可以写得出来,如果 ...
面试时提供VS2013还装了Resharper的呦:$ C#俺不懂,但就凭插入再删除这种方法,必然有多线程问题。 superopengl 发表于 14-1-2015 13:10
面试时提供VS2013还装了Resharper的呦
那可真好,你们公司在哪儿?我能去么:lol 其实应聘的人挺辛苦的,要正经的在大热天穿着西装,努力思考如何回答问题,还要面临被嘲笑 总结会上Director说他观察了这个Candidate使用的关键词和所有的搜索,发现这个Candidate的Google Skill不好。其实Google Skill就是我们发现问题寻找答案的思路,换句话说就是这个Candidate的思维方式没有另Interviewer信服。 Mr.Q 发表于 14-1-2015 13:10
C#俺不懂,但就凭插入再删除这种方法,必然有多线程问题。
这只是一个查询问题,最差算法O(n2)也应该出来了。可搞出个修改input array的做法就是在是无法接受 DDD888 发表于 14-1-2015 13:05
最新科技往往是没有先例可循,例如google无人驾驶汽车,说近一点的,牵涉到async的许多代码,也要自己造 ...
任何一个新的技术出来,只要它够好,自然会有人去造轮子,造轮子本身就是一种商机,而且造轮子的人越多,造的轮子越多,就说明它越成熟,从product owner的角度来看,我一般不会去用连轮子都找不到的技术,风险太大,但是从technical角度来看,当然接触新事物越早越好。 superopengl 发表于 14-1-2015 13:18
这只是一个查询问题,最差算法O(n2)也应该出来了。可搞出个修改input array的做法就是在是无法接受
这位老大还用了 “BinarySearch”,他是想展示自己的算法水平么;P DDD888 发表于 14-1-2015 13:12
其实应聘的人挺辛苦的,要正经的在大热天穿着西装,努力思考如何回答问题,还要面临被嘲笑
没有嘲笑啦,只不过这个Candidate太奇葩了,简历和Blog吹的太邪乎了。一般敢post tech blog和跟技术书籍有关的都是大牛。这位Candidate真的只是一张吹起来的牛皮,太奇葩了。 艾瑞克 发表于 14-1-2015 13:23
这位老大还用了 “BinarySearch”,他是想展示自己的算法水平么
是啊,说实话我都没用过。要不是以前review别人code时查了一下BinarySearch的用法,我还真不知道它的返回值是-N ~ N superopengl 发表于 14-1-2015 13:30
是啊,说实话我都没用过。要不是以前review别人code时查了一下BinarySearch的用法,我还真不知道它的返回 ...
我用过几次,以前在面试的时候也碰到过;P
页:
[1]
2