找回密码
 FreeOZ用户注册
查看: 3421|回复: 34
打印 上一主题 下一主题

[面试话题] 今天面了一个"Smart Guy"

[复制链接]
跳转到指定楼层
1#
发表于 14-1-2015 11:59:59 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?FreeOZ用户注册

x
本帖最后由 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, 可以上网)
  1. var items = new List<int>{1, 2, 2, 3, 4, 4, 4, 5};
  2. // Should return an array containing 2 and 4.
复制代码

这家伙自己没写出来,而且思路很奇葩。沿着他的思路,经过若干提示最终,最终的代码是
  1. var result = new List<int>();
  2. for(var i = 0; i < items.Length; i++){
  3.     var tmp = input[i];
  4.     items.RemoveAt(i);
  5.     if(items.BinarySearch(tmp) >= 0) {
  6.         result.Add(tmp);
  7.     }
  8.     items.Insert(i, tmp);
  9. }
  10. return result;
复制代码
没用Linq、HashSet、Dictionary、HashTable也就算了,这种先删除在插回去思路我头一次见到,这家伙Master是咋毕业的?!

5轮面试后,大家开会讨论一致认为他就不应该申请Tech类的职位,应该去当Salesman。我的评语就是“Can talk, but cannot programme.”

评分

参与人数 1威望 +50 收起 理由
语之玫瑰 + 50 谢谢分享!

查看全部评分

回复  

使用道具 举报

2#
发表于 14-1-2015 12:07:45 | 只看该作者
C#真不靠谱阿。。。。。。。。。。

这么简单的东西还要自己写fucntion。。。。。。。。。。。
回复  

使用道具 举报

3#
发表于 14-1-2015 12:07:55 | 只看该作者
array_count_values
回复  

使用道具 举报

4#
发表于 14-1-2015 12:11:32 | 只看该作者
我写了一个

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();
        }
    }
}
回复  

使用道具 举报

5#
 楼主| 发表于 14-1-2015 12:33:10 | 只看该作者
  1. return items.GroupBy().Where(g => g.Count() > 1).Select(g => g.Key);
复制代码
回复  

使用道具 举报

6#
发表于 14-1-2015 12:33:22 | 只看该作者
本帖最后由 艾瑞克 于 14-1-2015 11:51 编辑

这不就是一句话的事么,我这样写对吗?
  1. return items.Where( i => items.Count(i1 => i == i1) > 1 ).Distinct();
复制代码
回复  

使用道具 举报

7#
发表于 14-1-2015 12:36:16 | 只看该作者
本帖最后由 艾瑞克 于 14-1-2015 11:39 编辑


你的GroupBy没有key
GroupBy(i=>i)
回复  

使用道具 举报

8#
发表于 14-1-2015 12:40:38 | 只看该作者
DDD888 发表于 14-1-2015 11:11
我写了一个

using System;

回复  

使用道具 举报

9#
发表于 14-1-2015 12:41:55 | 只看该作者
楼上两位的代码为何都编译出错啊?
回复  

使用道具 举报

10#
发表于 14-1-2015 12:44:14 | 只看该作者
本帖最后由 艾瑞克 于 14-1-2015 12:00 编辑
DDD888 发表于 14-1-2015 11:41
楼上两位的代码为何都编译出错啊?


我没拿VS编译,用LinqPad跑跑就行啦
莫非你还在用.net 2.0?
回复  

使用道具 举报

11#
发表于 14-1-2015 12:56:27 | 只看该作者
我最近也在找工作,lz把你们的面试题拿来给我操练操练啊
回复  

使用道具 举报

12#
发表于 14-1-2015 13:15:30 | 只看该作者
看来我要好好学习linq啦
回复  

使用道具 举报

13#
 楼主| 发表于 14-1-2015 13:29:12 | 只看该作者
艾瑞克 发表于 14-1-2015 11:36
你的GroupBy没有key
GroupBy(i=>i)

You are right.
回复  

使用道具 举报

14#
发表于 14-1-2015 13:35:15 | 只看该作者
当场写出来这句Linq有点不记得语法,但是能用google就简单多了: http://stackoverflow.com/questions/18547354/c-sharp-linq-find-duplicates-in-list

楼主澳洲面试都能用Google查询的吗?

感觉国内这种题目的测试一般考查的是能否用自己算法来解答,利用各种语言特性的答案反而会被pass掉。。。
回复  

使用道具 举报

15#
 楼主| 发表于 14-1-2015 13:50:18 | 只看该作者
能用Google,会用Google也是技能呀。就比如这位Smart Guy,能用Google都没搞出来。自己写算法的能力固然重要,然如果Candidate能用Lib解决掉,也算他的本事的一部分。其实实际工作中99%都不用自己写算法,都是用Lib。自己写就是重复造轮子。会用Lib的人大都了解那些Lib的算法原理和特点,所以我不倾向于写algorithm in plain language。
回复  

使用道具 举报

16#
发表于 14-1-2015 14:05:39 | 只看该作者
superopengl 发表于 14-1-2015 14:50
能用Google,会用Google也是技能呀。就比如这位Smart Guy,能用Google都没搞出来。自己写算法的能力固然重 ...

最新科技往往是没有先例可循,例如google无人驾驶汽车,说近一点的,牵涉到async的许多代码,也要自己造轮子啦,或者编写apple iphone/ipad 用swift语言也都是不能用google来得到结果啦,毕竟太新了
回复  

