程序员面试笔试经验

上传人:郭** 文档编号:105901090 上传时间:2019-10-14 格式:DOC 页数:4 大小:58.41KB
返回 下载 相关 举报
程序员面试笔试经验_第1页
第1页 / 共4页
程序员面试笔试经验_第2页
第2页 / 共4页
程序员面试笔试经验_第3页
第3页 / 共4页
程序员面试笔试经验_第4页
第4页 / 共4页
亲,该文档总共4页,全部预览完了,如果喜欢就下载吧!
资源描述

《程序员面试笔试经验》由会员分享,可在线阅读,更多相关《程序员面试笔试经验(4页珍藏版)》请在金锄头文库上搜索。

1、程序员面试笔试经验 【目标】 相信和不少朋友一样有了几年工作经验成为Senior后就开始了面试别人的经历我在最初这个阶段只是按照自己的想象把”找到基础好的程序员“”找到算法能力优秀的程序员“”找到有Android开发经验的程序员“等作为面试的目标但是实际的经历告诉我尤其是按“基础好”“算法好”这些目标招到的人最终效果并不好比如有的面试者基础知识和算法掌握情况不错进程、线程、内存等概念清晰基本的Hash二叉树快速排序等数据结构和算法也比较熟悉但是进公司后在实际工作中表现得很糟糕后来我才发现原来是我的面试目标出了问题我原先的面试方法更像是大学的算法或操作系统期末考试按照这种方法让许多并不合适的人通

2、过了面试同时也可能错过了许多合适的人 后来我的反思是从公司的角度讲面试的根本目的是找到能够干好工作的人而“高学历”“算法好”“基础好”“有经验”这些都是表象而不是根本它们并不能直接和“工作好”划等号 【方法】 目标明确了但接下来的问题是假设面试者是一个黑盒系统“工作好”不是直接可观测变量你所能直接观测的变量是基础、算法、经验、学历、性格、谈吐、年龄等等所以实际上你只能从“基础好”“算法好”等可以直接观测的量去推测“工作好”的概率这就是一个在“X好“条件下工作好“的条件概率问题:P(工作好|X好) 根据这个模型面试所应该考察些方面就很明显了那就是选择那种最具有区分性的方面来考察比如考察面试者的体

3、型特征没有太大意义因为P(工作好|高)P(工作好|矮)P(工作好|胖)P(工作好|瘦)的概率都差不多;所以体型特征不具有区分性这不是面试所应该关注的内容 面试官应当结合职位的要求明确些因素具有比较好的区分性比如如果要招一名技术门槛比较高的3D游戏引擎开发工程师面试者A具有3D游戏引擎开发的经验但是在基础知识和算法面试方面表现一般;面试者B相反基础知识和算法面试表现很好但没有游戏开发经验而你只能选择其一你选谁呢?其实这就是两个条件概率问题P(工作好|经验好基础一般算法一般)和P(工作好|没经验基础好算法好)这个问题就留给面试官来判断了就我个人而言对于技术门槛较高需要技术积累的职位经验更加说明问题

4、因此我更倾向于面试者A 下面我再结合自己的经验谈谈对面试中常见方面的看法 【算法】 算法是Google和MS等大公司面试所重点考察的内容我个人很喜欢算法曾经参加ACM/ICPC拿过北京赛区的13名但是就个人经验来看我所接触过的绝大多数开发职位而言算法都不适合作为考察面试者优劣的主要因素对于普通的非算法性开发职位考察面试者的算法就相当于考察他打乒乓球好不好一样与目标“工作好”的相关性太低就我个人的经验来看差不多P(工作好|算法好)=50%也就是算法面试没有太大的区分性 甚至还有一种很不好的情况特别多地出现在算法好的面试者身上我称之为“只磨刀不砍柴”什么意思呢?有类人只对什么A*算法异步编程JVM

5、类加载机制这种纯技术问题感兴趣对实现用户需求毫无兴趣这类人看起来有一定的技术能力但是对公司来讲贡献十分有限甚至不如技术一般但认真负责的人所以一旦遇到面试者算法好我就特别留意考察会不会是这种“只磨刀不砍柴”的人 另外虽然我个人不了解Google和MS但我对于其特别重视考察算法能力的面试策略是持怀疑态度的即使在这样的世界级大公司算法虽然重要但可以想象在项目实施过程所遇到的各种各样问题中算法问题绝大多数时候不会是主要瓶颈没有到那种需要每个人都是算法高手的情况实际上绝大多数项目真正难点并不是一两个算法瓶颈甚至也不是单点的技术瓶颈而是系统性的组织、协调、设计、开发问题有大量的看起来不是那么有技术含量的脏

6、活累活也有许多问题是由于信息不足并不是技术能力强就能克服这些困难一个团队最好优势互补有人算法强有人业务分析能力强有人擅长后端服务有人擅长前端界面有人聪明有人踏实这是最好的如果按照“算法好”的单一标准选材必定会把许多优秀的人才拒之门外 补充:在更多地了解了Google和脸谱网等一流公司的面试细节之后我对这个问题的认识有了一定的改变实际上这些公司在面试过程中并不完全强调技巧性很强的算法而是更加注重编码(Coding)能力只是在进行编码测试的过程中往往是通过一些简单算法题来进行的我对于这种面试方法越来越欣赏并且也作为了我们公司面试过程中的重点环节因为编码能力的测试是十分必要的它有着知识性问题无法取代

7、的作用如果一个面试者连“判断一个字符串是否是另一个字符串的子串”这样的题目都无法正确并快速地实现那么基本上可以直接排除了我这里所强调的是不必考察高难度的算法问题并非不重视编码能力测试请读者不要误解 【基础】 基础面试是指考察诸如指针使用、进程线程概念等基础知识的面试十分类似于大学期末考试题我曾经以为基础面试十分重要但是现在不这么看了在工作中基础的确是重要的但是在面试过程中它必须具有区分性才有意义也就是说P(工作好|基础好)的概率要高那么考察指针使用进程线程区别这样的基础题目才有它的意义我的实际经验是基础面试并不具有很好的区分性和算法一样差不多P(工作好|基础好)=50%同时基础面试是最容易准备的中国人有长期的应试教育经验要准备几个把玩指针题目太容易了 我曾经遇到过这样的面试者他的C语言基础和编译、链接等原理掌握得非常好给我留下了深刻的印象我给的面试结论是:知识面不宽只会C语言但基础很扎实建议录用后来的事情证明了那个结论的前半部分是对的但是”建议录用“错了他在实际工作中表现得一塌糊涂不理解需求不理解整体架构;同时上班时间不是花在项目上而是花在阅读诸如程序员的自我修养之类的书籍上最后这位同事由于长期“不出活”离开了公司

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 其它办公文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号