zoukankan      html  css  js  c++  java
  • 最近面试经历

        最近一段时间面试了好几家公司,总结一下吧。这些公司包括(但不限于^_^)火石、酷狗、多玩,还有两家专门为电信(移动,联通等运营商)提供后台业务系统解决方案的公司。除了火石之外,其他公司都是主动联系我的,比较幸运。面试之前我都没有做准备,平常心嘛,不要搞到像高考似的。

        先说一个感受:一杯水。其实一杯水对于一个公司来说并不那么起眼,但对于一个求职者来说,却显得非常重要。试想一下,一个人一天到晚在外跑,每到一个公司都要唇枪舌战至少2个小时,水对于这个人来说何其重要。这杯水也反映了公司的人性化程度到底有多高,这方面一些小公司做得比较好。各位HR,面试官应该注意一下这个问题。

        再来说说技术方面的面试,首先是试题。试题类型大概分三类:一类是关注理论知识及工作经验的,也就是说,你不一定要把某个知识点的实现步骤描述得很清楚,但你一定要知道这个知识点的作用,抽象一点就是,你的脑袋要保存一条指向这个知识点的索引,这个索引可能指向某本书,某个网页等。这类题目是广度相关,对于我来说没有什么难度。

        第二类是,你既然知道知识点的作用,你是否知道它的原理。例如,你了解mpl内static assert的原理吗?KMP模式匹配的原理是?IOCP完成端口的原理是?(这些我都理解,我这里只是举例子)这类问题是深度相关,而且,即使你以前已掌握其原理,但几年后再次被问道,你可能只有一丝印象。这里举个例子,其中一间公司的技术总监问我,C++的前++和后++怎么实现。我晕,如果我是5年前的话,这问题绝对不是问题。但是在我这5年的工作经历,要用自定义++操作符的真是少之又少,印象自然就很模糊了。如果实际情况真的要我去写一个++操作符,我可以参考<<C++ Primer>>啊,<<C++ Primer>>在开篇的时候就说,它是一本参考书。对于这类问题,我只能说碰运气,如果问到的问题我印象比较深刻,就能倒背如流,如果只有丁点印象(工作很少接触的),我能回答请参考XX书吗?

        第三类,把面试者当C++编译器前端。这类题目特别让我恶心,我看到这些题目一般是拒绝回答的。我觉得出这类题目的人傻X得不得了。这些人的思维还停留在10年前代大学C语言考试题的那个阶段。而且现在的大学也不会出这样的题目来考试!

        接着说说面试人,总的来说,面试我的人分两类,一类是聊天为主,辅以技术交流。这一类人比较好沟通,难度不大。

        另一类又是把你当编译器前端的人,不断的抠那些不常用,离奇古怪的语言细节,以显示自己牛逼之处,这类人我无法跟他沟通。

        我也当过面试官(2年时间),面试C++及Java的应聘者,我一般都是从应聘者的项目经历入手,展开,考验一下应聘者在项目中使用的技术是否真的掌握,特别是设计模式,重构,一些程序框架这类的技术,常常可以深入展开。我会问如下问题:为什么要使用这项技术(考察应聘者是不是为了使用新技术而使用新技术),这项技术带来什么优缺点(新技术的作用),与不使用这项技术相比有什么区别(任何新技术都是架构在旧有技术之上,这个问题主要考察应聘者是否知道新旧技术之间的关系,研究这些关系,可以开拓人的思维空间)。如果应聘者能说出个中玄机,基本上就合格了。我从来不会去抠语言细节,因为小众的东西对平常工作是没有任何帮助的,当然,你个人兴趣爱好这方面,我不反对。

        最后说说这些公司的试题及面试人所属的类型。火石试题有两部分:网试,这个属于深度,我把大学时看过的<<C++ Primer>>,<<More Effective C++>>都翻出来了。笔试比较简单,基本上都是广度类型。面试的人也就以技术交流为主,当然,也会有有两个深度问题,看运气如何吧,问了我一个前后++和HASH算法,前后++搞不定,HASH我的数据结构还有印象,还行吧。火石的技术及人事我都PASS了,最后是因为职业取向的问题,被我推掉了。

        酷狗,笔试(电脑上做的),也算简单,虽然是深度类型,但我大部分都有印象,不难(不过有些问题像出栈顺序之类的,我说5年前靠软设的时候就掌握了,但现在居然忘记了)。笔试完了之后来一个机试,做一个计算文件比特1的个数,显示进度条,不难。计算比特1个数的算法CSDN上有。面试人以技术交流为主。

        多玩这个比较有意思,试题属于深度类型,而且是很偏的,例如C++处理UTF8之类的,我晕,你要我用Java处理还行。还问我UTF8内存格式是什么,我又晕,UTF8之前的确是接触过,是1年前公司Java程序乱码排除时研究过的,但现在我真的只有一丁点印象,搞不定啊,我能wiki一下吗?面试的人也比较有意思,第一个人,随便问了一些简单问题,比如说什么是线程,会不会win32编程,我晕,你以为我刚毕业啊?Observer模式是什么,我就随便糊弄了一下他,然后我就扯到AOP上边(AOP其中一个能力就是实现observer),果然,他上当了,他说AOP是AOP,设计模式是设计模式,两者无关,我TM一看就知道你只是初出茅庐的小弟而已。接着来了第二个人,这个人就更有意思了,不断地抠语言细节,坑爹呐这是!!!还有就是问道CRT堆的问题,就是静态连接和动态连接时CRT堆创建的区别。刚好我也有研究过这个问题,我就直说我也研究过,回答的时候特意说错了某些内容,果然,他的信念开始不太坚定了。总的来说,多玩面试是比较失败的,我无法理解这些人的行为,自然也就沟通不了。

        其余两家做业务系统的,一家是UNIX的,不懂;另一家虽然有UNIX,但也有windows,而且说给我一个适应期,去熟悉UNIX环境,条件也开得最好,但还是职业取向的问题,推掉了。

        总结,某些公司的面试人思维真的无法理解,难道你们公司真的要招聘一些编译器前端吗?设计模式,重构已经流行多年,而并行运算又将成为下一个增长点,你还停留抠语法的阶段,你有未来吗,你的未来在哪里?

  • 相关阅读:
    构建之法阅读笔记01
    软件工程个人作业01
    第一个PSP0级
    java实现课表的增加
    软件工程概论01
    异常处理
    流与文件课件课后作业1计算容量
    第九周课堂测试
    第八周动手动脑
    JAVA项目中常用的异常知识点总结
  • 原文地址:https://www.cnblogs.com/rickerliang/p/2084206.html
Copyright © 2011-2022 走看看