当前位置:文档之家› 软件开发经典100面试题+解答

软件开发经典100面试题+解答

软件开发经典100面试题+解答
软件开发经典100面试题+解答

程序员需要具备的基本素质

阅读代码这个技能需要程序员能够具备读懂已经存在的代码的能力,这样的能力可以让程序员分析程序的行为,了解程序,这样才能和开发团队一起工作,继承维护或是改进现有的程序。

编写程序编写程序并不包括程序设计。不要以为编程是一件很简单的事情,很多程序员都认为编程只需要懂得程序语言的语法,并把设计实现就可以了。但是这离编写程序还远远不够,使用什么样的编码风格成为编写程序员最需要具备的基本技能。能否使用非常良好的编程风格直接决写了程序员的级别。

软件设计这一能力直接决定了需要吏用什么样的代码技术达到怎么样的功能,而系统架构设计直接决定了软件的质量、性能和可维护性。并不是所有的程序在这一方面都非常优秀,但每个程序员都需要或多或少的明白和掌握这一基本技能。熟悉软件工程每个程序员都应该明白软件工程是什么东西,都应该知道,需求分析,设计,编码,测试,Release和维护这几个阶段。当然,几乎所有的人都知道这些东西,但并不是每个人都很清楚这些东西。现在很多高级程序员都会混淆“需求规格说明书FS”和“概要设计HLD”。另外,程序员还需要知道一些软件开发的方法论,比如:敏捷开发或瀑布模型。

使用程序库或框架一个程序员需要学会使用已有的代码,无论是标论的程序库,或是第三方的,还是自己公司内部的,都需要学会做。比如:C++中,需要学会使用STL,MFC,ATL,BOOST,ACE,CPPUNIT等等。使用这些东西,可以让你的工作事半功倍。

程序调试程序调试是分析BUG和解决问题最直接的能力。没有人能够保证程序写出来不用调试就可以运行正常,也没有人可以保证程序永远不会出BUG。所以,熟练使用调试器是一个程序员需要具备的基本技能。

使用IDE学会使用IDE工具也会让你的工作事半功倍。比如,VC++,Emacs,Eclipse等等,并要知道这些IDE的长处和短处。

使用版本控制一定要学会使用版本控制工具,什么叫mainline/trunk,什么叫tag,什么叫branch,怎么做patch,怎么merge代码,怎么reverse,怎么利

用版本控制工具维护不同版本的软件。这是程序员需要明白的软件配置管理中最重要的一块。

单元测试单元测试是每个程序都需要做的。很多单元测试也是需要编码的。一定要学会在xUnit框架下进行单元测试。比如JUnit, NUnit, CppUnit等等。

重构代码每个程序员都需要有最基本的能力去重构目前已有的代码,使代码达到最优但却不能影响任何的已有的功能。有一本书叫《软件的重构》,每个程序员都应该读一下。

自动化编译程序员需要使用一个脚本,其能自动化编程所有的工程和代码,这样,整个开发团队可以不停地集成代码,自动化测试,自动化部署,以及使用一些工具进行静态代码分析或是自动化测试。

需求

你能给出一些非功能性(或者质量)需求的例子么?

所谓非功能性需求,是指软件产品为满足用户业务需求而必须具有且除功能需求以外的特性。软件产品的非功能性需求包括系统的性能、可靠性、可维护性、可扩充性和对技术和对业务的适应性等。下面对其中的某些指标加以说明。在这里可以看到非功能性需求涉及的范围很广,软件产品本身不是孤立存在的,还涉及到诸多外在环境的影响。非功能性需求必须考虑软件既要可用,又要易用。

对于非功能性需求描述的困难在于很难像功能性需求那样,可以通过结构化和量化的词语来描述清楚,在描述这类需求时候我们经常采用软件性能要好,查询要在多少时间内出结果,软件健壮性要好等较模糊的描述词语。这类描述词语都是脱离了软件的执行环境,人和相关的场景的描述,因此信息很难体现到软件架构设计和具体的实现中。我们在架构设计中关注的安全,系统开发框架,并发和性能,异常日志等不是凭空产生出来的,而是来源于我们对非功能性需求的分析。

一个软件系统必须完整,因此不仅仅包括了可执行的程序,还包括了在线帮助,数据和用户管理,日志异常查询,自动升级等相关功能特征。这些需求不仅仅是为了满足用户的需要,也是为了我们后续维护和监控系统的需要。

系统的可靠性,可维护性和适应性是密不可分的。当系统出现故障和用户出现错误的操作后是否支持恢复,当用户在使用过程中遇到错误的时候是否可以立即定位问题,但业务场景和逻辑发生变化的时候系统是否支持,当网络不稳定或使用中异常中断的情况下系统是否都有相应的容错措施,这些都是需要在非功能性需求中考虑到的问题。

易用性也是我们在开发非功能性需求中必须要考虑到的问题,易用性同时还涉及到美工和UI界面,人机工程,交互式设计,心理学,用户行为模式等多方面的知识。易用性的三原则就是易见,易学和易用或者叫为发现,易懂,效率。易见就是各种功能操作不要藏得太深,用户很容易找到他们期望进行的各种操作;易学需要软件系统通过在线帮助,导航,向导等各种方式保证软件是可自学习的;易用的重点则在软件在熟练使用后应该可以更快的进行各项操作。这三者相互间也存在冲突,需要平衡,而平衡的一个重点就是真正的做到以用户为中心进行设计,需要去细分场景和用户。

对于非功能性需求的描述,在描述过程中必须要强调到人,业务场景,环境等各方面的内容。强调的目的就是要说明非功能性需求不是无限度的,任何一项非功能性需求的实现往往会付出更大的研发人力成本和硬件网络成本。比如我们在描述一个表单的模糊查询功能的时候,如果简单的描述为所有查询都要在多少秒内完成,那么这种需求将很难得到满足,以下是一些可选的描述方式。

1.估计用户数为1万人,每天登录用户数为3000左右,网络的带宽为100M带宽。

2.在非高峰时间根据编号和名称特定条件进行搜索,可以在3秒内得到搜索结果。

3.当通过互联网接入系统的时候,期望在编号和名称搜索时最长查询时间<15秒。

有了这些场景和数据后,我们在进行架构设计的时候就可以有针对性的选择我

们的开发框架和模式,数据库,软硬件环境配置已经复杂功能的具体实现方式等。同时这些需求还可以更好的指导我们对通过性能测试等工具对这些非功能

性需求进行验证。

在某个时间范围内,产品运行稳定的程度;在某些压力极端情况(断电、饱和度),产品运行稳定的程度;不正常宕机后,产品的恢复度量。

如果客户需要高性能、使用极其方便而又高度安全,你会给他什么建议?

1 高性能,一般需要集群实现

2 使用方便,这个需要根据用户的水平。B/S是很容易掌握的。

3 安全,最好用VPN进行访问,或者干脆专网专用。密码管理的问题不是系统

能解决的。就算加上实时的密码锁。

4 选择合适的人,并保持稳定

总之,这些要求在一些大型应用里面都是必须的,比如电信级的计费系统。

方便与高性能、高度安全是不完全统一的。方便带来的问题是安全性的降低,或性能不能达到最合适的程度;高性能会导致复杂性;安全性会让性能不能达到最佳。最好的方式是选择一种优先级,比如以安全性为主要的考核标准,适当安排性能和难易程度;或者以性能为主。尽量达到三者的平衡点,在某些极端的情况可比保证性能降低,但安全有保证

你能给出一些用来描述需求的不同技术么?它们各自适用于什么场景?

需求分类:

项目需求:商业需求,项目管理需求,交付需求等

产品需求:技术需求,安全需求,性能需求等

如果非要说个技术那就是观察,也叫工作跟踪,通常由观察者从外部来观察使用者的工作参与观察者,实际执行一个流程或程序,体验他们是如何实施的。

需求分析

需求分析在整个开发过程中占的工作量不大,但是产生的影响巨大(这又是一

个二八原理的例子)。既然需求分析如此重要,照理说应该安排最强的人来搞。但实际情况往往不是如此:很多公司负责需求分析的人并不胜任这项工作。我经历过几个不太成功的项目,其问题的根源都和需求分析有关。

需求分析最要紧的是:搞清楚用户到底想要什么?如果这个问题搞错了、搞偏了,后面的步骤做得再好也是白搭(比如客户想要一个文本编辑器,结果你搞

了个图形编辑器给他)。这方面其实有很多的道道,限于篇幅就不展开了,大

伙儿如果有兴趣,以后可以单独说一下。

在搞清楚“用户想要什么”之后,接着要整理出功能列表(也有叫Feature List),并筛选出大约20%的重点功能。这个步骤是我今天主要想介绍的,因为这个步骤和后续的各项开发密切相关。一般来说,功能筛选的依据有如下几个:

1、用户经常用的功能(比如save、copy、cut、paste)

2、宣传的卖点(要能够超出同类软件,吸引眼球)

3、和用户利益密切相关的功能(这种功能不允许出错,比如存盘功能)

这个筛选的过程要尽早完成,而且最好是产品人员、开发人员、测试人员三方

的头头一起讨论,以保证立场客观、观点全面。筛选出重要功能点后,其他人

员的工作安排要"以重点功能为纲",有所侧重。

●项目管理

如果你是个项目经理,在排项目计划时,就得尽量优先安排重点功能的开发/测试,而且要安排能力强的人员来完成。按照我以前的做法,重点功能排计划至

少得留出1/3的时间余量,以防万一(事实证明,几乎每个稍大点的项目都会

出现万一)。至于非重点功能,尽量排到后面,安排能力一般的人开发/测试。然后,在项目进行过程中,肯定要有定期的例会。作为项目经理,你应该主要

关注重点功能的进度情况和风险情况。

一旦项目有延期的风险,就从非重点功能开始裁减(俗称砍功能)。由于是裁

减非重点功能,不至于产生致命的影响。

●设计界面

设计界面时,你得保证所有的常用功能都放在显著的位置(比如工具条);还

得保证它们用起来方便(比如提供快捷键和右键菜单支持)。

对于卖点,它不一定是常用功能,它的目的是激起用户的购买欲望和使用欲望。因此你要把它们设计得比较酷,有噱头。

对于利益相关的功能,大部分情况下都是侧重于业务逻辑实现。如果它既不是

常用功能、也不是卖点,那么界面设计方面倒不一定要额外花大力气。

其它的非重点功能,只要按照常规方法设计,不用花太大精力。

●编写代码

我发现很多开发人员有几个通病:先做有趣或容易的功能,然后再做无聊或者

繁琐的功能;对自己有兴趣的功能投入精力多,对自己没兴趣的简单应付。

