程序员的自我修养
Home » 面试 » 也谈“最糟糕的编程面试题”

也谈“最糟糕的编程面试题”

4条评论6,006次浏览

长假过后的第一天,突然看到一篇让我十分有共鸣的文章——最糟糕的编程面试题。这篇博文主要吐槽了面试题中最常犯的2个问题:太过困难不切实际。而文中举的例子:如何检测链表是否存在环路,也恰巧是我曾经被面试过的一道题目。而那次面试也堪称我面试经历中最让人难(dan)忘(teng)的一次。

第一个故事——最难忘的面试

背景:校招,笔试通过后连续三轮面试,每轮都会刷一部分人,具体是那个公司就不说了,相信去过的同学基本都能猜出来。第一面,自我感觉表现一般,等结果时一直在想会不会一轮跪。结果这个岗位19个面试者刷了13个,我有幸留下了。第二轮,自我感觉十分良好。面试官问了很多这样的问题,如:如何判断两个链表是否有共同的尾巴、字符串相似度、链表中两元素交换等等。

后来他问到如何检测链表是否是环形链表,也就是首尾相连的链表,我当时想了想就答道,用2个指针,开始同时指向一个节点,然后一个指针移动,另外一个不动,若它们再次指向同一个节点,则是环形的。面试官笑道,用2个指针的想法不错,能否继续改进?我想了想,时间复杂度已经是O(n)了,难道要变成O(lgn)?那岂不是要借助于树之类的方法?这貌似有点太难了,短时间之内无法搞定。面试官看我犹豫了很久,提示到,还是使用2个指针,你再想想有没有其它的方法。然后我纠结了半天后,尝试的说了个当时觉得很粗(cao)糙(dan)的方法:一个指针走2步,一个指针走1步。没想到这尽然真是面试官的“标准答案”。面试官笑呵呵的说,不错不错。于是我心里一阵阵小激动,看来不用多久,我就会升职加薪,当上总经理,出任CEO,迎娶白富美,走上人生巅峰,想想还有点小激动呢。

之后的面试都十分的愉快,面试官的问题都能给出答案或者在提示下给出答案。最后,面试官说,你写个二分查找吧,然后拿出了纸和笔放在我面前。我犹豫了下说,我说下二分查找算法过程行么,纸上写代码我不太习惯。然后面试官说,没事,就是看看你的代码风格。然后我就刷刷刷的几下写完了。然后面试官看了一眼就紧锁眉头,说,你注意到边界情况了么,比如若是某某情况下,你这里会出问题。然后我想了想,好像确实如此,然后就改了下代码。然后面试官又皱着眉头说,现在就OK了吗?要是出现了XX情况下,你的代码还好使吗?然后我发现好像确实有问题,然后就又修改了下,接着仔细的过了遍代码,觉得没问题了就给面试官了。然后面试官看了看说,小伙子太马虎了呀,这些细节问题怎么能不考虑呢。我腼腆的答到,主要平常用不上,觉得知道原理就行了,没想到这么简单的地方还这么多需要注意的细节。然后面试官笑呵呵的宣布面试结束,去一边等结果吧。

恩,故事的最后,是的已经是最后了,就是我第二轮被刷掉了。我十分的纳闷,到底是哪里出了问题,全程面试官的问题我都回答上了,虽然有些是经过提示才答上来的。难不成是最后一道纸上写二分查找?不至于吧?这个简单到让人觉得无聊的东西能占面试的多大比重啊?你看不到我解决问题的过程和思路么?难道真的因为一个纸上写二分查找把我刷了?此处省略吐槽1000字。

后来,大概过了一个月后,我突然看到同学买的编程之美,上面有一节讲到了作者面试他人的一段经历:应聘的人觉得自己答出了大部分问题,显得十分得意,但最后让他写个二分查找居然错误连篇,于是把这个应聘者给拒了。(大概讲的是这个意思,具体的原话找不到了,看过编程之美的应该都记得这个故事)。当时我就斯巴达克斯了,原来我的面试和书上的情况居然是一模一样的。(谁让你面试前不看面试的葵花宝典——编程之美的?)

吐槽:其实从不同的角度来看这个问题,大家都有不同的说法。面试官觉得连二分查找这样简单的代码都没办法写出来,差评;而我觉得,你看不到我解决问题(大部分问题来自编程之美)的过程和思路,纠结于一个纸上写代码,而实际中谁没事在纸上写代码,那些小问题调试几次不就解决了么,何必纠结这种细节,恶心!话说要是我提前看了编程之美,那面试官80%的题目我都能完美的答出,不知道这样的应聘者是不是他们想要的,还是只是想要一个看过编程之美的人?

第二个故事——最无语的面试

背景:社招,同一家公司。这次是想从国企跳槽出去时发生的事情。故事很简单,第一轮面试,各种扯淡结束后,正题开始,第一个问题:看你简历上写对jvm有些了解,那你知道jconsole么?我说用过,之前有个web项目老是运行几天后内存溢出,于是用jconsole分析了下原因。面试官:那分析出来了没?我:分析出来了,但不是用的jconsole,jconsole dump出来的内存快照显示占用内存最多的都是string或者数组这些类型,没有参考价值。后来机缘巧合下发现是jar包冲突造成的。

