负暄琐话

我的email: rot47('649@ 6(hF+`hd"w=92vhG{>}G3"@l M >:>6?4@56 \F')

囧囧ID:g9yuayon
898289次访问,排名32好友44人,关注者43
姓名:g9yuayon
前世:夜郎国厚脸皮神棍
魅力指数:0
名气:1
宠物:一只从来不对生人叫的看门狗
g9yuayon的文章
原创 244 篇
翻译 4 篇
转载 49 篇
评论 902 篇
g9的公告
最近评论
ErikLiu:看了这样的文章, 我会流泪.

如果说, 三十年前, 我流泪, 不奇怪,

30多岁的我, 流泪了
ErikLiu:看了这样的文章, 我会流泪.

如果说, 三十年前, 我流泪, 不奇怪,

30多岁的我, 流泪了
devil_hua:孤陋寡闻了。。。汗啊,看来知识缺得还真不是一丁点,哥们强
devil_hua:孤陋寡闻了。。。汗啊,看来知识缺得还真不是一丁点,哥们强
f891379133:好tuo,
文章分类
收藏
    相册
    旅游
    计算机科学
    Lambda the Ultimate
    软件开发
    Reddit编程专栏(RSS)
    正在读的书
    存档
    订阅我的博客
    XML聚合  FeedSky

    原创 电话面试经历收藏

    新一篇: RIP: Randy Pausch | 旧一篇: The Road Not Taken

    出来混,迟早要还。也有了人生第一次电话面试。没有签NDA,所以在这里分享一下。但愿对各位大佬有帮助。职位是架构。要求是对JavaJ2EE熟,能编程,熟悉OO设计。有架构经验,等等等等,都是大路货,没什么出奇的。再说出奇的我也不行啊。

     

    总的感受:

    1. 用自己的话总结对方的话挺有用。表明了你在积极思考,理解了对方的意思,并且避免了双方的误解。关键是要加上自己的理解、延伸,和追加问题。面试官介绍他们的技术时我用了这坨方法,明显感到对方话多起来,也更为随意。大概正确的理解让对方打开了话匣子。
    2. 准备一个电话用耳机。不然一小时的面试下来,手挺累的。而且做编程题时需要在本子上演算,拿着话筒也不方便。用免提效果不如耳机好。尤其现在家 家都用IP电话,用免提有非常明显的杂音。
    3. 准备一杯水。除非老大您久经沙场,面试如老友闲谈。多少会紧张,导致口干。一杯水能让人舒服,很好地缓解情绪。
    4. 问题挺简单,但我居然卡壳。可见事前充分准备多重要。下面详说。

     

    大致的面试过程

     

    寒暄过后,面试官介绍他们的技术。介绍完后,问我有没有问题。我陈述自己对他们技术的理解,列举了几坨可能的应用,问他自己的理解对不对。他同意。于是继续他们的技术同他们的竞争对手有什么区别。然后又问了点搜索中常见的问题,比如怎么处理扩展性,怎么抓取数据,怎么整合数据,如何数据挖据什么的。目的不在了解他们的具体技术。反正也问不出来。主要是表明自己对他们的相关技术有兴趣,有一定了解。另外也是找机会称赞他们技术新颖的时候(前提是真觉得他们的东西不错。诚恳很重要哈)。感觉大家言谈甚欢。直到对方说如果你有问题,等会儿还可以继续问我。于是知趣打住,等待对方提问。

     

    问题从我的经历开始。你现在做什么。负责什么。用什么技术。多少跟Java有关,多少跟JSP/Servlet有关,多少跟前台有关。多少跟后台有关等等。你都很久没有用Java了(俺现在做很多AJAX应用),技术不会落后么?于是俺强调其实没有全职做Java也就一年,但技术并没有撂下。比如俩月前还写了一坨stream-processing proxy server。至于JSP,一坨简单模板技术而已,用不用关系不大嘛。再说相关书没少看。然后列举几坨最近看的常见书籍,对方也就没再追问。本来想说语言不重要,关键是背后的技术。但想想人不是来听我上课的,遂作罢。

     

    然后面试官说,So you still know Java, huh? Do you know Java Collections? 我耳背,听成了Java concurrencies? 心头一凉。心想,哪壶不开提哪壶嗫?做JEE的哥们儿里,有多少人成天和concurrency打叫道啊?都是托Container的福。只有书本知识和玩具程序的体验哈。不过嘴上不能示弱。答:然,concurrency的知道。结果对方说,不不不,是Collections。说说Collections里的常见数据结构。随口说了几个。对方继续问:如果有一百万key-value pairs供查询用,怎么办?答:可以用HashMap,如果你没有synchronization的要求。对方继续追问,可能有有什么潜在问题?我聊了点常见的问题,诸如数据多了需要不断重新组织bucket,会时不时影响性能。对方接着问:那你还用HashMap?心想:Call!设套让俺钻呐?于是答:因为够简单。再说如果担心性能,我们可以测试嘛。找出瓶颈再优化不迟。面试官没有纠缠,换了个话题追问:如果这些key-value是用于cache的,用hashmap有什么问题?答曰:可能导致大量垃圾。然后讨论了一下Weak ReferenceSoft Reference,和Phantom Reference的区别。对方问,如果用String作为key,还可以怎么处理?答:用Trie。面试官接着问:那如果要做子串查询呢?顺口答:Suffix tree。奇怪的是对方没有深入问下去,而是换了个话题问:如果我只关心key,你怎么处理value?这个时候我开始犯傻,答:那你用boolean或者整数,还可以知道每坨key出现多少次。结果我大概听力有问题,人不是这个意思。所以面试官提示:我不关心value。于是俺醒悟:答; 那就用Set。奇怪的是他也没有追问关于Set的选取和实现,就跳到下一个问题了。事后想来,这是教训:应该先问清楚对方的需求再答题。平时我肯定是这么做的。但不知道为什么面试时这些常识通通忘掉了,先入为主。当时好像也不紧张阿。

     

    之后进入编程时间:写一坨函数交换两个String。我一听想,难道是传说中的陷阱?于是特意确定,你是想我写一坨函数:void swap(String s1, String s2),运行后s1的值同s2的值交换?对方说是。于是我说不可能。解释了pass by valuepass by reference。然后对方问怎么可能。我说你用StringBuffer或者一坨Array/某坨Collection都行。他好像满意了。于是跳到下一个问题。

     

    问:说说一坨request进来后,JSPlife cycle。我背书。然后他追问:怎么保证线程安全。答不要用instance variable。你要用partial/full synchronization也行,但这多半表示你的设计出问题了。然后他又反过来问:那你在JSP里怎么保证不用instance variable。我说不用<%!就行了。其实我们有严格的编程规范。像<%!这种东东只在书上见过。俺一辈子都没用过。两人笑。后来面试官又问了几个常见的Java/JEE问题,不过我忘了。

     

    真正的算法题没几道。都比较简单。第一道是两坨排好序的数组。求它们的overlap。比如[a, c, e, f][d, a, g, h, k, f, s]overlapaf。其实就是求他们的LCS。那么简单的题,我居然一下卡壳。当时不知道为什么脑子完全被LCS的常用算法占据。问题是,这样就没用上排序这项条件。我也想到了用类似Merge Sort的方法做,但不知为啥又把它否定了。这个时候对方提示了一下,说brute force怎么做,我赶快答。然后就想出了答案。接着对方问复杂度,我说O(m+n),对方就跳到下一道题了。这次失败的教训是

    • 镇定,镇定,再镇定。我居然忘了多演算几个例子,问他对复杂度的要求,以及从brute force开始推演。
    • 练习,练习,再练习。在时间压力下解决问题同悠闲地做题自娱自乐有本质区别。至少压力会干扰我的直觉,让一些平时看来简单的东西变得捉摸不透。平时就注意夯实基础和拓宽思路才不会在关键时掉链子。
    • 临场经验也挺重要。其实Polya的解题方法我也常用。平时开会和给学生讲题也是站在白板边就开始大声思考。但到了面试,还是觉得思路非常拘束。

     

    第二道算法题是一坨任意整数数组。写一个函数,把数组里的奇数放前面。偶数放后面。比如[1, 2, 3, 4, 5],处理后得到[1, 3, 5, 2, 4]。这次我学乖了,先演算了几个例子,然后问了他顺序重要不。他说不重要。我说,俺决定从最简单的开始,试一试顺序做,放一坨下标,指向数组起始元素。说到这里,算法出来了。然后分析复杂度,时间O(n),空间O(1)。好像他也就满意了。虽然这次稍微顺利了点,但感觉还是非常束缚。完全没有平时编程时思路清澈自由的感觉。貌似解释思路只是为了拖延时间,脑子里好像被塞了一块抹布。非常郁闷。

     

    最后一题刚好关于Suffix Tree,就不多说了。

     

    然后是我的提问时间。我问了公司的文化。然后问除了Job Description上的条条,他们到底找什么样的人。然后又问了他们的开发流程。顺便聊了下流程,表明自己对软工的套路也熟悉。

     

    最后大家道再见。面试官说会同HR的人讨论。再看有没有必要安排下一轮面试。比较诡异的地方是,我申请的是架构的职位,但电话面试没有问关于设计和架构的问题,也没有问和人打交道的问题。还有他也没有问关于scalability的问题和多线程编程的问题。这也比较奇怪。据说他们是天天和这些东西打交道的。我猜大概是以为电话面试是用来过滤候选人的,所以不会复杂和面面俱到。现场面试的题目会更深广一些。

    发表于 @ 2008年07月20日 00:23:00|评论(loading...)|收藏

    新一篇: RIP: Randy Pausch | 旧一篇: The Road Not Taken

    评论

    #duguguiyu1984 发表于2008-07-19 13:41:11  IP: 125.46.31.*
    连g9老大也要电面,这年头不好混啊:)。。。
    2008-07-19 17:38:16作者回复
    囧rz囧rz。这我就要惭愧到死了。
    #Googol 发表于2008-07-19 22:54:29  IP: 221.217.50.*
    这就是面试的参考资料啊~~~~连心理辅导都有了
    #xingranliuyun 发表于2008-07-20 01:06:14  IP: 61.149.35.*
    老大加油,相信凭你的实力没啥问题。
    #icoding 发表于2008-07-20 05:07:19  IP: 220.194.18.*
    恩。这年头牛人也不好混啊
    #hacker47 发表于2008-07-20 06:45:30  IP: 61.191.116.*
    自己干吧,说不定还有机会面试别人呢,让别人紧张不知道啥感觉,呵呵。
    #pongba 发表于2008-07-20 23:25:39  IP: 222.94.208.*
    这坨面筋很强大:-)

    同意范怀宇同学!
    #DelphiNew 发表于2008-07-21 01:35:36  IP: 121.33.243.*
    这个interview很成功啊。
    关键是阁下有丰富的知识库,并且表现出了从容、自信和探索精神~
    #vba_2001 发表于2008-07-21 06:50:25  IP: 220.249.42.*
    怎么感觉面的是英文.难道你以前是做搜索的我第一次听说suffix tree算法
    #PrideRock 发表于2008-07-21 10:29:17  IP: 219.143.80.*
    这坨面筋很强大:-)

    同意范怀宇同学!
    #l0vehj 发表于2008-07-22 23:00:05  IP: 218.241.173.*
    什么叫坨
    #mmcjr 发表于2008-07-23 02:04:29  IP: 121.9.230.*
    已阅
    #mmcjr 发表于2008-07-23 02:04:35  IP: 121.9.230.*
    已阅
    #RonoTian 发表于2008-07-23 21:06:57  IP: 219.134.70.*
    “第二道算法题是一坨任意整数数组。写一个函数,把数组里的奇数放前面。偶数放后面。比如[1, 2, 3, 4, 5],处理后得到[1, 3, 5, 2, 4]。这次我学乖了,先演算了几个例子,然后问了他顺序重要不。他说不重要。我说,俺决定从最简单的开始,试一试顺序做,放一坨下标,指向数组起始元素。说到这里,算法出来了。然后分析复杂度,时间O(n),空间O(1)”

    这坨好像是不需要O(n)的时间的。。。可以考虑,比如:
    重前往后,遇到偶数停止,再重后往前,遇到奇数停止,然后交换这两数。。。。
    #RonoTian 发表于2008-07-23 21:12:24  IP: 219.134.70.*
    不好意思,也是O(n)的。。。
    #gaoning87 发表于2008-07-24 07:44:56  IP: 60.222.106.*
    if(坨="堆")
    {
    return 1;
    }
    #onlonely 发表于2008-07-24 19:36:45  IP: unknown, 125.35.*
    太强了,很多东东都看不懂呀。
    #akilee 发表于2008-07-24 21:18:29  IP: 10.249.64.*
    lz除了奉献了一坨强大的面经之外,也让我对坨的概念有了全新的认识
    感谢!
    #fyxxq 发表于2008-07-25 04:20:09  IP: 202.108.130.*
    楼主太强了!
    #careprad 发表于2008-07-25 04:35:40  IP: 58.48.110.*
    学习了一大坨经验
    #hitler521 发表于2008-07-25 04:53:52  IP: 220.177.145.*
    赌东道
    #inthecs 发表于2008-07-25 21:36:10  IP: 219.236.2.*
    很多东东都看不懂,经验啊
    #niubbb 发表于2008-07-27 08:41:02  IP: 61.146.206.*
    阅 ~
    #sqrabs 发表于2008-07-27 10:53:01  IP: 222.135.196.*
    看懂的还有很多,惭愧
    #zgl2008 发表于2008-07-28 00:01:24  IP: 219.234.132.*
    虽然看的很晕 但是 老大您的量词很牛啊 都是用 坨 来计算的
    #EsunYang 发表于2008-07-28 02:28:42  IP: 61.145.246.*
    还记得这么清楚,不错嘛.
    人人都有知识盲点的, 刚好问到不懂的也正常.
    #EsunYang 发表于2008-07-28 02:29:10  IP: 61.145.246.*
    还记得这么清楚,不错嘛.
    人人都有知识盲点的, 刚好问到不懂的也正常.
    #aoksdasd90 发表于2008-07-28 03:12:50  IP: 210.176.30.*
    我们是http://www.kingofcoders.com(编程王)网站的全队成员,我仅代表我们团队(kingofcoders全体成员)给您发了这封电子邮件!

    kingofcoders创始人Peter(张民杰)目前在香港,主要从事计算机软件和操作系统的开发,kingofcoders的合作者之一兼业务主管yatell(胡勇)目前在上海,主要从事计算机软件,特别是企业级开发(在这里http://www.kingofcoders.com/leaderTeam.php 有咱们团队的详细介绍,欢迎浏览),就这些来自五湖四海的年轻人通过Internet组合在一起,大家默认配合,将kingofcoders从心中的一个虚拟的东西变成了实物,那就是www.kingofcoders.com 站点.

    目前阶段,咱们团队的主要任务是办起一份属于kingofcoders的IT电子杂志,各位通过kingofcoders电子杂志可以了解一些行业的最新动态,了解一些国外国内的一些新技术发展,从杂志中学到一些知识和经验。

    由于受到kingofcoders初期阶段人手不够,对行业不太了解,技术,资金等方面的限制我们通过互联网召集优秀的原创文章不失为一种行之有效的方法!
    内容(目前阶段)准备征集的文章是涉及到Java体系,.net体系 web2.0体系 PHP体系,OS体系五个体系;
    当然如果您有其他计算机方面的原创优秀文章也是欢迎的!
    相信各位看到一个站点从建立到成长到壮大的过程是非常自豪和有成就感的事,因为我们每个人都注入了自己的一份力量!

    忠诚的希望您投稿给我们!我们将在kingofcoders主页和kingofcoders杂志留下您的足迹,也会给您一点微薄的稿费(50RMB整),仅代表我们kingofcoders的心意,当然如果您拒绝签收,我们将会以您的名义捐给四川灾民,衷心的希望四川灾民早日恢复生产生活!

    如果你对kingofcoders站点有什么建议和意见也希望给我们发Email,联系我们!在这里我代表kingofcoders全体成员感谢您,

    感谢您对kingofcoders的支持,感谢您对中国软件事业的支持!

    我们的联系方式是:Email:mcheung63@hotmail.com

    #aoksdasd90 发表于2008-07-28 03:12:53  IP: 210.176.30.*
    我们是http://www.kingofcoders.com(编程王)网站的全队成员,我仅代表我们团队(kingofcoders全体成员)给您发了这封电子邮件!

    kingofcoders创始人Peter(张民杰)目前在香港,主要从事计算机软件和操作系统的开发,kingofcoders的合作者之一兼业务主管yatell(胡勇)目前在上海,主要从事计算机软件,特别是企业级开发(在这里http://www.kingofcoders.com/leaderTeam.php 有咱们团队的详细介绍,欢迎浏览),就这些来自五湖四海的年轻人通过Internet组合在一起,大家默认配合,将kingofcoders从心中的一个虚拟的东西变成了实物,那就是www.kingofcoders.com 站点.

    目前阶段,咱们团队的主要任务是办起一份属于kingofcoders的IT电子杂志,各位通过kingofcoders电子杂志可以了解一些行业的最新动态,了解一些国外国内的一些新技术发展,从杂志中学到一些知识和经验。

    由于受到kingofcoders初期阶段人手不够,对行业不太了解,技术,资金等方面的限制我们通过互联网召集优秀的原创文章不失为一种行之有效的方法!
    内容(目前阶段)准备征集的文章是涉及到Java体系,.net体系 web2.0体系 PHP体系,OS体系五个体系;
    当然如果您有其他计算机方面的原创优秀文章也是欢迎的!
    相信各位看到一个站点从建立到成长到壮大的过程是非常自豪和有成就感的事,因为我们每个人都注入了自己的一份力量!

    忠诚的希望您投稿给我们!我们将在kingofcoders主页和kingofcoders杂志留下您的足迹,也会给您一点微薄的稿费(50RMB整),仅代表我们kingofcoders的心意,当然如果您拒绝签收,我们将会以您的名义捐给四川灾民,衷心的希望四川灾民早日恢复生产生活!

    如果你对kingofcoders站点有什么建议和意见也希望给我们发Email,联系我们!在这里我代表kingofcoders全体成员感谢您,

    感谢您对kingofcoders的支持,感谢您对中国软件事业的支持!

    我们的联系方式是:Email:mcheung63@hotmail.com

    #zywhuiss 发表于2008-07-28 20:03:04  IP: 123.127.75.*
    很好得面试经验,顶!
    #aku8714 发表于2008-07-29 02:18:34  IP: 59.137.209.*
    哎!看到自己的差距了,谢谢!
    #wendaoke 发表于2008-07-30 09:32:29  IP: 117.88.237.*
    像<%!这种东东只在书上见过。俺一辈子都没用过。两人笑。

    小弟刚学,呵呵,能不能请教下,为什么不这样用啊?呵呵,多谢了
    2008-07-30 10:26:01作者回复
    &lt;%!在它所在的JSP对应的servlet里创建instance variable,而servlet里的instance variable不保证线程安全
    #zheng616 发表于2008-07-31 20:04:44  IP: 123.151.37.*

    int[] a=[1, 2, 3, 4, 5];
    int[] result=(a.Where(x=>x%2>)).Union
    (a.Where(x=>x%2==0)).ToArray();
    一句话就完了,有那么复杂吗?
    #icyfarer 发表于2008-08-01 04:54:00  IP: 119.129.160.*
    呵呵 ,学习。

    写一个函数,把数组里的奇数放前面。偶数放后面。比如[1, 2, 3, 4, 5],处理后得到[1, 3, 5, 2, 4]。
    自己写的一个,帮我看一看。另外楼上的算法不大懂,能解释一下吗?

    public class test1
    {
    public static void main(String[] args)
    {
    int[] a={1,2,3,4,5,6,12,45};
    int istart=0;
    int iend=a.length-1;
    while(istart<iend)
    {
    if(a[istart]%2!=0)
    istart++;
    else
    {
    if(a[iend]%2==0)
    iend--;
    else
    {
    a[istart]=a[istart]+a[iend];
    a[iend]=a[istart]-a[iend];
    a[istart]-=a[iend];
    }
    }
    }
    for(int i=0;i<a.length;i++)
    System.out.println(a[i]);
    }
    }
    #allhomail 发表于2008-08-02 04:33:10  IP: 58.62.96.*
    蛙大太牛了.一坨强淫.

    ps: kingofcoder 不是东方未明老大的网站么?
    #allhomail 发表于2008-08-02 04:34:44  IP: 58.62.96.*
    我拜了. 原来kingofcoder 和kingofcoders 是不同滴, 俺们太孤陋了.
    #bubble1000 发表于2008-08-05 08:24:14  IP: 202.108.130.*
    看来基础的知识还是很重要呀。
    #bubble1000 发表于2008-08-05 08:24:41  IP: 202.108.130.*
    看来基础的知识还是很重要呀。如果正要这样面试我,我估计一个公司都进不去。
    #f891379133 发表于2008-08-06 04:42:31  IP: 221.10.97.*
    好tuo,
    #devil_hua 发表于2008-08-06 09:35:24  IP: 116.30.92.*
    孤陋寡闻了。。。汗啊,看来知识缺得还真不是一丁点,哥们强
    #devil_hua 发表于2008-08-06 09:35:43  IP: 116.30.92.*
    孤陋寡闻了。。。汗啊,看来知识缺得还真不是一丁点,哥们强
    发表评论  


    当前用户设置只有注册用户才能发表评论。如果你没有登录,请点击登录
    Csdn Blog version 3.1a
    Copyright © g9