以上这些都是开发的大忌。作为一个职业的开发人员,不应该以自己的兴趣和

喜好来决定开发的轻重缓急。正确做法应该如下:

你首先得用主要精力完成上述所说的重点功能,而且要保证它们的代码质量尽可能好,尽可能方便维护(重点功能往往是经常有需求变更,经常被修改的)。对于重点功能中的“常用功能”,要保证时间性能够好(能快速响应)。对于"用户利益相关的功能",要保证bug尽可能少(尤其是安全性、稳定性、健壮性的bug)。

至于其它的非重点功能,只要不出明显bug,有点小缺陷无伤大雅。

●测试

如果你是个测试人员,你同样要把主要精力用于测试那些重点功能。对于"用户利益相关的功能",多进行一些健壮性测试、稳定性、安全性等测试(比如测试保存大文件是否会出错)。对于常用功能,主要进行易用性和性能测试(比如拷贝、粘贴是否易用)。

至于其它功能,只要进行普通的测试,保证它不出现明显和严重bug即可。要知道Windows 2000发布的时候,尚遗留上千个未修复的bug(当然都是低优先级的),微软不也照样发布。

●产品演示

有些软件开发完之后,会搞一些Demo进行宣传。如果你是负责进行Demo的人,你肯定要把主要的Demo时间用来秀软件的卖点,这样给客户的印象最深刻,效果最好;至于非卖点的功能,都未必要提及。

几种和开发相关工作就介绍到这里,最后送给大伙一句话:Do not work hard, work smart!

下面以我们的项目来介绍一个项目的开发过程:

1.首先进行用户需求调研,先弄明白用户想要什么(如果有老系统,可以先参观老系统,看有什么可以改进的,有什么可以继承的)熟悉业务。需求调研完成后,完成开发文档《用户调研报告》,然后根据调研,列出功能列表,同时区分重点功能和非重点功能。

2.调研完成后,画界面原型让用户来确认,如何使用等讲解清楚(这个过程中,可以会产生需求的变更),同时完成《用户需求规格说明书》,同时完成此文档的评审工作。此时,应该可以说到达了软件的一个里程碑。

3.需求评审完成后,进行数据库设计和详细设计,此时形成的文档有《数据库设计说明书》,《详细设计说明书》,同时完成文档的评审工作。

4.设计完成以后,就要进行开发工作了。依据详细设计说明书,此时要先进行重点功能的开发,然后进行非重点功能的开发。在此过程中开发人员进行模块的检测,确保系统的可运行。

5.开发完成后,由专门的测试人员进行单元测试、流程测试、性能测试等。(此时还可能有第三方测试人员和用户代表的参与)。此时会形成专门的测试文档。

6.用户测试。首先进行用户测试的培训,然后挑选部分用户进行系统的测试,

此时一般会有开发人员进行现场的技术支持,使用用户尽快的熟悉系统的使用。

7.系统上线试运行。

需求跟踪是什么意思?什么是向前追溯,什么是向后追溯?

需求跟踪的内容

跟踪能力(联系)链(Traceability Link)使你能跟踪一个需求使用期限的全过程,即从需求源到实现的前后生存期。跟踪能力是优秀需求规格说明书的

一个特征。跟踪能力联系链记录了单个需求之间的父层、互连、依赖的关系。

1. 需求跟踪目的

审核(Certification)跟踪能力信息可以帮助审核确保所有需求被应用。

变更影响分析跟踪能力信息在增、删、改需求时可以确保不忽略每个受到影

响的系统元素。

维护可靠的跟踪能力信息使得维护时能正确、完整地实施变更,从而提高生

产率。

项目跟踪在开发中认真记录跟踪能力数据,就可以获得计划功能当前实现状

态的记录。

再设计(重新建造)。可以列出传统系统中将要替换的功能,记录它们在新

系统的需求和软件组件中的位置。

重新利用跟踪信息可以帮助你在新系统中对相同的功能利用旧系统相关资源。

减小风险使部件互连关系文档化可减少由于一名关键成员离开项目带来的

风险。

测试测试模块、需求、代码段之间的联系链可以在测试出错时指出最可能有问题的代码段。

2. 需求跟踪能力矩阵

3. 需求跟踪能力工具

4. 需求跟踪能力过程

5. 需求跟踪能力的可行性

变更需求代价:影响分析

“变更是免费的”这种误解是造成项目范围延伸的一个原因。在职业生涯中,绝大多数开发人员会遇到要求添加“没有代价且不影响进度的变更”的要求。

对这样奇怪的要求的正确回答是“不行”,变更只能在项目时间、预算、资源

的限制内进行协商。

1. 影响分析过程

建议的变更涉及的问题核对表

基准(线)中是否已有需求与建议的变更相冲突?

是否有待解决的需求变更与已建议的变更相冲突?

不采纳变更会有什么业务或技术上的后果?

进行建议的变更会有什么样的负面效应或风险?

建议的变更是否会不利于需求实现或其他质量属性?

从技术条件和员工技能的角度看该变更是否可行?

若执行变更是否会在开发、测试和许多其他环境方面提出不合理要求?

实现或测试变更是否有额外的工具要求?

在项目计划中,建议的变更如何影响任务的执行顺序、依赖性、工作质量或进度?

评审变更是否要求原型法或别的用户提供意见?

采纳变更要求后,浪费了多少以前曾做的工作?

建议的变更是否导致产品单元成本增加?如增加了第三方产品使用许可证的费用。

变更是否影响任何市场营销、制造、培训或用户支持计划?

变更影响的软件元素核对表

确认任何用户接口要求的变更、添加或删除。

确认报告、数据库或文件中任何要求的变更,添加或删除。

确认必须创建、修改或删除的设计部件。

确认源代码文件中任何要求的变更。

确认文件或过程中任何要求的变更。

确认必须修改或删除的已有的单元、集成或系统测试用例。

评估要求的新单元、综合和系统测试实例个数。

确认任何必须创建或修改的帮助文件、培训素材或用户文档。

确认变更影响的应用、库或硬件部件。

确认须购买的第三方软件。

确认在软件项目管理计划、质量保证计划和配置管理计划等中变更将产生的影响。

确认在修改后必须再次检查的工作产品。

2. 影响分析报告模板

追溯分为两种,向前追溯和向后追溯.

向前追溯就是,向保单起保日期之前追溯,主要体现在按照"期内索赔式"投保的产品责任险中.简单说:就是对起保之前生产的产品,在保险期间出险了,保险公司也要赔付!

例如:A公司在2006年生产了一批产品,然后,在民安投保了产品责任险,保险期间为2007-01-01到2007-12-31号,追溯期为 1年,意思就是说:对于2006年生产的产品在2007年出险了,保险公司也要赔付.(追溯起始时间

为:2006-01-01,追溯结束日期为:2006-12-21号)

在追溯期,但是不在保险期间发生的案件,需要理赔! 追溯期主要是向前追溯,就是起保之前,用于产品责任险比较多!

在责任险中有追溯期的概念,下面查到的些资料可供大家理解。

产品责任险附加条款汇编:

产品责任险的承保方式有两种:一种是以事故发生为基础,这种方式下只要产品责任事故发生在保险期限内,不论何时提出索赔,保险人均要负责赔偿,另一种是以索赔提出为基础,这种方式下不论产品责任事故是否发生在保险期限内,只要被保险人或受害人在本年度保单有效期内提出索赔,保险人就要承担赔偿责任。

上述概念是理论上的,现实承保中保险人为控制风险,对在事故发生制下提出索赔的时间和对在索赔提出制下事故发生的时间均有限制。

我国目前产品责任险的基本条款采用的是事故发生制,在赔偿处理部分规定:被保险人的索赔期限,从损失发生之日起,不得超过两年。

如果要采用以索赔提出为基础的方式,保险人则规定追溯期,即在追溯期开始后发生的产品责任事故并在保单有效期内提出索赔,保险人才承担责任,且追溯期一般规定不超过5年。一般情况下,保险人出具第一张以索赔提出为基础的保单时,不给追溯期。现实承保中,采用此条款,被保险人通常可有一定宽限期,即便保单到期或注销,只要被保险人在条款中规定的发现期中提出索赔,这个索赔仍旧有效。

我国目前保险市场对产品责任险以索赔提出为基础承保的最好条件为:追溯期5年,发现期3年。采用以索赔提出为基础的方式,如果能把发现期争取到2年,则即使没有追溯期,也已经优于以事故发生为基础的承保方式了。

你喜欢用什么工具跟踪需求?

你怎么看待需求变化?它是好是坏?给出你的理由。

你怎样研究需求,发现需求?有哪些资源可以用到?

你怎么给需求制定优先级?有哪些技术?

在需求过程中,用户、客户、开发人员各自的职责是什么?

用户从某种意义上来讲是和客户等同的,开发人员是负责开发产品,用户和客户就是使用产品啊!

你怎么对待不完整或是令人费解的需求?

以客户为导向,和客户召开需求review meeting,向客户表述自己对当前需求的理解。如果有不完整或者理解有误的地方,客户会及时纠正。一定要在需求明确的前提下进一步设计,不正确的理解需求会导致项目失败。

功能设计

在功能设计中有哪些隐喻?给出几个成功的例子。

如果有些功能的执行时间很长,怎么能让用户感觉不到太长的等待?

如果用户必须要在一个很小的区域内,从一个常常的列表中选择多个条目,你会用什么控件?

有哪些方法可以保证数据项的完整?

建立系统原型有哪些技术?

原型系统是指当前系统的原始形态,不一定就是信息系统,非信息化的系统也有原型。

广义来理解,当前系统的原始形态,这里不一定就是信息系统,非信息化的系统也有原型。

狭义来理解,原型特指系统生命期开始阶段建立的,可运行的最小化系统模型。软件开发过程就是分析系统原型,建立系统模型,再优化转换的过程。

构造原型系统的八大原则对自己的产品设计很有帮助

作为一名工程师或科学家,您或许会构想些您认为有市场价值的产品构思;然而,您或许会担心您缺乏充分开发您的构思所需的培训或技能。

不必担心!有成功之路可循!如果您可以演示,或者如果能给客户提供原型系统就更好了,并得到关于创新价值的真实反馈,那么您获得商业成功的可能性会大为提高。如果您希望创建企业实现自己的产品构思,请开发原型系统并牢记下列八大原则。

1、认识到构思的廉价性——鉴于我们生活在关联的、充满互联网智慧的世界,构思已经变得廉价,而且可能会随着时间的推移变得更为低廉。成本在于测试和验证什么是具有经济价值的。一个优秀的原型系统常常是开始与潜在客户对话并检验构思价值的最佳方式。

