这篇文章主要分享一下我平时在面试中常问的一个问题, 然后就面试者的回答给出一些建议. 其实面试还是有很多技巧的, 有时候面试被 Pass 不一定代表你的技术不行, 也许是因为沟通的过程中出了点小问题. 下面我们就以一道看似简单的面试题来实际的聊一聊.
题目
比较两个 list 是否完全相等.
看起来是挺简单的吧, 一般我都会要求在纸上写一段代码来实现一个这个小功能. 其实这道题本身并不是特别的严谨, 这也是我的本意, 我希望在我说完题目之后面试者会提出一些疑问, 比如说泛型的情况等等.
答案
非标准答案
这里我给出了一个答案, 但这并不是唯一也不是一个标准的解答, 我只是站在一个提问者的角度用这个答案来实际的分析一下我一般会从哪些方面去对面试者的水平进行一个简单的定位.
考察方向
1, 面试者是否能考虑或者追问是否包含泛型的情况.
2, 如果考虑到了泛型的情况, 会不会追问是基本类型还是实体对象.
3, 实体对象的情况下是否同时重写了他对象的 hashCode 和 equals 方法.
4, 面试者是否会追问这两个 list 的长度是否相等.
5, 如果能提问到实际的应用场景或者性能相关的问题会更好.
上面提到的 4 种情况都会对实际的实现有所影响, 不过我会根据面试者的实际情况来对他进行定位. 假如是初级开发的话一般能写出来并且逻辑上没什么大问题的都会通过, 如果是中高级的话对会整体实现的考虑要求更严格一些.
解析
这道题本身难道其实不高, 不过是要求手写, 这样的话可能会稍微的有点难度, 与其说难度的话还不如说是手写起来感觉没有用编辑器敲起来更顺手.
一方面首先考察是否先对两个 list 的长度进行比较, 因为如果说不相对的话就没有必要进行下面的逻辑了.
另一方面考察跳出循环的时机, 避免一些不必要的操作.
更重要的是面试者提出的疑问, 我会根据他提出的问题进行一些深度的交流. 如果说没有这些疑问的话我会适当的引导,
更多是希望面试者能提出一些自己的想法.
总结
其实面试是考察一个人的综合能力, 技术占一部分, 更多的还是沟通和表达方面的能力. 以上面这道题为例的话考题本身就不是太严谨, 目的就是让面试者提出一些自己的问题, 然后我会根据面试者的疑问进行一些更深度的交流.
面试本身就是一个表现自己的过程, 一方面放面试官了解到你对某个领域的了解程度, 另一方面让面试官感觉到你有很好的沟通能力. 其实后者更为重要, 不要以为我们作为一个程序员就不必掌握这项技能, 要知道你们的项目组是一个团队, 如果没有很好的沟通的话可能经常会导致一些需要或者别的方面的理解偏差, 从而造成各种返工的情况. 良好的沟通会让你在工作中心情放松感到很愉悦, 假如你所在项目上一般情况都没有人说话, 大家都是整体自己低头干自己的那你会不会有一种压抑的感觉呢? 所以有时候在项目人员分配的时候也会根据每个人的性格进行安排, 就包括工作环境对员工工作效率的影响都会影响到一个项目的进度, 所以大家在提供自己技术方面的同时, 情商和各种软技能也是非常重要的.
对想成为一个优秀的程序员的伙伴们来说, 想要成为一个优秀的, 有能力程序员的话, 其实作为一个开发者或者编程学习者, 有一个学习的氛围跟交流圈子特别重要! 这里我推荐一个 Java 交流 Q - 群, 708-701-457, 不管你是大牛还是小白, 大家都一起成长进步.
群内还有免费的学习, 面试资料提供
来源: http://www.jianshu.com/p/ebc048fd6afb