博文

面试的27个经典问题和回答(转)(2006-06-19 16:24:00)

摘要:1、我们为什么要雇请你呢?   有的面试只有这么一个问题 。   2、你认为自己最大的弱点是什么?   绝对不要自作聪明地回答"我最大的缺点是过于追求完美",有的人以为这样回答会显得自己比较出色,但事实上,他已经岌芨可危了。   3、你最喜欢的大学课程是什么?为什么?   说和你要应聘的职位相关的课程吧,表现一下自己的热诚没有什么坏处。   4、你最不喜欢的大学课程是什么?为什么?   "我不得不说是我们大学的主修课程,虽然我知道他们只是例行一下公事,但课堂上死气沉沉,老师和学生都只不过想熬完这个学期"。   5、你在大学期间最喜欢的老师是谁?   我一向的回答都是(事实上也的确是):教我们广告营销的教授,他能使课堂充满生气。通过实例让学生把知识和现实紧密结合,而不是死读书本,我想我从他身上得到的最多。   6、你能为我们公司带来什么呢?   假如你可以的话,试着告诉他们你可以减低他们的费用——"我已经接受过MicrosoftAccess和Word的培训,立刻就可以上岗工作"(他们在那边可能想:Access培训要花$540Word要花$445,这小子能为我们省下$1000的培训费用呢。   7、最能概括你自己的三个词是什么?   我经常用的三个词是:适应能力强,有责任心和做事有始终,结合具体例子向主考官解释,使他们觉得你具有发展潜力。   8、你为什么来应聘这份工作?   "我来应聘是因为我相信自己能为公司作出贡献,我在这个领域的经验很少人比得上,而且我的适应能力使我确信我能把职责带上一个新的台阶"。   9、你对加班有什么看法?   尽量诚实——如果你说了"是"而实际上却不想,那么你会被人一直盯住。   10、你对我们公司有什么认识?   说几件你知道的事,其中至少有一样是"销售额为多少多少"之类。   11、你是怎么知道我们招聘这个职位的呢?   如果你是从公司内部某人处打听回来的消息,记得提及他的名字,公司不说偏袒内部关系不代表它不存在。   12、除了工资,还有什么福利最吸引你?   尽可能诚实,如果你做足了功课,你就知道他们会提供什么,回答尽可能和他们提供的相配。如果你觉得自己该得到更多,也可以多要一点。   13、你参加过什么业余活动?   既然最好是让人觉得你处事不乏手腕,那么最好强调一下那些需要群体......

阅读全文(1544) | 评论:1

软件工程各章重点简答题(2006-06-04 07:19:00)

摘要:第一章 绪论

简答题 1. 软件产品的特性是什么? 2. 软件生产的发展有几个阶段?各有何特征? 3. 什么是软件危机?软件危机的表现是什么? 4. 什么是软件工程?软件工程性质是什么? 5. 软件工程目标和内容是什么? 6. 软件工程面临的问题什么? 7. 什么是软件工程过程?它包含些过程? 8. 什么是软件生存周期?它有哪 几个活动? 9. 什么是软件生存周期模型?有哪些主要模型? 10. 什么是软件开发方法?有哪些主要方法? 第二章 软件可行性研究与项目开发计划 简答题 1. 可行性研究的任务是什么? 2. 研究项目的技术可行性一般要考虑哪些情况? 3. 可行性研究有哪些步骤? 4. 可行性研究报告有哪些主要内容? 5. 成本一效益分析可用哪些指标进行度量? 6. 项目开发计划有哪些内容? 第三章 软件需求分析 简答题 1. 什么是需求分析?需求分析阶段的基本任务是什么? 2. 需求分析的难点主要表现在哪几个方面? 3. 需求分析方法应遵循的原则是什么? 4. 需求分析阶段的文档是什么? 5. 什么是结构化分析方法?该方法使用什么描述工具? 6. 结构化分析方法通过哪些步骤来实现. 7. 什么是数据流图?其作用是什么?其中的基本符号各表示什么含义? 8. 画数据流图的步骤是什么?画数据流图应该注意什么事项? 9. 什么是数据字典?其作用是什么?它有哪些条目? 10. 建立数据字典的形式是什么? 11. 描述加工逻辑有哪些工具? 12. 什么是IDEF方法?该方法中建立功能模型的基本步骤是什么?IDEF方法有什么特点? 13. 简述SA方法的优缺点. 第四章 软件概要设计 简答题 1. 什么是软件概要设计?该阶段的基本任务是什么? 2. 什么是模块?模块有哪些基本属性? 3. 软件设计的基本原理包括哪些内容? 4. 衡量模块独立性的两个标准是什么?它们各表示什么含义? 5. 模块间的耦合性由哪几种?它们各表示什么含义? 6. 影响公共耦合的复杂程度的因素是什么?公共耦合会引起什么问题? 7. 降低模块间的耦合度的方法有哪些? 8. 模块的内聚......

阅读全文(3850) | 评论:1

谈谈编程风格(2006-06-04 07:09:00)

摘要:编程其实没有什么固定的风格可言,真正的程序设计风格只存在我们心中,我们应该尽可能地用现实世界的模型去描绘我们的程序,这样的程序风格就是最好的风格。同样,程序设计也是一门艺术,她象作画一样追求美,象音乐一样追求旋律的幽雅,象创作一样追求瞬间的灵感,象领导艺术一样追求平衡和谐(时空的平衡)。既然她是艺术那就让我们想追求艺术一样来追求完美的程序设计风格吧!
作为一个初学者如何具有良好的程序设计风格呢?我想引用一个关于初学者请教编程大师的故事让读者自己去领悟。
  有一位编程大师,他写非结构化的程序,一位初学者刻意模仿他,也写非结构化的程序。当他让大师看他的进步时,大师批评了他的非结构化程序:“ 对一位编程大师合适的东西未必对一个初学者同样合适,在超越结构化之前,你必须理解编程之道。”
  我个人认为作为一个初学者应该踏踏实实的打好程序设计的基础,不要急功近利,舍本逐末。我走过不少弯路,希望大家能和我一样能牢记编程大师的忠告:“对编程大师合适的东西未必对一个初学者同样合适”。
......

阅读全文(1902) | 评论:0

软件过程模型的分类与选用(2006-06-04 07:00:00)

摘要:所谓模型就是一种开发策略,这种策略针对软件工程的各个阶段提供了一套范形,使工程的进展达到预期的目的。对一个软件的开发无论其大小,我们都需要选择一个合适的软件过程模型,这种选择基于项目和应用的性质、采用的方法、需要的控制,以及要交付的产品的特点。一个错误模型的选择,将迷失我们的开发方向。对于下面的模型,希望能够给开发者们一个参考和一点启示。
一、    线性顺序过程模型:
它有时也称为传统生存周期模型或瀑布模型。它提出了软件开发的系统化的、顺序的方法。其流程从系统开始,随后是需求分析、设计、编码、测试、支持。这种模型是最早也是应用最广泛的软件过程模型(虽然这种模型会引起“堵赛状态”)。
缺点:
1、    实际的项目大部分情况难以按照该模型给出的顺序进行,而且这种模型的迭代是间接的,这很容易由微小的变化而造成大的混乱。
2、    经常情况下客户难以表达真正的需求,而这种模型却要求如此,这种模型是不欢迎具有二义性问题存在的。
3、    客户要等到开发周期的晚期才能看到程序运行的测试版本,而在这时发现大的错误时,可能引起客户的惊慌,而后果也可能是灾难性的。
4、    采用这种线性模型,会经常在过程的开始和结束时碰到等待其他成员完成其所依赖的任务才能进行下去,有可能花在等待的时间比开发的时间要长。我们称之为“堵赛状态”。
优点:
1、它提供了一个摸板,这个摸板使得分析、设计、编码、测试和支持的方法可以在该摸板下有一个共同的指导。
2、虽然有不少缺陷但比在软件开发中随意的状态要好得多。 二、    原型实现过程模型:
从需求收集开始,开发者和客户在一起定义软件的总体目标,标识已知的需求并且规划出需要进一步定义的区域。然后是“快速设计”,它集中于软件中那些对客户可见的部分的表示,这将导致原型的创建,并由客户评估并进一步精化待开发软件的需求。逐步调整原型使其满足客户的需求,这个过程是迭代的。其流程从听取客户意见开始、随后是建造/修改原型、客户测试运行原型、然后回头往复循环直到客户对原型满意为止。由于这种模型可以让客户快速的感受到实......

阅读全文(1689) | 评论:0

软件工程瀑布模型(2006-06-04 06:51:00)

摘要:软件开发的瀑布模型
    软件工程强调规范化,所以软件开发方法学均需提供软件开发处理模型,它具体地描述软件开发做些什么工作;如何进行;由谁进行;用什么方式来实现;何时结束。
    最早提出、并且使用最广的处理模型称之为瀑布模型,是1976年由Bohm提出。它将软件生命周期分为:软件定义(计划)、软件开发和软件维护(运行)三个时期组成,每个时期又进一步划分为若干个阶段。
    软件定义时期可分为三个阶段:问题定义、可行性研究和需求分析。
    开发时期可分为:总体设计、详细设计、编码和单元测试、综合测试四个阶段. 瀑布模型的特点
1)连续性:前一阶段完成后,后一阶段工作才能开始,前一阶段输出的文档是后一阶段的输入文档。另外,个阶段之间不存在反馈的关系。这使得该模型好似瀑布一样,故称之为瀑布模型。
2)该模型描述了软件开发如何进行:定义了每个阶段的每件事情,并且符合实际的开发过程。
3)严格的质量管理要求:由于该模型不存在反馈,如果前面阶段工作存在错误不能及时发现,将造成极大的损失。所以每个阶段后,对该阶段提交的文档均进行严格的技术审查和管理复审。(技术审查是从技术的角度,对该阶段开发出的产品进行检验。管理复审是在每个阶段结束时,对项目成本、进度、实际的费用及投资回收前景从管理角度进行复查。)
4)连续无反馈:意味着一个前提条件,即后一阶段的工作是在假定前一阶段工作是正确无误的前提条件。因此,该模型不适合需求不易确定或多变的软件项目的开发。该模型适合于小项目,而不适合于大项目。因为大项目在软件开发的前期阶段不可能了解项目很多的细致情况,从而会引起需求变化。
目前最常见的生命周期是“瀑布”模型(结构化)。它是在60年代末“软件危机”后出现的第一个生命周期模型。如下所示。