2、从书面设计开始——您或许急于开始非常快速地编写代码或设计电子产品。抑制冲动!未实际考虑一些设计因素就进行代码编写,会导致痛苦和大量的修改。从一个简单的书面设计开始。对于一个用户界面或网页软件原型系统,一份书面设计可以有效且高效地快速处理其功能特性。您可以从同事和(希望如

此)客户获得关于图像、文本、按钮、图表、菜单或下拉式选项的位置的反馈。书面设计不仅成本不高,而且比口头表达更有价值。

3、仅投入足够的工作量——清楚您的目标并坚持您的目标。构造原型系统有两个很好的理由:一是检验软硬件架构的可行性,二是创建一个演示版本并获得客户的反馈,便于您为自己的创新报价和赋予价值。牢记这些目标,并小心不要沉湎于这个过程。构造原型非常有趣,而且创新者喜欢进行修正,但是,您希望仅投入足够的时间和工作以满足这些目标。

4、期望多个选择——记住模块化设计您的原型系统。优秀的原型系统通常是模块化的,这意味着您可以快速对其调整以满足客户不可预料的需求。最终决定如何使用您产品的是客户,而不是您自己。设计扩展、性能和封装的备选项,并降低成本。

5、设计以方便在最终产品中的复用——理想的状况是设计一个您可以大批量生产和分发的原型系统。没有许多原型系统构造工具可以满足这样的要求。典型情况下,您牺牲性能以获得设计的灵活性。寻找能够将您的原型系统从实验室推向市场的原型系统构造工具。

6、避免过早对成本的关注——对于硬件设计,一个潜在的耗时点和陷阱是在您的原型系统设计的早期阶段纠缠于无休止的成本优化分析。成本总是重要的,但您的目的在于使得原型系统落在可盈利设计的有效范围内。在初始阶段,聚焦于证明创新的价值,并牢记模块化的设计原则。虽然令人沮丧,但是您的设计或许通过很多途径都不能最终实现价值。关注于争取您的第一批客户,然后再进行成本优化的工作。

7、反对“均值回归”——在原型系统构造过程中,倾向于开发简单的产品,而不是开发那些令人惊叹的产品。坚持您的愿景,并确保原型系统实现了您创新的最初构想。

8、确保您可以展示您的原型系统——您的原型系统应当便于演示。对于客户、风险资本家(VC)和潜在的从业人员,您希望强势出击并首先展示最瞩目的功能。切勿构建渐强音!绝大多数人群的注意力保持的时间不超过60秒。在原型系统介绍中,无论他们是面向新的从业人员还是 VC,尽可能快地进入到产品演示。如果原型系统的演示引人瞩目,所有其它的内容会逐渐被了解。

应用程序怎样建立对用户行为的预期?给出一些例子。

如何入手设计一组数量庞大而又复杂的特性,你能举出一些设计思路吗?

有一个列表,其中有10个元素,每个元素都有20个字段可以编辑,你怎样设计这种情况?如果是1000个元素,每个元素有3个字段呢?

用不同的颜色对一段文本中的文字标记高亮,这种做法有什么问题?

Web环境和Windows环境各有些什么限制?

技术设计

什么是低耦合和高聚合?封装原则又是什么意思?

低耦合是针对类与类间的依赖关系而言,类具有单一职责,低耦合度的类不依赖其它类,从而保持其独立性;高聚合针对类中各个职责的关联程度而言。封装原则是对类的可变性而言,应遵守开放-封闭原则,对修改封闭,对添加开放。

在Web应用中,你怎样避免几个人编辑同一段数据所造成的冲突?

你知道设计模式吗?你用过哪些设计模式?在什么场合下用的?

可复用面向对象的设计中,设计模式是被反复使用的,经过分类的代码设计经验总结。其目的是为了可重用代码,让代码容易理解。设计模式的四个要素是模式名称、问题、解决方案、效果。

用过很多设计模式,Singlton,Factory,Template,Adapter,Composite等等

是否了解什么是无状态的业务层?长事务如何与之相适应

在搭建一个架构,或是技术设计时,你用过几种图?

UML图,类图,接口图。

在N层架构中都有哪些层?它们各自的职责是什么?

有哪些方法可以确保架构中数据的正确和健壮?

面向对象设计和面向组件设计有哪些不同之处?

怎样在数据库中对用户授权、用户配置、权限管理这几项功能建模?

怎样按照等级制度给动物王国(包括各种物种和各自的行为)建模?

程序设计

1.你怎样保证你的代码可以处理各种错误事件?

2.解释一下什么是测试驱动开发,举出极限编程中的一些原则。

TDD是极限编程的一种,特点是用测试来驱动开发,需求和详细设计后,根据测试用例,先编写测试代码,最后根据需求,逐步完成功能代码的添加。典型的模型有"V"模型和"X"模型。极限编程原则:持续整合,测试,快速反馈,接受变化,简单设计,小版本,计划制定....

3.看别人代码的时候,你最关心什么地

方?

目的,设计方法。

4.什么时候使用抽象类,什么时候使用接口?

抽象类(is-a)中的方法可以实现,接口中的方法不能在定义时实现(like-a)。两者都不能实例化。抽象类对其子类部分可见。接口可以实现类似多重继承(针对java)。因为接口一旦创建就不能改变,所以当要创建多个版本的组件时,应使用抽象类,因为通过更新基类,子类也会更新;或者希望通过基类控制子类的行为时(设计模式中的),也应该使用抽象类,因为可以通过在抽象基类中添加实现,控制子类的状态。接口的原则是接口不变性(对象的定义与实现),当创建的功能被大量不相关对象使用时,适合使用接口。

5.除了IDE以外,你还喜欢哪些必不可少的工具?

文本编辑和比较工具,sysinternals,debug工具。

6.你怎么保证代码执行速度快,而又不出问题?

正确的算法设计;降低依赖耦合度;运用代码检测工具查找耗时模块。

7.什么时候用多态,什么时候用委派?

8.什么时候使用带有静态成员的类,什么时候使用单例?

带有静态成员的类能保证其不会被实例化。单例算是一个应用,其中构造函数设置成私有的,有一个静态方法获取该类的实例。单例是实现延迟实例化的方法,这种对象创建型的模式保证了一个类只有一个实例,可以控制其客户何时访问它。这对注册表的管理设计或多线程等一些地方有很大的左右。

9.你在代码里面怎么提前处理需求的变化?给一些例子。

增加读取配置文件的代码,若需求变化,修改相关的配置文件就可以了。

10.描述一下实现一段代码的过程,从需求到最终交付。

定义需求,概要设计,详细设计(组件划分,结构图),编码,单元测试,集成测试,完全测试,发布。

算法

怎样知道一个数字是不是2的乘方?怎样判断一个数是不是奇数?

除2取余。(0现在也被认为是偶数了吧)

怎样找出链表中间的元素?

已得到长度:单个循环;未知长度:可用两个指针(一头一尾)实现。

怎样改变10,000个静态HTML页面中所有电话号码的格式?

举出一个你所用过的递归的例子。

删除非空文件夹所有内容(C++)

在散列表和排序后的列表中找一个元素,哪个查找速度最快?

散列表

不管是书、杂志还是网络,你从中所学到的最后一点算法知识是什么?

KMP算法

怎样把字符串反转?你能不用临时的字符串么?

递归、逐个交换、用栈结构实现等等。

你愿意用什么类型的语言来编写复杂的算法?

C/C++

有一个数组,里面是从1到1,000,000的整数,其中有一个数字出现了两次,你怎么找出那个重复的数字?

你知道“旅行商问题(Traveling Salesman Problem)”么?

数据结构

怎样在内存中实现伦敦地铁的结构?

中国国家馆“东方之冠”,取自中国古代木结构建筑中的元素——斗拱。地区馆屋顶“中国馆园”还将运用生态农业景观等技术措施有效实现隔热,使能耗比传统模式降低25%以上。

环保概念”在世博园随处可见。5万平方米的生态绿墙,世界最大;4.6兆瓦太阳能发电机组容量,全国第一;420公里的轨道交通网,超过1000辆的新能源汽车,园区内公共交通实现“零排放”……上海为打造“低碳世博”可谓费尽心机。

除中国各展馆外,参展各国场馆也尽显“低碳生活”之美。在占地3000平方米的丹麦馆螺旋形坡道入口,显眼地摆放着特有展品——自行车,还有一个即将注入哥本哈根海港碧水的池塘。5月1日世博会开幕后,观众即可体验北欧的“低碳生活”:骑上自行车,或者脱光鞋袜,将脚浸泡在清澈的海水中享受夏日的清凉。德国馆的绿色建筑技术,西班牙馆的环保藤条材料以及如同一个没水、没电、没热的“原始洞穴”的伦敦零碳社区——低碳技术把世博园区装扮得美轮美奂。

伦敦零碳馆;最佳实践区北部区域的案例。零碳馆建筑面积为2500平米,暖通需求由太阳能风力驱动的吸收式制冷风帽系统和江水源公共系统供给,电力则通过建筑附加的太阳能发电板和生物能热电联产生并满足建筑全年的能量需求,为参观者提供最低能耗的舒适体验。

生活中,我们一方面要鼓励采取低碳的生活方式,减少碳排放;另一方面是通过一定碳抵消措施,来达到平衡。种树就是“碳中和”的一种方式,需种植的树木数(棵)等于二氧化碳排放量(千克)除以18.3。

这些金点子中,涉及到洗衣机节水、食物储藏、烹饪、厨房节水、厨房去污、居住节电节水、汽车出行、冰箱空调等家用电器节电。现在,这些金点子已经被整理好收入低碳生活指导手册中。

如,同样长的洗涤周期,“柔化”模式比“标准”模式叶轮换向次数多,电机启动电流是额定电流的5—7倍,“标准洗”更省电;

如果每个汽车司机都注意给轮胎及时适当充气,车辆能效就能提高6%,每辆车每年就可以减少90千克二氧化碳排放量;

告诉你怎样计算“碳”消耗量,生活中的减碳常识有哪些?

家庭“碳”排放量如何计算

每家每户在生活中都要排放“碳”,你知道每天的碳排放量是多少吗?下面的方法不妨一试。

家庭用电中,二氧化碳排放量(千克)等于耗电度数乘以0.785。也就是说,你用了100度电,等于你排放了大约78.5千克二氧化碳。

出行时,如果开小轿车,二氧化碳排放量(千克)等于油耗公升数乘以2.7。

家用天然气中,二氧化碳排放量(千克)等于天然气使用度数乘以“碳强度系数”0.19。

家用自来水中,二氧化碳排放量(千克)等于自来水使用度数乘以0.91。