面试官的第二个问题:那你知道jstack么?我:jstack..不知道,是像jbpm这样的开源软件么?面试官:...那你知道jmap么?我:(茫然)。面试官:那jstat呢?我:(继续茫然)。面试官:那你知道什么?我:...我知道J阿娃。然后就没有然后了。这真是一个闻者伤心,听者流泪的故事啊。

吐槽:面试官的主要职责不是去发现应聘者会些什么的么?我简历上写了解jvm,你可以问问我什么新生代、永生代、Eden区什么的,你问我知不知道几个调试用的工具(后来回去后查了下才知道),然后最后都得到否定的回答后就把我拒了,简历上还写了会其它东西呢喂,问下不行么?还是说你只想问你知道的,而不是我知道的?

最后

面试中遇到的部分面试官会尝试着去了解你会些什么、解决问题的思路和想法,遇到这样的面试官无疑是幸运的;大部分面试官通过一个个技术问题来评估你的技术能力;但总会遇到少部分的面试官,通过各种各样的手段和问题来显示自己很牛X,而你,只不过就是个菜鸟。遇到这样的面试官——居然还可以成为面试官,这样的公司,不进也罢。

最后,附上IDE里面写的二分查找。

(转载本站文章请注明作者和出处 程序员的自我修养 – SelfUp.cn ,请勿用于任何商业用途)
分类:面试
标签:
4条评论
  1. 留言说道:

    好玩/tx

  2. hddfly说道:

    学习了

  3. scott说道:

    如果换个角度,对于你的吐槽可以不可以这么理解。
    以下都是无责任推测,绝没有为任何人或单位洗地的意思,我应该也绝对没有在你面试的单位任职过。
    第一个面试
    虽然面试官不知道从哪个环节已经pass掉你了,但依然完整的面试了你并且给了你很多个人的建议和指导,并且是在校招这种超大工作量的情况下,另外对你自己来说,也必然有所收获。
    第二个面试
    对于社招来说,一般用人单位/部门只想找到尽快能上手干活的人,以及是否符合这个岗位,而不在乎他是否特别全面,特别牛逼,这是一个双向筛选的过程,面试你的人有可能只想通过这种方式来判断你是否符合这个岗位,给你造成的感觉必然是不太好。

    • Eve说道:

      Have you ever wondered who posts some of this stuff that you come across? Recently it seems to have become an epiicmde, although it seems to be changing for the better. Do you agree?

发表评论


profile
  • 文章总数:79篇
  • 评论总数:280条
  • 分类总数:31个
  • 标签总数:44个
  • 运行时间:1130天

大家好,欢迎来到selfup.cn。

这不是一个只谈技术的博客,这里记录我成长的点点滴滴,coding、riding and everthing!

最新评论
  • 张瑞昌: 有很多,比较常见的是Jacob迭代法,一次迭代O(n^3), 迭代次数不清楚。 如果是手动算的话按照定义求就可以了
  • Anonymous: :mrgreen:
  • lc277: 你好 我想问下一般删除节点要多久,要删除的datanode大概用了 1t,解除授权已经30多小时还没完成,请问是出现什么问题了吗 麻烦告诉下谢谢 qq1844554123
  • Anonymous: 你好 我想问下一般删除节点要多久,要删除的datanode大概用了 1t,解除授权已经30多小时还没完成,请问是出现什么问题了吗
  • Anonymous: :smile: :grin: :eek:
  • 李雪璇: 想要完整代码,可以帮忙发给我吗
  • Anonymous: 请问一下,那个 user的推荐结果楼主查看了么? 为什么输入数据 最高是五分,输出结果都是7分8分啥的?怎么设置输出的分数的最 大值?
  • Anonymous: 那个 user的推荐结果楼主查看了么? 为什么输入数据 最高是五分,输出结果都是7分8分啥的?
  • Anonymous: stopGracefullyOnShutdown在yarn- client模式下我测试的无效,你的呢
  • Anonymous: 另外,import的lib包能否发个列表.
  • Anonymous: 部分程序已经无法使用, 另外 你的import代码 也应该放上来哈
  • wzq: 赞
  • 增达网: 受教了!呵呵!
  • Anonymous: :!: :smile: :oops: :grin: :eek: :shock:
  • 27: :razz: dsa会报错,rsa不会
  • Anonymous: 看错了 忽略我
  • Anonymous: UserSideCF这个类在哪里
  • 晴子: 在主节点初始化CM5数据库的时候报错误:Verifying that we can write to /opt/cm-5.9.0/etc/cloudera-scm -server log4j:ERROR Could not...
  • zhangnew: 就4题 :?:
  • linxh: “ 但要是遇到预先并不知道数组的长度而又需要获取正确的(或者称之 为原始的)split长度时,该如何处理呢。。? ” 印象中可以split函数参数传-1?