使用道具 举报

17#
发表于 14-1-2015 14:06:23 | 只看该作者
qingyi2002 发表于 14-1-2015 12:35
当场写出来这句Linq有点不记得语法,但是能用google就简单多了: http://stackoverflow.com/questions/1854 ...

如果面试的时候,有IDE可以用,哪怕是支持autocomplete的linqpad可以用,不用google也可以写得出来,如果真的要考算法,这道题也未免太简单了。
回复  

使用道具 举报

18#
发表于 14-1-2015 14:08:16 | 只看该作者
这个smart guy当salesman也不称职,因为他并没有把自己推销出去啊,顶多做做marketing
回复  

使用道具 举报

19#
 楼主| 发表于 14-1-2015 14:10:05 | 只看该作者
艾瑞克 发表于 14-1-2015 13:06
如果面试的时候,有IDE可以用,哪怕是支持autocomplete的linqpad可以用,不用google也可以写得出来,如果 ...

面试时提供VS2013还装了Resharper的呦
回复  

使用道具 举报

20#
发表于 14-1-2015 14:10:12 | 只看该作者
C#俺不懂,但就凭插入再删除这种方法,必然有多线程问题。
回复  

使用道具 举报

21#
发表于 14-1-2015 14:12:22 | 只看该作者
superopengl 发表于 14-1-2015 13:10
面试时提供VS2013还装了Resharper的呦

那可真好,你们公司在哪儿?我能去么
回复  

使用道具 举报

22#
发表于 14-1-2015 14:12:49 | 只看该作者
其实应聘的人挺辛苦的,要正经的在大热天穿着西装,努力思考如何回答问题,还要面临被嘲笑
回复  

使用道具 举报

23#
 楼主| 发表于 14-1-2015 14:13:24 | 只看该作者
总结会上Director说他观察了这个Candidate使用的关键词和所有的搜索,发现这个Candidate的Google Skill不好。其实Google Skill就是我们发现问题寻找答案的思路,换句话说就是这个Candidate的思维方式没有另Interviewer信服。
回复  

使用道具 举报

24#
发表于 14-1-2015 14:16:21 | 只看该作者
提示: 作者被禁止或删除, 无法发言
DDD888 发表于 14-1-2015 13:11
我写了一个

using System;

对我是天书啊,不过不妨碍对你的佩服之情
回复  

使用道具 举报

25#
 楼主| 发表于 14-1-2015 14:18:40 | 只看该作者
Mr.Q 发表于 14-1-2015 13:10
C#俺不懂,但就凭插入再删除这种方法,必然有多线程问题。

这只是一个查询问题,最差算法O(n2)也应该出来了。可搞出个修改input array的做法就是在是无法接受
回复  

使用道具 举报

26#
发表于 14-1-2015 14:19:38 | 只看该作者
DDD888 发表于 14-1-2015 13:05
最新科技往往是没有先例可循,例如google无人驾驶汽车,说近一点的,牵涉到async的许多代码,也要自己造 ...

任何一个新的技术出来,只要它够好,自然会有人去造轮子,造轮子本身就是一种商机,而且造轮子的人越多,造的轮子越多,就说明它越成熟,从product owner的角度来看,我一般不会去用连轮子都找不到的技术,风险太大,但是从technical角度来看,当然接触新事物越早越好。
回复  

使用道具 举报

27#
发表于 14-1-2015 14:23:50 | 只看该作者
superopengl 发表于 14-1-2015 13:18
这只是一个查询问题,最差算法O(n2)也应该出来了。可搞出个修改input array的做法就是在是无法接受

这位老大还用了 “BinarySearch”,他是想展示自己的算法水平么
回复  

使用道具 举报

28#
 楼主| 发表于 14-1-2015 14:24:57 | 只看该作者
DDD888 发表于 14-1-2015 13:12
其实应聘的人挺辛苦的,要正经的在大热天穿着西装,努力思考如何回答问题,还要面临被嘲笑

没有嘲笑啦,只不过这个Candidate太奇葩了,简历和Blog吹的太邪乎了。一般敢post tech blog和跟技术书籍有关的都是大牛。这位Candidate真的只是一张吹起来的牛皮,太奇葩了。
回复  

使用道具 举报

29#
 楼主| 发表于 14-1-2015 14:30:29 | 只看该作者
艾瑞克 发表于 14-1-2015 13:23
这位老大还用了 “BinarySearch”,他是想展示自己的算法水平么

是啊,说实话我都没用过。要不是以前review别人code时查了一下BinarySearch的用法,我还真不知道它的返回值是-N ~ N
回复  

使用道具 举报

30#
发表于 14-1-2015 14:32:40 | 只看该作者
superopengl 发表于 14-1-2015 13:30
是啊,说实话我都没用过。要不是以前review别人code时查了一下BinarySearch的用法,我还真不知道它的返回 ...

我用过几次,以前在面试的时候也碰到过
回复  

使用道具 举报

您需要登录后才可以回帖 登录 | FreeOZ用户注册

本版积分规则

小黑屋|手机版|Archiver|FreeOZ论坛

GMT+10, 29-4-2024 11:31 , Processed in 0.054063 second(s), 47 queries , Gzip On, Redis On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表