去年,中国政府对全世界公开承诺量化减排指标,决定到2020年温室气体排放比2005年下降40%-45%。在应对全球气候变暖和能源危机的跋涉中,以低能耗、低污染、低排放为标志的低碳经济时代已如约而至,正在深刻地改变着我们的生活。

我们面临是日益恶化的环境,即将枯竭的化石能源,居高不下的生活成本......其实只要举手之牢就能让世界变的更美好。保护环境,节约能源是我们是基本国策,我们要实现可持续发展,既要促进人与自然的和谐,实现经济发展和人口,资源环境相协调,又要坚持走生产发展,生活富裕,生态良好的文明发展道路,保证一代一代永续发展。

减少二氧化碳的排放,选择“低碳生活”是每个公民应尽的责任。电脑,电灯,空调,任何电器一旦不用了应随手关掉;手机一旦充电完成,立即拔掉充电插头;使用节能电灯泡,一只11W节能灯的照明效果顶的上60W的普通灯泡,而且每分钟都比普通灯泡节电80%,如果全国使用12亿只节能灯,节约的电量相当于三峡水电站的年发电量;选择节能空调,温度不要开的过高或过低,这样不但耗能,而且让人不舒适,削弱了人体自动调节体温的能力;多步行,骑自行车,坐轻轨或地铁;电视机屏幕不要太亮,调成中等亮度,则既能节能又能保护视力,3亿台电视机,仅调暗亮度这个小动作,每年就可以省电50亿度我的一些生活习惯必须改变,比如提前淘米并浸泡10分钟,然后再用电饭锅煮,可减少4.5度电,算下就能减少4.4千克二氧化碳排放呢。这些都是举手之劳,如果不做就成了浪费之源。”

低碳生活,就是指生活作息时所耗用的能量要尽力减少,从而减低碳,特别是二氧化碳的排放量,从而减少对大气的污染,减缓生态恶化,主要是从节电节气和回收三个环节来改变生活细节。

低碳生活

1。使用传统的发条式闹钟替代电子钟,这样可以每天减少大约48克的二氧化碳排放量。

2。使用传统牙刷替代电动牙刷,这样可以每天减少48克二氧化碳排放量。 3。把在电动跑步机上45分钟的锻炼改为到附近公园慢跑,可以减少将近1000克的二氧化碳排放量。

4。如果去8公里以外的地方,乘坐轨道交通可比乘汽车减少1700克的二氧化碳排放量。

5。不用洗衣机甩干衣服,而是让衣服自然晾干,这可以减少2300克的二氧化碳排放量。

6。在午餐休息时和下班后关闭电脑及显示器,这样做除省电外还可以将这些电器的二氧化碳排放量减少三分之一。

7。改用节水型淋浴喷头,不仅可以节水,还可以把三分钟热水淋浴所导致的二氧化碳排放量减少一半。

8、多运动,少看电视机,少上网,多与家人和朋友聚聚,多出去散散步。

9、尽量吃绿色食品,多喝水,少喝酒和碳酸类饮料,高脂肪高糖等垃圾食品尽量避免

10、用节能灯代替白炽灯,瓦数(功率)尽量低点,照明够了就行,而且房间亮度低点更浪漫更有情趣。

11、近距离外出,尽量使用非机动车(步行或自行车)

12、不乱丢垃圾,进行垃圾分类。

13、没人或没必要的时候,不开灯、不使用空调。

14、多开窗多通风,随手关灯。关紧水龙头,关紧煤气灶关电视,关空调,关电脑。

15、洗菜,洗水果的水在家中预备一个大桶盛起来,可以浇花,冲厕所,做到生活废水再利用。

16、烧饭可以先把米在水里泡段时间再烧,做绿豆汤不用高压锅,晚上把绿豆泡在热水瓶的开水里,早上就可以美美的喝了。

17、手机晚上最好关上,一个省电,一个有利于休息,当然有要紧事情除外。

18、有些包装纸,广告纸反面是空白的可以用来做便签或草稿纸

19、合理使用冰箱,定期除霜。电脑,电视机,音响,人临时离开时,进入待机状态,以节省能源,不用时直接关机。

20、选购商品不要一味追求高档,实用,性价比高就是好商品,避免浪费。

21、能不开空调就不开空调,尽量扇电风扇,或是扇扇子,能手洗衣服,尽量不用洗衣机洗。

22、抽水马桶贮水桶中放一个装满水的大号可乐瓶,减少贮水量。最好能设计两个开关,一个用来冲大便,另一个冲小便。

23、充分利用自然能如太阳能热水器,风力发电,能不用电梯就尽量走楼梯,可以省电又能锻炼身体。

低碳生活,从“地球一小时”开始

3月27日是“地球一小时”活动日。“地球一小时”是WWF(世界自然基金会)应对全球气候变化所提出的一项倡议,旨在通过熄灯一小时来唤醒全球民众对于二氧化碳排放的重视,从而减轻过量二氧化碳排放导致的气候变化对人类的威胁。“地球一小时”2010年的目标:全球6000多个城市、超过10亿人参与活动,政府、企业、社区积极加入,让“地球一小时”成为世界上规模最大的环保行动。正如有识者指出,“熄灯一小时”不是目的,关键是让环保节能意识深入人心,希望我们每一个人不仅在这一天加入这个活动,更在以后的日子里为保护地球尽力——

怎样以最有效的方式在数据库中存储颜色值?

队列和堆栈区别是什么?

队列是先进先出结构,堆栈是先进后出结构

用堆或者栈存储数据的区别是什么?

怎样在数据库中存储N维向量?

你倾向于用哪种类型的语言编写复杂的数据结构?

C/C++

21的二进制值是什么?十六制值呢?

二进制:00010101;十六进制:0x15

不管是书、杂志还是网络,你从中所学到的最后一点数据结构的知识是什么?Dijkstra最短路径。

怎样在XML文档中存储足球比赛结果(包括队伍和比分)?

有哪些文本格式可以保存Unicode字符?

测试

什么是回归测试?怎样知道新引入的变化没有给现有的功能造成破坏?

产品修正了bug或增加了功能,生成新的版本,对这个版本进行测试,就叫做

回归测试。

保证变化没有对产品原有功能造成破坏,最可靠的方式是对产品进行全面的测试。还有一个方法是只对修改部分的相关部分进行测试,这是一种折中的方法,因为进度、成本的原因,这也是经常被采用的方法,这个方法有一定的风险,因为准确的确定产品修改部分的相关部分往往很有难度,范围不好确定。

具体采用哪种回归方式,要由这个产品的质量要求、人力资源、时间进度等因

素来决定。

如果业务层和数据层之间有依赖关系,你该怎么写单元测试?

如果有了数据层的实现,就没什么问题了。提出这个问题,主要是在数据层没有实现的情况下,如何对业务层的代码进行单元测试?

这个时候我们需要模拟数据层,给业务层提供数据,比如简单的返回各类数据,直接从文本文件、数据库中读取我们需要的测试数据等来完成单元测试。

你用哪些工具测试代码质量?

针对代码的测试工具有很多,一般分2大类,是从执行测试的方式上分的,一是静态分析类,一是动态测试类。

静态分析类,特点就是不需要执行代码。象logiscope、C++ Test、LINT就属于这一类,主要是检测代码的编写规范,分析代码的复杂度、可能存在的隐患等等。这类工具在对可靠性要求较高的软件领域使用较多,比如航空航天。我们平时做的代码评审,就是在人工做这类工作。

动态测试类,主要是发现代码中诸如内存泄露、数据访问越界等这类错误,比如 Compuware DevPartner、Rational PurifyPlus、valgrind这类工具。这类

测试工具,要求测试代码必须运行起来,只有执行到的代码,存在问题才会被发现。没有执行到的代码即使存在问题也不能被发现。所以使用这类测试,一是靠工具,二是靠你制造的测试输入,如果测试输入不够丰富,很多bug是发现不了的。

还有一个很特别的工具PolySpacee,它打乱了上面的这个分类,它是采用静态的方式,却能够发现动态错误,即不需要制定和执行测试用例,只是静态扫描代码,就能够发现内存泄露这类问题。我是从一个好朋友那里了解到的,但没具体使用过,细节不是很了解。

象XUnit、覆盖率测试工具这类在代码测试中也会经常用到,但它们属于辅助性工具,本身不能对代码进行什么测试。

Rational Purify、Rational Quantify、Code Reviewer、Intel vTunes、Source Monitor。

在产品部署之后,你最常碰到的是什么类型的问题?

产品发布后,特殊数据、特殊测试环境导致的问题比较多。易用性上,因为对用户的使用习惯不了解,可能会有有问题反馈。包括性能,因为对用户的实际使用规模估计不足,也可能导致问题。

什么是代码覆盖率?有多少种代码覆盖率?

代码覆盖率是单元测试里的概念,指测试结束后,被执行的代码或路径数量占总代码或路径数量的百分比。

语句覆盖、分支覆盖、路径覆盖是常见的几种覆盖率方式。

统计代码的覆盖率,一般都需要使用测试工具,人工很难做这项工作。

功能测试和探索性测试的区别是什么?你怎么对网站进行测试?

功能测试,需要依照事前制定好的测试用例来执行测试。

探索性测试,不会事前制定测试用例,是在测试中边设计边执行。其实在功能测试中也有探索性测试的使用,因为测试用例不可能细化到每个细节,测试人员在执行时肯定会做一些探索性测试。探索性测试一般在测试初期对产品不了解时,或者到了后期在现有测试用例基础上发布不了bug时使用。还有在安全性测试中,探索性测试肯定要经常被用到。

怎么对网站进行测试?不知道为什么要放到这个问题里来。网站除了一般性的功能测试外,性能、安全性测试也是必须要进行的测试内容。类似安装卸载、升级这类产品测试中关注的内容,网站测试就不需要关注了。

测试套件、测试用例、测试计划,这三者之间的区别是什么?你怎么组织测试?先从大的说。

测试计划是指导整个测试过程的一份概述文档,包括测试范围、测试策略、人力物力资源、时间进度、风险分析等内容。

测试套件,是测试用例的一个大的分类,按照逻辑,或者说按照测试组的理解把测试用例划分成不同的部分,每个部分就是一个test suite。

测试用例,最底层的测试产品,实际覆盖产品各个功能点、非功能点的测试。如果用过XUnit工具,应该对test suite、test case这样的划分不陌生。

要对电子商务网站做冒烟测试,你会做哪些类型的测试?

冒烟测试,主要目的是通过执行较少或较简单的测试用例,验证产品基本功能是否正常。如果这个测试都没有通过,就没有必要投入人力进行后续的测试工作了。