分析 ----- 设计 ----- 编码 ----- 测试 ------ 维护

如图所示,瀑布式生命周期的开发过程是顺序行进的;活动流向基本是单向的。它假设开发者在开发初期对系统的了解足够清楚。不幸的是,任何软件开发活动都不可避免地要涉及大量迭代过程,无论你事先是否安排。好的设计人员指的是......

阅读全文(5442) | 评论:0

挑战月薪5万的一道微软的面试题:(2006-04-26 08:53:00)

摘要:小明和小强都是张老师的学生,张老师的生日是M月N日,2人都不知道张老师的生日是下列10组中的一天,张老师把M值告诉了小明,把N值告诉了小强,张老师问他们知道他的生日是那一天吗?
  3月4日  3月5日 3月8日
  6月4日  6月7日
  9月1日  9月5日
  12月1日  12月2日 12月8日
  小明说:如果我不知道的话,小强肯定也不知道
  小强说:本来我也不知道,但是现在我知道了
  小明说:哦,那我也知道了
  请根据以上对话推断出张老师的生日是哪一天?
小明说:如果我不知道的话,小强肯定也不知道
推出:小明根据月份可以断定小强只知道日数是无法知道具体日期的 就是说 小明拿到的月份指明--》这个月里面的所有可选日期中 日数都是有重复的 所以排除6月和12月 因为6.7 和12.2 两个日期中7和2在所有答案中是唯一的
小强说:本来我也不知道,但是现在我知道了
推出:小强知道月份在3月或者9月后 就知道具体的日期了 排除了5号的可能 因为5号在3月和5月有两个可能 小强也无法确定 所以范围缩小到了 3月4日 3月8日 9月1日
小明说:哦,那我也知道了
推出:如果小明拿到的是3月的话 根据上述推论 他还是不能确定具体的日期 因为三月还有4号和8号两个可能 而他却说自己也知道了 所以只能是9月1日
RAIN 08:34:30
答案是:9月1日。 1.小明说:“如果我不知道的话,小强肯定也不知道”。
这句话的潜台词实际上是:“我应该猜对了,如果我猜错的话,小强肯定不知道”。但小明还是不确定自己究竟猜对没,需要小强来印证。M取什么值能让小明这么说呢?显然6和12不可取,如果M为6或12,N就有可能是2或7——小强凭2或7一个数字就能得知张老师的生日。则M只可能是3或9,而N只能在1、4、5、8中取值。
如果M是3,N可以取三种值,结果成了“如果小明不知道,小强有可能知道(2-4,3-8),也有可能不知道(3-5)。”,在这种情况下,小明说“如果我不知道的话,小强肯定也不知道”是不符合事实的,小明不足以如此自信的这样说。
如果M是9,则小明就知道N只能是1或者5。此时,小明的猜测正是N=1,而N究竟是不是1,小......

阅读全文(2189) | 评论:1