
我呢并不打算在这里谈一些诸如要守时啊要注意礼貌啊这种人尽皆知、假大空的问题。同时也不会告诉你一些难以掌握的语气、手势等技巧这些技巧需要长期磨练才能获得对于不是频繁跳槽的人或者需要换一个高端如CTO的人来说我觉得是没有太大意义的。我打算从两个方面去着手讲解被面试时一些被面试人容易犯下的、可能自知的问题以及面试官可能会犯的错误。我先从“被面试”开始说起。假如你正在投简历、换工作如果想要成功你必须至少经过“写简历”和“去面试”这两个阶段。关于如何写简历我在两年前已经写过这里就不再重复了。如果你很幸运拿到一个面试的机会那么面试过程也许就会决定着最终的结果会如何。不过其实在这两个阶段之前还有另一个阶段叫做“预习准备”而这一个阶段却是绝大部分人所忽视的部分。“哦不就是看看’面经’之类的东西做做练习题么。”如果是若干年前的我读到这篇文章可能也会这么想。不过实际上我想说的是你需要预习一下你打算去的那个公司的情况。比如说该公司主营业务是什么该岗位将会做什么事情有的时候主营业务和招聘你的部门没有关系所使用的开发环境是什么团队规模之类的。不要小看这部分工作的作用虽然面试官不会因为你对这种问题的熟悉程度而评判你的技术水平但可以肯定的是一定会对你的个人印象有所加减。比如说如果你不准备这些问题则可能会没有复习好该复习的技术或者一不小心问了一个很蠢的问题我会在后面的蠢问题一节给大家一些具体的例子。其实在中国的程序员包括其它职业其实真的很幸福因为大部分的单位对这一点要求都不严格只要你对你要应聘的单位和岗位有一点了解面试官就该两眼放光了。如果放在国外你需要的不仅仅是了解这么简单你还需要针对你要投的公司和职位重写一遍你的简历否则你是根本不可能得到面试机会的。而放在中国几乎没有人这么干也不必这么干。面试官的水平限制不会这么认真的看待招聘工作。面试的过程很可能会千差万别有的会纯问技术问题有的纯聊天还有的可能会很复杂。我只说我们所应用的面试流程答题、提问、以及回答。在面试之前我们会给一份简单的题目要求应聘人员在一定时间内作答考核的是各个方面包括基础知识、新技术了解、编程素养、以及逻辑能力。严格来讲这应该是笔试部分不过由于我们是随即立即面试的因此面试的时候有的时候会据此展开一些提问。比如说你对泛型了解吗能否说一下泛型的作用和意义是什么也就是说在你答题结束之后你其实是有机会对你即将要面试的内容进行一些猜测。当然了这不一定凑效因为有人也遇到过明明应聘c职位却给一份java题而随后立即展开的面试又与这些完全无关。那么这时候只能说该公司的招聘人员不够专业你提前进行的思路整理没有发挥作用并不是你的错。而我在实际的面试过程当中也会发现一些人没有很好的利用这些关键的信息来做好调整以至于随后的面试中没有充分发挥。这个在接下来的蠢回答一些中也会给大家一些示例。在开始讲解具体的示例之前需要给大家澄清一点到了面试阶段真正考核的不完全是你的技术问题沟通能力的考察如果不占2/3至少也会占到1/3。所以说你在面试的过程中要点不是展示你有多牛X而是要展示你的人品与沟通能力。蠢回答案例一问请问你对测试这项工作是如何理解的比如说你觉得这是一个创造性居多的工作还是重复性居多的工作答我之前的一份工作是美工我觉得测试跟美工应该差不多吧我挺喜欢美工这种工作的因为会需要很多的思考。我觉得测试也是一样的要想很多不合理的地方而且每次面对的产品需要想完全不一样的问题。问你是如何规划你的职业生涯的或者说你为什么打算转行做测试或者说美工这个工作对你来说存在什么问题答其实因为我哥是做测试的他说做测试挺好的他建议我转行做这个。点评这是一个相当失败的回答因为不仅仅表明你对未来完全没有规划而只是听从他人的随意指点而且还表明你对你所投职位的工作、指责、性质等统统不了解。面试官也就是你的未来上司绝对不会找这样的人当手下因为搞不好会三天两头表达不适应甚至没过几天就会辞职。很奇怪吧我居然经历这样的面试这其实也是一种招聘方的失败案例后面会详解。当然啦一般能回答道这种地步的还只是个别经验极不足者。不过大家不要偷笑犯这类错误的人还不在少数只不过是程度的问题而已。这类回答的错误在于对你所投职位的了解不足或者是没有基本的职业规划以至于没有一个明确的自我升级改造的规划。比如我还遇到过有创业经历的人后来做了一段时间销售来我们这里面试做程序员。当我问到职业规划的问题时他说未来准备走Team Leader - 架构师 - CTO。这个时候我还觉得有点意思结果他话锋一转就更有意思了。他说最后再回去管理我们家的工厂其父母是开厂的。这一个回答也挺让我无语的当然也是一个极端案例。那么我们往不那么极端的方面说你应该提前想好我要专研哪一个方向数据库桌面应用工作流网络通讯开发网站系统我以后要做一个技术专家呢还是管理专家还是架构专家还是……你的思路越清晰面试官愿意招你的可能性就越大。挽救其实这个问题需要你在投简历之前就要准备好。很多高考考生填专业之前也没有想过这些问题选的什么专业是父母代劳的。就比如我们公司里面有人学的化学材料工程结果毕业后做UE设计。她就说专业都是父母选的等开始学了才觉得很不喜欢。如果因为这种蠢问题你被刷下来了你应该感到幸福因为那个未来对你来说也许是很可怕的。简而言之先想好了要做什么然后再讨论找什么工作的事情。案例二问既然你说之前的这个项目当中的权限系统是你负责开发的那你能否讲一下你的权限系统的机制是怎么样的答哦是这样的我们有一个页面是给管理员分配角色的然后有另一个页面是给角色分配权限的然后这个用户就有权限了。用户要首先在首页上面点击一个链接进行注册然后访问那个页面就会根据权限来输出。……讲了很久如何使用该网站涉及技术实现的几乎很少。问不好意思我打断一下你可能误会我的意思了。我想问的是你的技术是如何实现的。比如说某个用户是普通用户还是管理员这是如何识别的答是这样的这个需要管理员在一个页面中指定这个用户的角色如果分配了管理员角色那就是管理员否则就是普通用户……后面来往若干个回合还是没有明白问的是什么。点评这也是一个很悲剧的回答。该回答的错误在于沟通失败。虽然说沟通失败一般是双方都有责任的但是你不可能要求面试官如何如何吧所以你只能要求自己在这方面做得更足一些。其实该案例主要问题在应聘者身上因为很显然面试官所关心的肯定是你的技术实现而不是这个产品是如何使用的。挽救面试的时候也许你会紧张这是正常的。但是你需要不停地提醒自己集中精力听清楚面试官的问题是什么。如果你发现你不能确定面试官的问题是什么宁愿先反问确定问题的用意然后再作回答。当然了最高境界是我一问你就知道我想要什么。但如果做不到也不要发生风牛马不相及的情况。案例三问某个技术问题答等待了10秒钟是这样的开始解答技术问题点评这个相对前面那两个案例来说没有那么悲剧不过也足以导致被刷。这种回答情景给人感觉不好的原因在于你让人觉得你总是慢半拍。挽救如果你是需要很多时间思考的话呢或者说是超慢性子最好先说一句“这个问题有点复杂我需要稍微思考一下”之类的这比尴尬的等半天总强很多。我还遇到另外一个人在快面试完毕的时候说“抱歉昨天晚上通宵工作所以反应有点慢”。这也是一个较好的做法假如你真的是加班了。当然如果能在面试刚开始的时候就说出来会更好因为第一印象还是很难改变的。案例四问能否说一下泛型的作用是什么答泛型就是一个不同类型的数组然后又增删改的功能还可以直接foreach。问那ArrayList和泛型的ListT又有什么区别呢答ArrayList就是一个object数组。点评这种回答挺悲剧的。因为我能得到的结论除了你不是很了解泛型之外还得到了另外一个结论要么是不爱学习要么就是想混过去甚至两者皆有之。其实不了解不一定会被刷但如果是态度有问题那是铁定会被刷的。类似这样回答问题的还真不是极个别现象。也许是觉得鸡毛蒜皮的东西漫不经心又也许是因为心里面确实没底但又想要这份工作无论如何都给人一种不踏实的感觉。哦也许你不是不爱学习不是想混的人那么你更应该注意了因为这会给人以错误的印象。挽救如果你知道这个知识不妨稍微详细解释一下不要因为过分简化的总结给人以错误的印象。如果你心里不是很有底可以谦虚的表示“我不是很确定我们可以探讨一下看看我的理解是否正确。我是这样理解的……”。如果你其实是不知道的你可以大方的回答“这个我真不了解”。如果真因为你不了解而没有招你那么你试图蒙混的结果也不见得有什么改变即便真招了你在试用期也能暴露出问题来。如果要进一步改善就需要平时多积累知识了。这里也给一个我认为比较成功的真实案例问能否说一下泛型的作用是什么答很抱歉能不能给我讲一下泛型是什么我工作中应该是用到过的但是我不知道那一个是指泛型。问比如说ListT。答哦这个是泛型啊那我大概知道了。不过我实际工作中要求用我就用并没有仔细研究所以说的可能不是很对。我是这么理解的就是相当于一个模板写代码的时候不用惯性具体的类型是什么只管写逻辑到具体运行的时候给的是什么类型就自动变成那种类型了。问那你现在能否再说一下泛型的好处是什么答这个真的很不好意思我工作中没有要求了解里面的原理所以我也没有很仔细的研究过。点评这个案例中的候选人在技术上可能是有待改进的但是这一个回答从面试技巧上应该是比较成功的。我不排除会有更好的回答方式但是至少这个回答告诉我1、我不懂但我没有打算隐瞒2、我不很了解但是还是有一定的自信的3、我可以尽可能的把我所了解的内容告诉你。如果说还要进一步的改进我觉得应该是技术知识的积累回答技巧方面已经不需要再做更多的改进了。