对电子商务网站理解的不多,如果是我对电子商务网站进行冒烟测试的话,我会执行:用户注册,登陆,检索,挑选商品、购买、付账这些测试,每类只做一项基本测试。另外保证每个链接都是有效的。

客户在验收测试中会发现不满意的东西,怎样减少这种情况的发生?

可能比较多的情况是:有些功能实现不是用户想要的;不满足特殊的行业要求;性能没达到用户的要求;使用习惯、易用性不符合用户要求等等这类。比较好的方式是渐近的给用户提供产品,让用户能在产品的不同开发阶段介入,提出意见,每个阶段都进行相应的测试。如果用户能作为开发测试组的一员,那就更好了。

维护

1.你用哪些工具在维护阶段对产品进行监控?

Windbg,sysinternals,脚本。

2.要想对一个正在产品环境中被使用的产品进行升级,该注意哪些重要事

项?

升级不影响现有环境;升级的组件不影响其它组件的正常使用;不引入bug;

若出现重大问题可顺利取消升级并具有rollback机制。

3.如果在一个庞大的文件中有错误,而代码又无法逐步跟踪,你怎么找出

错误?

代码中加入Log机制;或者利用某些静态代码分析工具(限于语法或简单逻辑错误)。

4.你怎样保证代码中的变化不会影响产品的其他部分?

运用合适的开发和设计方法,比如某些设计模式,组件模型等,减小组件间的耦合度。

5.你怎样为产品编写技术文档?

根据产品满足的需求,结合实际产品功能的划分,采用由顶向下逐步细化的方式(top-down)。

6.你用过哪些方式保证软件产品容易维护?

代码中加入灵活的Log机制,产生bug后能及时发现错误点;尽量使用一些脚本、可配置ini文件或二进制文件,控制代码的执行方式,增加灵活度。

7.怎样在产品运行的环境中进行系统调试?

8.什么是负载均衡?负载均衡的方式有哪些种?

9.为什么在应用程序的生命周期中,软件维护费用所占的份额最高?

10.再造工程(re-engineering)和逆向工程(reverse engineering)的

区别是什么?

配置管理

1.你知道配置管理中基线的含义么?怎样把项目中某个重要的时刻冻结?

基线标志着开发过程中的各个millstones。形成文档并复审通过后,基线就形成了,标志着开发过程中的一个阶段进入正式的可控状态。基线不是不可以修改,但必须经过合适的标准来评估,即Change Management中要求的过程进行。基线是进一步开发的的基准和出发点。

冻结项目中的重要时刻:形成规范文档,评估之后获得认证。

2.你一般会把哪些东西纳入版本控制?

Source Code,二进制文件

3.怎样可以保证团队中每个人都知道谁改变了哪些东西?

版本控制工具,脚本追踪。

一套精细软件测试面试题(问题加答案)

周五面试题: 1.软件测试的定义,评价测试工作是枯燥反复的,你是如何理解的?软件测试就是利用测试工具按照测试方案和流程对产品进行功能和性能测试,甚至根据需要编写不同的测试工具,设计和维护测试系统,对测试方案可能出现的问题进行分析和评估。执行测试用例后,需要跟踪故障,以确保开发的产品适合需求。 软件测试工作并非枯燥乏味。简而言之软件测试工作是一种破坏程序的有价值的行为,工作性质鼓励我们这种破坏行为。另一方面他是一种正向思维与逆向思维斗争的工作,与开发相辅相成,相互依存、制约。是一种让我们乐于学习和探索的趣味工作。 2.画出你所知道的软件生命周期模型,及软件测试模型? <软件生命周期> 略:软件测试模型V模型、W模型详见第三本书----《国际软件测试概论》 3.什么是兼容性测试?兼容性测试侧重哪些方面? 什么是兼容性测试: 一般来说,兼容性指能同时容纳多个方面,在计算机术语上兼容是指几个硬件之间、几个软件之间或是软硬件之间的相互配合程度。 具体的讲,兼容性测试是指测试在特定的硬件平台上、不同的应用程序之间、不同的操作系统平台上、不同的网络等环境中是否能很好的运行的测试。 兼容性测试侧重哪些方面: 兼容测试的重点是,对兼容环境的分析。通常,是在运行软件的环境不是很确定的情况下,才需要做兼容。根据软件运行的需要,或者根据需求文档,一般都能够得出用户会在什么环境下使用该软件,把这些环境整理成表单,就得出做兼容测试的兼容环境了。 4.写出你以前的项目或工作中,最让你茫然的事情,你是怎么处

理的? 回答:在我以前的项目和工作中,让我最茫然的事情是软件测试需求老在变化着,导致测试工作不能在预期的时间内完成。 面对这样的情况我的处理方式如下: (1)尽早与承担该项目风险的负责人接触,以便了解需求会怎样改变,从而可以尽早地改变测试计划和策略。 (2)如果在对应用程序进行初始设计时多考虑一些适应性,那么以后在发生需求的改变时就不需要再为改变做很多事情了。 (3)只要有可能,就应使用快速原型(rapid prototyping),以帮助用户确认他们的需求,从而减少变更。 (4)在项目的时间表中应当留出余量,以应付可能出现的变更。 (5)尽量把新的需求纳入应用软件的“下一版”,而把原始需求作为“第一版”。 (6)通过谈判,把易于实现的新的变更列入项目,而把难于实现的新需求列入该应用软件的以后的版本。 (7)要确保让客户和管理人员了解变更对进度表的影响、所带来的风险、以及因变更所引起的大量资金消耗。 (8)对变更进行适当的风险分析,以减少回归测试的要求。 5.你的朋友怎样评价你? 回答: 跟朋友们在一起的时候,朋友都常常说我为人诚实、稳重、团结他人、善于帮助他人、关心家人、爱好学习。但是朋友们都说我也有一些缺点就是做事儿比较心急,凡是想着第一时间将自己手里的事情尽快完成,就怕担心后面还有一些需要解决的问题;另外就是凡事都想着拿第一,好胜之心比较强烈。 6.据说有人给酒肆的老板娘出了一个难题:此人明明知道店里只有两个舀酒的勺子,分别能舀7两和11两酒,却硬要老板娘卖给他2两酒。聪明的老板娘毫不含糊,用这两个勺子在酒缸里舀酒,并倒来倒去,居然量出了2两酒,聪明的你能做到吗? 11-7=4(11两勺舀满,倒入7两勺直到满,则11两勺内剩4两,7两勺清空,把11两勺内剩的4两倒入7两勺内,则7两勺内少3两) 11-3=8(11两勺内装满,倒入装有4两的7两勺内,则11两勺内剩8两,清空7两勺) 8-7=1(把11两勺内剩的8两倒入7两勺内直到满,则11两勺内剩1两,清空7两勺,把11两勺内剩的1两倒入7两勺内)

软件测试工程师笔试题及答案

测试工程师笔试题 一、计算机知识(30分) 1、在Linux系统中,一个文件的访问权限是755,其含义是什么 参考答案: 755表示该文件所有者对该文件具有读、写、执行权限,该文件所有者所在组用户及其他用户对该文件具有读和执行权限。 2、Linux中,如何从root用户切换到普通用户 参考答案:su su user1 切换到user1,但切换后的当前目录还是root访问的目录 su – user1 切换到user1,并且当前目录切换到user1的根目录下(/home/user1/) 3、简述一下C/S模式和B/S模式的区别 参考答案: c/s 是客户端/服务器架构 b/s 是浏览器/服务器架构 C/S模式有以下特点: S模式将应用与服务分离,系统具有稳定性和灵活性 S模式配备的是点对点的结构模式,适用于局域网,有可靠的安全性 3.由于客户端实现与服务器端的直接连接,没有中间环节,因此响应速度快 4.在C/S模式中,作为客户机的计算机都要安装客户机程序,一旦软件系统升级,每台客户机都要安装客户机程序,系统升级和维护较为复杂 B/S模式有以下特点: 1.系统开发、维护、升级方便 每当服务器应用程序升级时,只要在服务器上升级服务应用程序即可,用户计算机上的浏览器软件不需要修改,系统开发和升级维护方便 S模式具有很强的开放性 在B/S模式下,用户通过通用的浏览器进行访问,系统开放性好 S模式的结构易于扩展 由于Web的平台无关性,B/S模式的结构可以任意扩展,可以从包含一台服务器和几个用户的小型系统扩展成为拥有成千上万个用户的大型系统 4.用户使用方便 B/S模式的应用软件都是基于Web浏览器的,而Web浏览器的界面是类似的。对于无用户交换功能的页面。用户接触的界面都是一致的,用户使用方便 4、Windows操作系统中PATH环境变量的作用是什么 参考答案: PATH是Windows操作系统环境变量,PATH作用是用户在命令行窗口执行一个命令,则在PATH变量设置的目录下依次寻找该命令或对应的执行文件,若找到,则执行,若没有找到,则命令行窗口返回无效命令。 5、TCP和UDP有什么区别 参考答案: TCP-有连接,所以握手过程会消耗资源,过程为可靠连接,不会丢失数据,适合大数据量交换UDP-非可靠连接,会丢包,没有校验,速度快,无须握手过程

平安银行软件开发笔试题

平安银行软件开发笔试题

1、做过的项目中,你认为有哪里亮点?举例说明。 2、项目中遇到冲突问题,你是怎么处理的? 3、举例说明。 4、String和StringBuffer的区别? String是final类,不能被继承,一旦创立,不能修改它的值。 StringBuffer是可变类,对字符串的操作效率比String高。 5、线程安全是怎么回事?java是怎么解决线程安全 的? 线程安全是为了解决资源冲突,防止死锁的发生,java中用synchronized解决,具体有:同步对象、同步代码块、同步方法。 6、Java中异常处理机制的关键字? Throws、throw、try、catch、finally。 7、java中有哪里基础数据类型?String是不是java基础数据类型? byte、short、int、long、float、double、char、boolean。不是。 8、javascript怎么获取一个对象的值,这个对象是个 数组,也就是有多个同名的对象。例:

Var ids=document.getElementsByName(‘report_id’); 9、sql中select语句中group by在order by之前还是 之后? 之前 10、sql中查询用了group by,对分组后的条件进行过 滤,用哪个关键字? Having 11、索引的作用?创立索引有哪些注意事项? 提高查询效率。 创立索引时应该考虑该字段修改,删除的是否频繁、不要建立重复索引等。 12、如何优化SQL? 如:SQL索引优化、调整表的使用顺序,调整查询条件的先后顺序等。 13、写一个sql语句,查询二月份工资最高的人。如:表结构: T1(id,name),T2(id,salary,month)

软件测试工程师经典面试题目

