原文地址
http://www.infoq.com/cn/articles/programmer-interview
想雇到搞软件开发的聪明人可不容易。万一一不小心,就会搞到一堆低能大狒狒。我去年就碰到这种事了。你肯定不想这样吧。听我的,没错。在树上开站立会议门都没有。
问点有难度的问题能帮你把聪明人跟狒狒们分开。我决定把我自己整理出来的软件开发者面试百问发出来,希望能帮到你们的忙。
这个列表涵盖了软件工程知识体系中定义的大多数知识域。当然,如果你只想找出类拔萃的程序员,便只需涉及结构、算法、数据结构、测试这几个话题。如果想雇架构师,也可以只考虑需求、功能设计、技术设计这些地方。
不过不管你怎么做,都要牢记一点:
这里大多数问题的答案都没有对错之分!
你可以把我的这些问题作为引子,展开讨论。例如下面有个问题是使用静态方法或是单例的缘由。如果那个面试的就此展开长篇大论,那他很有可能是个聪明能干的家伙!如果他一脸茫然的看着你,发出这种声音,很明显这就是只狒狒了。同样,想知道一个数是不是2的乘方也有很多方法,不过要是面试的人想用mod运算符,嗯……你知道我的意思吧。(你不知道也没关系,来根香蕉
需求
- 你能给出一些非功能性(或者质量)需求的例子么/li>
- 如果客户需要高性能、使用极其方便而又高度安全,你会给他什么建议/li>
- 你能给出一些用来描述需求的不同技术么们各自适用于什么场景/li>
- 需求跟踪是什么意思么是向前追溯,什么是向后追溯/li>
- 你喜欢用什么工具跟踪需求/li>
- 你怎么看待需求变化是好是坏出你的理由。
- 你怎样研究需求,发现需求哪些资源可以用到/li>
- 你怎么给需求制定优先级哪些技术/li>
- 在需求过程中,用户、客户、开发人员各自的职责是什么/li>
- 你怎么对待不完整或是令人费解的需求/li>
功能设计
- 在功能设计中有哪些隐喻出几个成功的例子。
- 如果有些功能的执行时间很长,怎么能让用户感觉不到太长的等待/li>
- 如果用户必须要在一个很小的区域内,从一个常常的列表中选择多个条目,你会用什么控件/li>
- 有哪些方法可以保证数据项的完整/li>
- 建立系统原型有哪些技术/li>
- 应用程序怎样建立对用户行为的预期出一些例子。
- 如何入手设计一组数量庞大而又复杂的特性,你能举出一些设计思路吗/li>
- 用不同的颜色对一段文本中的文字标记高亮,这种做法有什么问题/li>
- Web环境和Windows环境各有些什么限制/li>
技术设计
- 什么是低耦合和高聚合装原则又是什么意思/li>
- 你知道设计模式吗用过哪些设计模式什么场合下用的/li>
- 是否了解什么是无状态的业务层事务如何与之相适应/li>
- 在搭建一个架构,或是技术设计时,你用过几种图/li>
- 在N层架构中都有哪些层们各自的职责是什么/li>
- 有哪些方法可以确保架构中数据的正确和健壮/li>
- 面向对象设计和面向组件设计有哪些不同之处/li>
- 怎样在数据库中对用户授权、用户配置、权限管理这几项功能建模/li>
- 怎样按照等级制度给动物王国(包括各种物种和各自的行为)建模/li>
程序设计
- 你怎样保证你的代码可以处理各种错误事件/li>
- 解释一下什么是测试驱动开发,举出极限编程中的一些原则。
- 看别人代码的时候,你最关心什么地方/li>
- 什么时候使用抽象类,什么时候使用接口/li>
- 除了IDE以外,你还喜欢哪些必不可少的工具/li>
- 你怎么保证代码执行速度快,而又不出问题/li>
- 什么时候用多态,什么时候用委派/li>
- 什么时候使用带有静态成员的类,什么时候使用单例/li>
- 你在代码里面怎么提前处理需求的变化一些例子。
- 描述一下实现一段代码的过程,从需求到最终交付。
算法
- 怎样知道一个数字是不是2的乘方样判断一个数是不是奇数/li>
- 怎样找出链表中间的元素/li>
- 怎样改变10,000个静态HTML页面中所有电话 码的格式/li>
- 举出一个你所用过的递归的例子。
- 在散列表和排序后的列表中找一个元素,哪个查找速度最快/li>
- 不管是书、杂志还是 络,你从中所学到的最后一点算法知识是什么/li>
- 怎样把字符串反转能不用临时的字符串么/li>
- 你愿意用什么类型的语言来编写复杂的算法/li>
- 有一个数组,里面是从1到1,000,000的整数,其中有一个数字出现了两次,你怎么找出那个重复的数字/li>
- 你知道“旅行商问题(Traveling Salesman Problem)”么/li>
数据结构
- 怎样在内存中实现伦敦地铁的结构/li>
- 怎样以最有效的方式在数据库中存储颜色值/li>
- 队列和堆栈区别是什么/li>
- 用堆或者栈存储数据的区别是什么/li>
- 怎样在数据库中存储N维向量/li>
- 你倾向于用哪种类型的语言编写复杂的数据结构/li>
- 21的二进制值是什么六制值呢/li>
- 不管是书、杂志还是 络,你从中所学到的最后一点数据结构的知识是什么/li>
- 怎样在XML文档中存储足球比赛结果(包括队伍和比分)/li>
- 有哪些文本格式可以保存Unicode字符/li>
测试
- 什么是回归测试样知道新引入的变化没有给现有的功能造成破坏/li>
- 如果业务层和数据层之间有依赖关系,你该怎么写单元测试/li>
- 你用哪些工具测试代码质量/li>
- 在产品部署之后,你最常碰到的是什么类型的问题/li>
- 什么是代码覆盖率多少种代码覆盖率/li>
- 功能测试和探索性测试的区别是什么怎么对 站进行测试/li>
- 测试套件、测试用例、测试计划,这三者之间的区别是什么怎么组织测试/li>
- 要对电子商务 站做冒烟测试,你会做哪些类型的测试/li>
- 客户在验收测试中会发现不满意的东西,怎样减少这种情况的发生/li>
- 你去年在测试和质量保证方面学到了哪些东西/li>
维护
- 你用哪些工具在维护阶段对产品进行监控/li>
- 要想对一个正在产品环境中被使用的产品进行升级,该注意哪些重要事项/li>
- 如果在一个庞大的文件中有错误,而代码又无法逐步跟踪,你怎么找出错误/li>
- 你怎样保证代码中的变化不会影响产品的其他部分/li>
- 你怎样为产品编写技术文档/li>
- 你用过哪些方式保证软件产品容易维护/li>
- 怎样在产品运行的环境中进行系统调试/li>
- 什么是负载均衡载均衡的方式有哪些种/li>
- 为什么在应用程序的生命周期中,软件维护费用所占的份额最高/li>
- 再造工程(re-engineering)和逆向工程(reverse engineering)的区别是什么/li>
配置管理
- 你知道配置管理中基线的含义么样把项目中某个重要的时刻冻结/li>
- 你一般会把哪些东西纳入版本控制/li>
- 怎样可以保证团队中每个人都知道谁改变了哪些东西/li>
- Tag和Branch的区别是什么什么情况下该使用tag,什么时候用branch/li>
- 怎样管理技术文档——如产品架构文档——的变化/li>
- 你用什么工具管理项目中所有数字信息的状态最喜欢哪种工具/li>
- 如果客户想要对一款已经发布的产品做出变动,你怎么处理/li>
- 版本管理和发布管理有什么差异/li>
- 同时处理多个变更请求,或是同时进行增量开发和维护,这种事情你怎么看待/li>
项目管理
- 范围、时间、成本,这三项中哪些是可以由客户控制的/li>
- 谁该对项目中所要付出的一切做出估算有权设置最后期限/li>
- 减少交付的次数,或是减少每个每个交付中的工作量,你喜欢哪种做法/li>
- 你喜欢用哪种图来跟踪项目进度/li>
- 迭代和增量的区别在哪里/li>
- 试着解释一下风险管理中用到的实践。风险该如何管理/li>
- 你喜欢任务分解还是滚动式计划/li>
- 你需要哪些东西帮助你判断项目是否符合时间要求,在预算范围内运作/li>
- DSDM、Prince2、Scrum,这三者之间有哪些区别/li>
- 如果客户想要的东西太多,你在范围和时间上怎样跟他达成一致呢/li>
英文原文地址
http://www.noop.nl/2009/01/100-interview-questions-for-software-developers.html
相关资源:聪聪识字(趣味儿童识字软件)V1.2.1.0中文官方安装版-其它代码类…
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!