软件测试工程师面试题汇总 测试技术面试题 (5) 1、什么是兼容性测试?兼容性测试侧重哪些方面? (5) 2、我现在有个程序,发现在Windows上运行得很慢,怎么判别是程序存在问题还是软硬件系统存在问题? (5) 3、测试的策略有哪些? (5) 4、正交表测试用例设计方法的特点是什么? (5) 5、描述使用bugzilla缺陷管理工具对软件缺陷(BUG)跟踪的管理的流程? (5) 6、你觉得bugzilla在使用的过程中,有什么问题? (5) 7、描述测试用例设计的完整过程? (6) 8、单元测试的策略有哪些? (6) 9、LoadRunner分哪三部分? (6) 10、LoadRunner进行测试的流程? (6) 什么是并发?在lordrunner中,如何进行并发的测试?集合点失败了会怎么样? (6) 12、使用QTP做功能测试,录制脚本的时候,要验证多个用户的登录情况/查询情况,如何操作? (6) 13、QTP中的Action有什么作用?有几种? (6) 14、TestDirector有些什么功能,如何对软件测试过程进行管理? (7) 15、你所熟悉的软件测试类型都有哪些?请试着分别比较这些不同的测试类型的区别与联系(如功能测试、性 能测试......)? .. (7) 16、条软件缺陷(或者叫Bug)记录都包含了哪些内容?如何提交高质量的软件缺陷(Bug)记录? (8) 17、Beta测试与Alpha测试有什么区别? (8) 18、软件的评审一般由哪些人参加?其目的是什么? (8) 19、测试活动中,如果发现需求文档不完善或者不准确,怎么处理? (8) 20、阶段评审与项目评审有什么区别? (8) 21、阐述工作版本的定义? (8) 22、什么是桩模块?什么是驱动模块? (8) 23、什么是扇入?什么是扇出? (8) 24、你认为做好测试计划工作的关键是什么? (8) 25、你认为做好测试用例工作的关键是什么? (9) 26、简述一下缺陷的生命周期? (9) 27、软件的安全性应从哪几个方面去测试? (9) 28、软件配置管理工作开展的情况和认识? (9) 29、你觉得软件测试通过的标准应该是什么样的? (10) 30、引入测试管理的含义? (10) 31、一套完整的测试应该由哪些阶段组成? (10) 32、单元测试的主要内容? (10) 33、集成测试也叫组装测试或者联合测试,请简述集成测试的主要内容? (10) 34、简述集成测试与系统测试关系? (10) 35、软件测试的文档测试应当贯穿于软件生命周期的全过程,其中用户文档是文档测试的重点。那么软件系统 的用户文档包括哪些? (10) 36、软件系统中除用户文档之外,文档测试还应该关注哪些文档? (10) 37、简述软件系统中用户文档的测试要点? (11) 38、单元测试主要内容是什么? (11) 39、如何理解强度测试? (13) 40、如何理解压力、负载、性能测试测试? (13) 41、什么是系统瓶颈? (13) 42、文档测试主要包含什么内容? (13)

java软件工程师面试题集

java软件工程师面试题集 EJB方面 1、EJB2.0有哪些内容?分别用在什么场合? EJB2.0和EJB1.1的区别? 答:规范内容包括Bean提供者,应用程序装配者,EJB容器,EJB配置工具,EJB服务提供者,系统管理员。这里面,EJB容器是EJB之所以能够运行的核心。EJB容器管理着EJB的创建,撤消,激活,去活,与数据库的连接等等重要的核心工作。JSP,Servlet,EJB,JNDI,JDBC,JMS..... 2、EJB与JAVA BEAN的区别? 答:Java Bean 是可复用的组件,对Java Bean并没有严格的规范,理论上讲,任何一个Java 类都可以是一个Bean。但通常情况下,由于Java Bean是被容器所创建(如Tomcat)的,所以Java Bean应具有一个无参的构造器,另外,通常Java Bean还要实现Serializable接口用于实现Bean的持久性。Java Bean实际上相当于微软COM模型中的本地进程内COM组件,它是不能被跨进程访问的。Enterprise Java Bean 相当于DCOM,即分布式组件。它是基于Java的远程方法调用(RMI)技术的,所以EJB可以被远程访问(跨进程、跨计算机)。但EJB 必须被布署在诸如Webspere、WebLogic这样的容器中,EJB客户从不直接访问真正的EJB组件,而是通过其容器访问。EJB容器是EJB组件的代理,EJB组件由容器所创建和管理。客户通过容器来访问真正的EJB组件。 3、EJB的基本架构 答:一个EJB包括三个部分: Remote Interface 接口的代码 package Beans; import javax.ejb.EJBObject; import java.rmi.RemoteException; public interface Add extends EJBObject { //some method declare } Home Interface 接口的代码

Java软件开发工程师笔试题(答案)

Java工程师笔试题 一、填空题(本大题10小题,每空1分,共20分)。 1.Java语言的三大特性即是: 继承、封装、多态。 2.在Java中,char 型采用____unicode_______编码方案,这样,无论是中文字符还是英文字符,都是占用__2___个字节的内存空间。 3. 形式参数指的是方法被__定义____ 时的参数行,实际参数是方法被__调用__ _ 时所传递进去的变量或值。 4.JSP内置对象中,application对象是代表应用程序上下文,它允许JSP页面与包括在同一应用程序中的任何Web组件共享信息,而session 对象则是每个客户专用的。 5.如果想把一个对象写入一个流,那么这个类就必须实现Seralizable 接口。 6.程序中实现多线程的方法有两种:继承Thread类和实现___Runable _ 接口。 7.多线程中,可以通过调用相应的setPriority() 方法来修改一个线程的相对优先级。 8.面向对象编程的五大设计原则,分别是单一职责、开放封闭、 里氏替换、依赖倒置、接口分离 9.通过Ajax,客户端获取的数据主要有两种类型:文本型和xml 10.Socket通常也称为套接字,用于描述__ ip 和_ _接口 二、选择题(本大题20 小题,每小题2分.共40分)。 1.在JA V A中,如果父类中某些方法不包含任何逻辑,并且需要由子类重写.应该使用( )关键字来声明父类的这些方法: A) final B) static C) abstract D) void 2.在JA V A中,已定义两个接口B和C,要定义一个实现这两个接口的类,以下语句正确的是()。 A) interface A extend B,C B) interface A implements B,C C) class A implements B,C D) class A implements B, implements C

软件测试工程师笔试及面试经典试题(大集合)

笔试和面试是每个人都会遇到的问题,如何让你在笔试和面试之前做好充分准备,对笔试和面试的问题有充分的了解,做到知己知彼很重要,如果你想在面试中脱颖而出,请认真学习本篇文章 软件测试工程师经典笔试题及面试题 一、软件测试工程师经典笔试试题 一、判断题(每题1分,12 分,正确的√,错误的╳) 1.软件测试的目的是尽可能多的找出软件的缺陷。() 2.Beta 测试是验收测试的一种。() 3.验收测试是由最终用户来实施的。() 4.项目立项前测试人员不需要提交任何工件。() 5.单元测试能发现约80%的软件缺陷。() 6.代码评审是检查源代码是否达到模块设计的要求。() 7.自底向上集成需要测试员编写驱动程序。() 8.负载测试是验证要检验的系统的能力最高能达到什么程度。() 9.测试人员要坚持原则,缺陷未修复完坚决不予通过。() 10.代码评审员一般由测试员担任。() 11.我们可以人为的使得软件不存在配置问题。() 12.集成测试计划在需求分析阶段末提交。() 二、不定项选择题(每题2 分,10分) 1.软件验收测试的合格通过准则是:() A.软件需求分析说明书中定义的所有功能已全部实现,性能指标全部达到要求。 B.所有测试项没有残余一级、二级和三级错误。 C.立项审批表、需求分析文档、设计文档和编码实现一致。 D.验收测试工件齐全。 2.软件测试计划评审会需要哪些人员参加?() A.项目经理 B.SQA 负责人 C.配置负责人 D.测试组 3.下列关于alpha 测试的描述中正确的是:() A.alpha 测试需要用户代表参加 B.alpha 测试不需要用户代表参加 C.alpha 测试是系统测试的一种 D.alpha 测试是验收测试的一种 4.测试设计员的职责有:() A.制定测试计划 B.设计测试用例 C.设计测试过程、脚本 D.评估测试活动 5.软件实施活动的进入准则是:() A.需求工件已经被基线化

软件工程师面试题(含答案)

一、你对MVC的理解,MVC有什么优缺点?结合Struts,说明在一个Web应用如何去使用? 答: MVC设计模式(应用观察者模式的框架模式) M: Model(Business process layer),模型,操作数据的业务处理层,并独立于表现层(Independent of presentation)。 V: View(Presentation layer),视图,通过客户端数据类型显示数据,并回显模型层的执行结果。C: Controller(Control layer),控制器,也就是视图层和模型层桥梁,控制数据的流向,接受视图层发出的事件,并重绘视图 MVC框架的一种实现模型 模型二(Servlet-centric): JSP+Servlet+JavaBean,以控制为核心,JSP只负责显示和收集数据,Sevlet,连接视图和模型,将视图层数据,发送给模型层,JavaBean,分为业务类和数据实体,业务类处理业务数据,数据实体,承载数据,基本上大多数的项目都是使用这种MVC的实现模式。StrutsMVC框架(Web application frameworks) Struts是使用MVC的实现模式二来实现的,也就是以控制器为核心。 Struts提供了一些组件使用MVC开发应用程序: Model:Struts没有提供model类。这个商业逻辑必须由Web应用程序的开发者以JavaBean 或EJB的形式提供 View:Struts提供了action form创建form bean, 用于在controller和view间传输数据。此外,Struts提供了自定义JSP标签库,辅助开发者用JSP创建交互式的以表单为基础的应用程序,应用程序资源文件保留了一些文本常量和错误消息,可转变为其它语言,可用于JSP中。Controller:Struts提供了一个核心的控制器ActionServlet,通过这个核心的控制器来调用其他用户注册了的自定义的控制器Action,自定义Action需要符合Struts的自定义Action规范,还需要在struts-config.xml的特定配置文件中进行配置,接收JSP输入字段形成Action form,然后调用一个Action控制器。Action控制器中提供了model的逻辑接口。 二、什么是WebService? 答: WebService是一个SOA(面向服务的编程)的架构,它是不依赖于语言,不依赖于平台,可以实现不同的语言间的相互调用,通过Internet进行基于Http协议的网络应用间的交互。 WebService实现不同语言间的调用,是依托于一个标准,webservice是需要遵守WSDL (web服务定义语言)/SOAP(简单请求协议)规范的。 WebService=WSDL+SOAP+UDDI(webservice的注册) Soap是由Soap的part和0个或多个附件组成,一般只有part,在part中有Envelope和Body。 Web Service是通过提供标准的协议和接口,可以让不同的程序集成的一种SOA架构。Web Service的优点 (1) 可以让异构的程序相互访问(跨平台) (2) 松耦合 (3) 基于标准协议(通用语言,允许其他程序访问) Web Service的基本原理 (1) Service Provider采用WSDL描述服务 (2) Service Provider 采用UDDI将服务的描述文件发布到UDDI服务器(Register server)

软件工程师笔试题目

软件工程师笔试题目 (考试时间:60分钟,满分100分) 1、请简要描述TCP/IP参考模型和OSI参考模型。(10分) 2、简述如下物联网设备Wi-FI、Bluetooth、ZigBee、RFID、NB-IoT的各自特点。(10分) 3、编程实现如下运算:1!+ 2!+ 3!+ ……+ 17! + 18! + 19! + 20!。(15分) 4、假设有个字符数组A,有10个元素,请对这10个元素进行从小到大排列。(10分)

5、假定x=9999,求下面函数的返回值(10分) int func(x) { int countx = 0; while(x) { countx ++; x = x&(x-1); } return countx; } 6、对整型数组a[10]输入10个元素,然后用指针方式依次输出各元素值。(15分) 7、在SQL server上创建名为XuGuang的数据库,然后创建WCM730Q的列表,第一列MAC address为主键,第二列为VID_PID,第三列为BT_FW,第四列为Staff_No. (10分) 8、linux基础命令填空(10分) (1)获取Kernel版本信息的linux命令是____________ (2)实现一个新建文件夹功能的linux命令是____________ (3)用来查看和配置网络接口(网卡)的linux命令是____________ (4)把文件从A路径拷贝到B路径的linux命令是____________ (5)使用vim对文档完成修改后,实现保存退出的功能的命令是____________ 9、请用英文写作,描述下个人基本信息、兴趣爱好、专业技能、职业规划等(10分)(请背面作答)

软件开发工程师招聘试题

附录一 附录一【软件开发工程师招聘试题一】 考试时间:60分钟:______成绩:______ 一、单选题(共9题,每题2分) 1.对象b 最早在以下哪个选项前被垃圾回收?() public class Test5 { static String f(){ String a="hello"; String b="bye"; String c=b+"!"; //lineA String d=b; b=a; //lineB d=a; //lineC return c; //lineD } public static void main(String[] args) { String msg=f(); System.out.println(msg); } } A.lineA B.lineB C.lineC D.lineD 2.2.运行下列代码,结果如何?() class Example { int milesPerGallon; int index; Example(){} Example(int mpg){ milesPerGallon=mpg;

index=0; } public static void main(String[] args) { int index; Example e = new Example(25); if(args.length>0){ if(args[index].equals("Hiway")){ https://www.doczj.com/doc/434268709.html,esPerGallon=2; } System.out.println("mpg:"+https://www.doczj.com/doc/434268709.html,esPerGallon); } } } 这段代码通过编译,并且如果命令行输入”Hiway”则显示”mpg:50”,如果输入不是”Hiway”则显示”mpg:25”; 这段代码通过编译,并且如果命令行输入”Hiway”则显示”mpg:50”,如果输入不是”Hiway”则抛出ArrayIndexOutputBoundsException异常。 这段代码不能通过编译,因为自动变量index没有被初始化。 这段代码不能通过编译,因为milesPerGallon没有被初始化。 见例子Example.java 3.3.当编译如下代码时,会显示什么?() int i=1; switch(i){ case 0: System.out.println("zero"); case 1: System.out.println("one"); case 2: System.out.println("two"); default: System.out.println("default"); } One B. one,default C. one,two,default D.default 见例子:Test3.java 4.4.当编译运行如下代码时会发生什么现象?() public class MyClass { public static void main(String arguments[] ) { amethod(arguments); } public void amethod(String []arguments){

软件测试基础(经典测试面试题答案)

软件测试基础教程 测试的基本概念 测试是软件生存周期中十分重要的一个过程,是产品发布、提交给最终用户前的稳定化阶段。 1、测试的分类: 从测试方法的角度可以分为手工测试和自动化测试。 手工测试:不使用任何测试工具,根据事先设计好的测试用例来运行系统,测试各功能模块。 自动化测试:利用测试工具,通过编写测试脚本和输入测试数据,自动运行测试程序。目前最常用的自动化测试工具是基于GUI的自动化测试工具,基本原理都是录制、回放技术。 从整体的角度可以分为单元测试、集成测试、系统测试、确认测试。 单元测试:是针对软件设计的最小单位—程序模块,进行正确性检验的测试工作。一般包括逻辑检查、结构检查、接口检查、出错处理、代码注释、输入校验、边界值检查。 单元测试的依据是系统的详细设计;一般由项目组开发人员自己完成。 集成测试:在单元测试的基础上,将所有模块按照设计要求组装进行测试。一般包括逻辑关系检查、数据关系检查、业务关系检查、模块间接口检查、外部接口检查。 系统测试:系统测试是在所有单元、集成测试后,对系统的功能及性能的总体测试。 确认测试:模拟用户运行的业务环境,运用黑盒测试方法,验证软件系统是否满足用户需求或软件需求说明书中指明的软件特性(功能、非功能)上的。 从测试原理上分为:白盒测试、黑盒测试和灰盒测试。 白盒测试:是通过程序的源代码进行测试而不使用用户界面。这种类型的测试需要从代码句法发现内部代码在算法,溢出,路径,条件等等中的缺点或者错误,进而加以修正。 黑盒测试:是通过使用整个软件或某种软件功能来严格地测试, 而并没有通过检查程序的源代码或者很清楚地了解该软件的源代码程序具体是怎样设计的。测试人员通过输入他们的数据然后看输出的结果从而了解软件怎样工作。在测试时,把程序看作一个不能打开的黑盆子, 在完全不考虑程序内部结构和内部 特性的情况下,测试者在程序接口进行测试,它只检查程序功能是否按照需求 规格说明书的规定正常使用,程序是否能适当地接收和正确的输出。黑盒测试 方法主要有等价类划分、边界值分析、因—果图、错误推测法。 等价类划分: 是把所有可能的输入数据,即程序的输入域划分成若干部分(子集),然后从每一个子集中选取少数具有代表性的数据作为测试用例.该方法是一种重要的,常用的黑盒测试用例设计方法. 1) 划分等价类: 等价类是指某个输入域的子集合.在该子集合中,各个输入数据对于揭露程序中的错误都是等效的.并合理地假定:测试某等价类的代表值就等于对这一类其它值的测试.因此,

软件工程师常见面试题及答案.doc

软件工程师常见面试题及答案 需求调查: 全面了解您的系统概况、应用领域、软件开发周期、软件开发环境、开发组织、时间安排、功能需求、性能需求、质量需求及测试要求等根据系统概况进行项目所需的人员、时间和工作量估计及项目报价。 制定初步的项目计划: 在与您充分共同和协商的基础上制定我们的测试计划。 测试准备: 组织测试团队、培训、建立测试和管理环境等。 测试设计: 按照测试要求进行每个测试项的测试设计,包括测试用例的设计及测试脚本的开发等。 测试实施: 按照测试计划进行实施测试。 测试评估: 根据测试的结果,出具测试评估报告。 2、根据你的经验说说你对软件测试/质量保证的理解? 软件质量保证与测试是根据软件开发阶段的规格说明和程序的内部结构而精心设计的一批测试用例(即输入数据和预期的输出结果),并利用这些测试用例去运行程序,以发现错误的过程。它是对应用程序的各个方面进行测试以检查其功能、语言有效性及外观排布.。 3、(1) 你对SQA的职责和工作活动(如软件度量)的理解: SQA就是独立于软件开发的项目组,通过对软件开发过程的监控,来保证软件的开发流程按照指定的CMM规程(如果有相应的CMM规程),对于不符合项及时提出建议和改进方案,必要是可以要高层经理汇报以求问题的解决。通过这样的途径来预防缺陷的引入,从而减少后期软件的维护成本。SQA主要的工作活动包括制定SQA工作计划,参与阶段产物的评审,进行过程质量、功能配置及物理配置的审计等;对项目开发过程中产生的数据进行度量等等;

(2) 说说你对软件配置管理的理解: 项目在开发的过程中要用相应的配置管理工具对配置项(包括各个阶段的产物)进行变更控制,配置管理的使用取决于项目规模和复杂性能及风险的水平。软件的规模越大,配置管理就显得越重要。还有在配置管理中,有一个很重要的概念,那就是基线,是在一定阶段各个配置项的组合,一个基线就提供了一个正式的标准,随后的工作便基于此标准,并且只有经过授权后才能变更这个标准。配置管理工具主要有CC,VSS,CVS等,偶只用过CVS,对其它的不熟悉 (3) 怎样写测试计划和测试用例: 简单点,测试计划里应有详细的测试策略(测试方法等),合理详尽的资源安排等,至于测试用例,那是依赖于需求(包括功能与非功能需求)是否细化到功能点,是否可测试等。 (4) 说说主流的软件工程思想(如CMM,CMMI,RUP,XP,PSP,TSP等)的大致情况以及对它们的理解: CMM:SW Capability Maturity Model 软件能力成熟度模型,其作用是用于软件过程的改进、评估及软件能力的评鉴CMMI:Capability Maturity Model Integration 能力成熟度模型集成CMMI融入了大部分最新的软件管理实践,同时弥补了SW-CMM模型中的缺陷 RUP:rational unified process 是软件工程化过程。 XP:extreme program,即极限编程的意思,适用于小型团队的软件开发,想上面第三个问题就可以结合原型法采用这样的开发流程。要明白测试对于xp开发的重要性,强调测试(重点是单元测试)先行的理念。编程可以明显提高代码的质量,持续集成对于快速定位问题很有好处。 PSP ,TSP 分别是个体软件过程(Personal Software Process),群组软件过程(Team Software Process)大家都知道,CMM只是告诉你怎么做但并没有告诉你如何做,所以PSP/TSP就是告诉你企

软件工程师面试中常见的问题

面试中常见的问题 1、请你自我介绍一下你自己, 回答提示:一般人回答这个问题过于平常,只说姓名、年龄、爱好、工作经验,这些在简历上都有,其实,企业最希望知道的是求职者能否胜任工作,包括:最强的技能、最深入研究的知识领域、个性中最积极的部分、做过的最成功的事,主要的成就等,这些都可以和学习无关,也可以和学习有关,但要突出积极的个性和做事的能力,说得合情合理企业才会相信。企业很重视一个人的礼貌,求职者要尊重考官,在回答每个问题之后都说一句“谢谢”。企业喜欢有礼貌的求职者。 2、你觉得你个性上最大的优点是什么? 回答提示:沉着冷静、条理清楚、立场坚定、顽强向上。 乐于助人和关心他人、适应能力和幽默感、乐观和友爱。 3、说说你最大的缺点? 回答提示:这个问题企业问的概率很大,通常不希望听到直接回答的缺点是什么等,如果求职者说自己小心眼、爱忌妒人、非常懒、脾气大、工作效率低,企业肯定不会录用你。绝对不要自作聪明地回答“我最大的缺点是过于追求完美”,有的人以为这样回答会显得自己比较出色,但事实上,他已经岌芨可危了。企业喜欢求职者从自己的优点说起,中间加一些小缺点,最后再把问题转回到优点上,突出优点的部分。企业喜欢聪明的求职者。 4、你对加班的看法?

愿意为公司奉献。 回答样本:如果是工作需要我会义不容辞加班。我现在单身,没有任何家庭负担,可以全身心的投入工作。但同时,我也会提高工作效率,减少不必要的加班 5、你对薪资的要求? 回答提示:如果你对薪酬的要求太低,那显然贬低自己的能力;如果你对薪酬的要求太高,那又会显得你分量过重,公司受用不起。一些雇主通常都事先对求聘的职位定下开支预算,因而他们第一次提出的价钱往往是他们所能给予的最高价钱。他们问你只不过想证实一下这笔钱是否足以引起你对该工作的兴趣。 回答样本一:“我对工资没有硬性要求。我相信贵公司在处理我的问题上会友善合理。我注重的是找对工作机会,所以只要条件公平,我则不会计较太多 回答样本二:我受过系统的软件编程的训练,不需要进行大量的培训。而且我本人也对编程特别感兴趣。因此,我希望公司能根据我的情况和市场标准的水平,给我合理的薪水。 回答样本三:如果你必须自己说出具体数目,请不要说一个宽泛的范围,那样你将只能得到最低限度的数字。最好给出一个具体的数字,这样表明你已经对当今的人才市场作了调查,知道像自己这样学历的雇员有什么样的价值 6、在五年的时间内,你的职业规划? 回答提示:这是每一个应聘者都不希望被问到的问题,但是几乎每个人都会被问到。比较多的答案是“管理者”。但是近几年来,许多公司都已经建立了专门的技术途径。这些工作地位往往被称作“顾问”、“参议技师”或“高级软件工程师”等等。当然,说出其他一些你感兴趣的职位也是可以的,比如产品销售部经理,生产部经理等一些与

软件开发工程师招聘试题

专业技术资料 附录一 附录一【软件开发工程师招聘试题一】 考试时间:60分钟姓名:______成绩:______ 一、单选题(共9题,每题2分) 1.对象b 最早在以下哪个选项前被垃圾回收?() public class Test5 { static String f(){ String a="hello"; String b="bye"; String c=b+"!"; //lineA String d=b; b=a; //lineB d=a; //lineC return c; //lineD } public static void main(String[] args) { String msg=f(); System.out.println(msg); } } A.lineA B.lineB C.lineC D.lineD 2.2.运行下列代码,结果如何?() class Example { int milesPerGallon; int index; Example(){} Example(int mpg){ milesPerGallon=mpg;

index=0; } public static void main(String[] args) { int index; Example e = new Example(25); if(args.length>0){ if(args[index].equals("Hiway")){ https://www.doczj.com/doc/434268709.html,esPerGallon=2; } System.out.println("mpg:"+https://www.doczj.com/doc/434268709.html,esPerGallon); } } } 这段代码通过编译,并且如果命令行输入”Hiway”则显示”mpg:50” ,如果输入不是”Hiway”则显示”mpg:25”; 这段代码通过编译,并且如果命令行输入”Hiway”则显示”mpg:50” ,如果输入不是”Hiway”则抛出ArrayIndexOutputBoundsException异常。 这段代码不能通过编译,因为自动变量index没有被初始化。 这段代码不能通过编译,因为milesPerGallon没有被初始化。 见例子Example.java 3.3.当编译如下代码时,会显示什么?() int i=1; switch(i){ case 0: System.out.println("zero"); case 1: System.out.println("one"); case 2: System.out.println("two"); default: System.out.println("default"); } One B. one,default C. one,two,default D.default 见例子:Test3.java 4.4.当编译运行如下代码时会发生什么现象?() public class MyClass { public static void main(String arguments[] ) { amethod(arguments); } public void amethod(String []arguments){

软件测试技术类面试题集锦(6)十个经典软件测试面试题

软件测试技术类面试题集锦(6)十个经典 软件测试面试题 问题:软件测试技术类面试题集锦(6)十个经典软件测试面试题回答: 1.什么是软件测试,软件测试的目的 参考答案: 什么是软件测试: ·软件测试就是在受控制的条件下对系统或应用程序进行操作并评价操作结果的过程,所谓控制条件应包括正常条件与非正常条件。 ·软件测试过程中应该故意地去促使错误的发生,也就是事情在不该出现的时候出现或者在应该出现的时候没有出现。从本质上说,软件测试是“探测”,在“探测”中发现软件的毛病。 ·软件测试贯穿于软件定义与开发的整个周期,软件的需求规格说明书,结构设计及程序编码,都属于软件测试的对象。 ·软件测试包含白盒测试与黑盒测试,白盒测试是针对程序代码进行正确性检验的测试工作,黑盒测试独立于程序代码,从用户的角度,通过一定的测试步骤与测试案例,验证软件功能、性能等指标能否满足实际应用需求的测试工作。 软件测试的目的: 软件测试的目的是为了保证软件产品的最终质量,在软件开发的

过程中,对软件产品进行质量控制。一般来说软件测试应由独立的产品评测中心负责,严格按照软件测试流程,制定测试计划、测试方案、测试规范,实施测试,对测试记录进行分析,并根据回归测试情况撰写测试报告。测试是为了证明程序有错,而不能保证程序没有错误。 2.软件测试的风险主要体现在哪里 参考答案: 我们没有对软件进行完全测试,实际就是选择了风险,因为缺陷极有可能存在没有进行测试的部分。举个例子,程序员为了方便,在调试程序时会弹出一些提示信息框,而这些提示只在某种条件下会弹出,碰巧程序发布前这些代码中的一些没有被注释掉。在测试时测试工程师又没有对其进行测试。如果客户碰到它,这将是代价昂贵的缺陷,因为交付后才被客户发现。 因此,我们要尽可能的选择最合适的测试量,把风险降低到最小。 3.测试工具在测试工作中是什么地位 参考答案: 国内的很多测试工程师对测试工具相当迷恋,尤其是一些新手,甚至期望测试工具可以取代手工测试。测试工具在测试工作中起的是辅助作用,一般用来提高测试效率。自动化测试弥补了手工测试的不足,减轻一定的工作量。实际上测试工具是无法替代大多数手工测试的,而一些诸如性能测试等自动化测试也是手工所不能完成的。 对于自动测试技术,应当依据软件的不同情况来分别对待,一般自动技术会应用在引起大量重复性工作的地方、系统的压力点、以及

软件工程师面试题含答案

、你对MVC的理解,MVC有什么优缺点?结合Struts,说明在一个Web应用如何去使用? 答: MVC设计模式(应用观察者模式的框架模式) M: Model(Business process layer) ,模型,操作数据的业务处理层, 并独立于表现层(Independent of presentation) 。 V: View(Presentation layer) ,视图,通过客户端数据类型显示数据, 并回显模型层的执行结果。 C: Controller(Control layer) ,控制器,也就是视图层和模型层桥梁,控制数据的流向,接受视图层发出的事件,并重绘视图 MVC框架的一种实现模型 模型二(Servlet-centric) : JSP+Servlet+JavaBean ,以控制为核心,JSP 只负责显示和收集数据,Sevlet ,连接视图和 模型,将视图层数据,发送给模型层,JavaBea n,分为业务类和数据实体,业务类处理业 务数据,数据实体,承载数据,基本上大多数的项目都是使用这种MVC的实现模式。StrutsMVC 框架(Web application frameworks) Struts是使用MVC勺实现模式二来实现的,也就是以控制器为核心。 Struts提供了一些组件使用MVC开发应用程序: Model: Struts没有提供model类。这个商业逻辑必须由Web应用程序的幵发者以JavaBean 或EJB的形式提供 View:Struts 提供了action form 创建form bean, 用于在controller 和view 间传输数据。此外,Struts 提供了自定义JSP标签库,辅助幵发者用JSP创建交互式的以表单为基础的应用程序,应用程序资源文件保留了一些文本常量和错误消息,可转变为其它语言,可用于JSP中Controller :Struts 提供了一个核心的控制器ActionServlet ,通过这个核心的控制器来

经典软件工程师面试题

请参加如下测试,此题是由数十家知名IT企业的人力资源管理部进行 综合分析总结出的测试题,请大家认真完成。 一共 30 道题 ,每题 1 分 ,满分 30 分 1. 如果 A=1,FAT=27,那么 FAITH=? A、44 B、42 C、41 D、40 2. 7/2 × 14/3 + 26/5=() A、1304/15 B、1274/15 C、901/15 D、1261/15 E、以上都不对 3. 如果‘CONTRIBUTE’被写作‘ETBUIRNTOC’,用这种方式写‘POPULARISE’时从左 边数第六个字母是什么? A、R B、I C、A D、L 4. 160的( )%=80的80% A、60 B、30 C、50 D、40 E、以上都不正确 5. 如果用某一编码可以把 ‘STOVE’ 表示成 ‘FNBLK’,那么用此编码可 以把 ‘VOTES’ 表示成如下哪一种? A、LBNKF B、LNBKF

C、LKNBF D、FLKBN 6. 在下列数字系列中有一个数字是错的,请找出来 40 42 49 57 74 100 137 A、100 B、74 C、57 D、49 E、42 7. Rs.6500按照多少的比率才能在5年之后达到Rs.1787.5的利息是 A、4.5 B、6.5 C、7.5 D、3.5 E、以上都不正确 8. 把医生、发烧、药物、药店按照一定的顺序排列: A、药店、药物、发烧、医生 B、发烧、医生、药店、药物 C、医生、药店、药物、发烧 D、药物、医生、药店、发烧 9. 下列5项选择中有4个可以根据一定规律组成一组,哪一个不属于他们? A、重 B、短 C、长 D、轻 E、固体 10. 下列的数字系列中在6之后并且在8之前有多少个3? 3 6 6 8 3 6 6 8 3 6 8 3 6 3 8 3 6 3 8 3 3 8 3 3 9 A、1个 B、2个 C、3个

相关主题
文本预览
相关文档 最新文档