文档库 最新最全的文档下载
当前位置:文档库 › 软件开发者面试百问

软件开发者面试百问

软件开发者面试百问
软件开发者面试百问

想雇到搞软件开发的聪明人可不容易。万一一不小心,就会搞到一堆低能大狒狒。我去年就碰到这种事了。你肯定不想这样吧。听我的,没错。在树上开站立会议门都没有。

问点有难度的问题能帮你把聪明人跟狒狒们分开。我决定把我自己整理出来的软件开发者面试百问发出来,希望能帮到你们的忙。

这个列表涵盖了软件工程知识体系中定义的大多数知识域。当然,如果你只想找出类拔萃的程序员,便只需涉及结构、算法、数据结构、测试这几个话题。如果想雇架构师,也可以只考虑需求、功能设计、技术设计这些地方。

不过不管你怎么做,都要牢记一点:

这里大多数问题的答案都没有对错之分!

你可以把我的这些问题作为引子,展开讨论。例如下面有个问题是使用静态方法或是单例的缘由。如果那个面试的就此展开长篇大论,那他很有可能是个聪明能干的家伙!如果他一脸茫然的看着你,发出这种声音,很明显这就是只狒狒了。同样,想知道一个数是不是2的乘方也有很多方法,不过要是面试的人想用mod运算符,嗯……你知道我的意思吧。(你不知道也没关系,来根香蕉?)

需求

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

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

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

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

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

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

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

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

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

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

功能设计

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

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

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

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

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

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

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

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

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

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

技术设计

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

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

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

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

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

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

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

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

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

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

程序设计

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

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

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

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

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

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

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

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

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

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

算法

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

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

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

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

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

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

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

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

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

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

数据结构

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

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

3.队列和堆栈区别是什么?

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

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

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

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

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

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

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

测试

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

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

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

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

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

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

7.测试套件、测试用例、测试计划,这三者之间的区别是什么?你怎么组织测试?

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

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

10.你去年在测试和质量保证方面学到了哪些东西?

维护

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

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

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

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

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

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

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

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

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

10.再造工程(re-engineering)和逆向工程(reverse engineering)的区别是什么?

配置管理

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

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

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

4.Tag和Branch的区别是什么?在什么情况下该使用tag,什么时候用branch?

5.怎样管理技术文档——如产品架构文档——的变化?

6.你用什么工具管理项目中所有数字信息的状态?你最喜欢哪种工具?

7.如果客户想要对一款已经发布的产品做出变动,你怎么处理?

8.版本管理和发布管理有什么差异?

9.对文本文件的变化和二进制文件的变化进行管理,这二者有什么不同?

10.同时处理多个变更请求,或是同时进行增量开发和维护,这种事情你怎么看待?

项目管理

1.范围、时间、成本,这三项中哪些是可以由客户控制的?

2.谁该对项目中所要付出的一切做出估算?谁有权设置最后期限?

3.减少交付的次数,或是减少每个每个交付中的工作量,你喜欢哪种做法?

4.你喜欢用哪种图来跟踪项目进度?

5.迭代和增量的区别在哪里?

6.试着解释一下风险管理中用到的实践。风险该如何管理?

7.你喜欢任务分解还是滚动式计划?

8.你需要哪些东西帮助你判断项目是否符合时间要求,在预算范围内运作?

9.DSDM、Prince2、Scrum,这三者之间有哪些区别?

10.如果客户想要的东西太多,你在范围和时间上怎样跟他达成一致呢?

阅读英文原文:http://www.noop.nl/2009/01/100-interview-questions-for-software-developers.html

https://www.wendangku.net/doc/2714665428.html,/cn/articles/programmer-interview

x

向我的友邻推荐小组话题:[转] 软件开发者面试百问

摘要: 想雇到搞软件开发的聪明人可不容易。万一一不小心,就会搞到一堆低能大狒狒...

推荐语:

> 修改> 删除> 置顶

2009-06-19 13:48:24 fish (夏至... ...) 1. 什么是回归测试?怎样知道新引入的变化没有给现有的功能造成破坏?

【参考答案】

由于软件修改或变更,对修改后的工作版本所有可能影响的范围进行的测试,就是回归测试。回归测试的目的是发现原来正常的功能特性出现新的问题——回归缺陷,从而确保原来正常的或符合要求的特性,不受其它区域修改的影响。回归测试,伴随着测试过程,单元测试、集成测试和系统测试中,一旦有变更或修正,都要进行相应的回归测试。

通过代码查看或代码评审,可以基本知道新引入的变化是否会给现有的功能造成影响,但不能确定,所以需要进行回归测试。

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

【参考答案】

在JAVA中,如果业务层与数据层之间有依赖关系,也就是说业务处理不单纯,这时我们一般用Mock对象来模拟所需要的数据,来进行单元测试。简单地说mock就是模型,模拟测试时需要的对象及测试数据。这类测试工具有MockObjects、Xdoclet、EasyMock、MockCreator、MockEJB、ObjcUnit、jMock等

比如,用过Struts的都知道,Struts中的action类要运行必须依靠服务器的支持,只有服务

器可以提供HttpServletRequest,HttpServletResponse对象,如果不启动服务器,那么就没有办法对action类进行单元测试,而借助mock,可以完成struts的Action的测试。

对业务层测试可以用Mock来模拟,而对数据层如何测试?有两种方法:

使用Mock对象来测试DAO。它屏蔽了具体的关系数据库,它的优点是测试代码的编写方便,可以快速运行。缺点:风险太大,对数据层测试的力度太小,屏蔽了很多与数据库相关的问题,比如:对象和数据库表之间映射,查询语句的语法是否正确。

直接在关系数据库中测试。优点:能对数据层进行完整的测试。缺点:单元测试运行速度太慢,要频繁的对数据库进行操作

还可以参考下列文章:

如何对数据源层进行单元测试

https://www.wendangku.net/doc/2714665428.html,/moxie/archive/2005/03/29/333449.aspx

https://www.wendangku.net/doc/2714665428.html,/cn/news/2008/01/wcf-di

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

【参考答案】

这就取决于使用工具的经验,而这方面的经验,开发人员更多。主要的工具有适合Java代码的Checkstyle、Findbugs、Jalopy、PMD、Parasoft Jtest、Coverity Prevent for Java;适合C++语言,有Parasoft C++Test、Coverity Prevent for C/C++

FindBugs,第1 部分: 提高代码质量

代码检测:Code Review与CheckStyle

代码优化:Jalopy

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

【参考答案】

产品部署之后,容易碰到的问题是安装配置上不对,测试环境和实际运行环境总是存在差异。其次,出现的问题,可能是系统稳定性问题、性能问题,可能由于脏数据、传输中的异常数据和大数据量等引起。

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

【参考答案】

当我们想了解测试是否充分、是否有些地方没被测试过,就需要对所有测试过的地方有所了解,也就是了解测试的覆盖程度。测试越充分,测试的覆盖程度越高,产品的质量就越能得到保证。这种程度的量化就是测试覆盖率,即测试覆盖率是用来衡量测试完成程度、或评估测试活动覆盖产品代码的一种量化的结果,评估测试工作的质量,也是产品代码质量的间接度量方法。如果用公式描述的话,可以看作“测试过程中已验证的区域或集合”和“要求被测试的总的区域或集合”的比值。

基于代码的测试覆盖评测是对被测试的程序代码语句、代码块、类、函数(方法)、路径或条件的覆盖率分析。如果应用基于代码的覆盖率分析,一般需要借助工具(如IBM Rational PureCoverage、Bullseye Coverage、开源Clover、EMMA、Cobertura和NoUnit等)来执行。

代码覆盖率工具Bullseye Coverage

使用emma 测量测试覆盖率

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

【参考答案】

这个题目本身有问题,把“功能测试”和“探索性测试”比较不合理。功能测试中包含了“按已完成的测试用例或已计划的测试大纲等进行测试”和“探索性测试”,而探索性测试一般也是为了发现功能中的问题,虽然探索性测试还会涉及安全性测试、性能测试等。

功能测试方法中包括等价类划分、边界值分析、因果图、决策表、正交试验法等,也包括错误猜测法,错误猜测法也可归为探索性测试。

探索性测试,也可以称随机测试(ad-hoc test),充分发挥测试人员最大的灵动性、创造性,进行各种猜测和试探,去发现一些相对隐藏比较深或偏僻的软件缺陷。随机(ad-hoc)测试,也可作为一种重要的测试辅助手段,以帮助测试人员尽早地熟悉产品,发现测试用例的不足,添加或改进测试用例。我的书《全程软件测试》对它们做了充分讨论。

对网站进行测试时,不仅要做好功能测试,包括功能的逐项验证、针对功能的负面测试、探索性测试等,还要进行安全性测试、性能测试、UI适用性测试等。

7. 测试套件、测试用例、测试计划,这三者之间的区别是什么?你怎么组织测试?

【参考答案】

测试用例(test case)是为了更有效地发现缺陷而设计的、可以独立地执行的最小测试单元。测试套件(test suite)是为了完成某个测试目标或任务而组织的若干个测试用例的集合。测试计划(test plan)是对测试活动的事先策划,包括确定测试范围、估算测试工作量、识别测试风险、安排资源和进度等。测试计划指导测试用例的设计和测试套件的创建,测试套件是由测试用例构成。测试计划的实施需要借助测试用例、测试套件来实现。

组织测试,简单地说就是计划测试-> 设计测试用例-> v创建测试套件-> 执行测试套件(转化为执行测试用例)-> 测试结果分析和评估-> 调整测试计划-> …… 详细参见《全程软件测试》

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

【参考答案】

冒烟测试(smoke test )这个名称的来历,大概是从电路板测试得来的。因为当电路板做好以后,首先会加电测试,如果板子没有冒烟在进行其它测试,否则就退回去。软件中的冒烟测试就是在每日构建(daily build)软件包后,对系统的基本功能进行快速的测试,以验证基本功能是否能正常运行。如果有问题,就打回开发部门;如果正常运行,说明软件包构建成功,接下来就可以进行常规测试或大规模测试。

对电子商务网站做冒烟测试,包括基本功能测试和性能测试。基本功能测试可以完成一个交易的完整过程,即从系统登录-> 商品查询-> 选择商品-> 提交订单->确认-> 付款-> 结算等。

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

【参考答案】

客户可能发现功能或界面设计和他预想的不一致、或者会发现有些功能的操作不是很方便、或者发现一些错别字等各种缺陷。针对不同的问题,有相应的一些办法,概括起来就是和客户进行充分沟通,真正理解客户的需求,和客户的理解达成一致。其次,在开发期间,还可以邀请客户参与软件设计规格说明书、测试计划、测试用例等的评审,当软件能基本正常工作时再次邀请客户从头到尾再看一遍(product walk-through)。最后,就是开发人员和测试人员做好自己的本职工作,构建高质量的软件,进行充分的测试。

10. 你去年在测试和质量保证方面学到了哪些东西?

【参考答案】通过自己遇到具体的问题,来说明。例如,某个特定的缺陷分析,使你认识到某个方面的问题,然后找到真正原因,并加以克服。或者,通过某个质量事故,增强了“质量第一”的意识,或者由于某些冲突导致项目质量问题,认识到“沟通”、“流程”或“规范”等的重要性。

当然,还有一些具体的知识或能力,如工具(Jmeter, Selenium, QTP, LoadRunner)的使用, CMM/CMMI, ISO9000等等。

> 删除

2009-06-19 13:49:52 fish (夏至... ...) 软件项目管理部分答案

1.范围、时间、成本,这三项中哪些是可以由客户控制的?

范围、时间、成本,是项目管理中常说的三角关系。任何一方改变都可能牵扯到其他两方的变动。项目管理的本质,就是在保证质量的前提下,寻求这三者之间的最佳平衡。因为客户是需求方和投资方,客户有权对这三者进行控制,当然客户主要控制范围,即提出他们的需求——项目要实现的功能特性,其次,客户也非常关心能交付的时间和所付出的成本。在满足客户的需求情况下,可以在时间、成本上和客户进行交流、谈判。从项目管理的角度看,最好固定其中一项,其他两项可以根据实际状况来调节保证项目质量。

2.谁该对项目中所要付出的一切做出估算?谁有权设置最后期限?

项目成功是团队协作的结果。在对项目进行估算的时候,需要由参与项目各个环节的人进行符合实际的估算,最后汇总起来进行综合分析计算,获得项目总的估算结果。

项目的最后期限设置除了客户定死最后交付时间,其他的情况都是根据项目的进度估算结果而进行符合实际的计划得出的。

3. 减少交付的次数,或是减少每个每个交付中的工作量,你喜欢哪种做法?

根据项目的类型和项目进行中的实际情况来决定,如果项目是规模比较大,时间长的,那么就应增加交付次数或者减少每个每个交付中的工作量,以便及时考察项目进展,保证项目进度。例如,一个项目按计划进行到第一个里程碑发现项目进度明显落后,而下一个检查点(也就是交付的工作量)距离还很长管理层需要及时了解其进展,那么交付的次数的就要根据现在的时间状况来增加。反过来,如果这个项目的进度非常好,甚至超前,而下一个检查点(也就是交付的工作量)距离还很短,我们就可以减少交付次数。

过去人们在传统的软件项目中,开发周期比较长,往往减少交付的次数,更好地控制质量;而现在,有一部分比较倾向于敏捷方法,喜欢减少每个每个交付中的工作量,更好地、更及时地满足用户的需求。在互联网上的web应用,“减少每个每个交付中的工作量”是一个比较好的策略。

4.你喜欢用哪种图来跟踪项目进度?

要根据项目的特点来决定,复杂、规模大的可能要借助甘特图和网络图来分析和跟踪进度。简单、规模小的项目根据进度报告百分比和表格跟踪就可以了。

5.迭代和增量的区别在哪里?

软件开发不是一躇而就,其过程犹如雕琢一件工艺品,由无形到有形、由粗到细,很难一次

就能开发出功能完善、强大的一个版本,而往往是分阶段进行,一个版本接一个版本的发布出去。软件开发分阶段可以通过两种模型来描述,即增量模型和迭代模型。

增量模型描述软件产品的不同阶段是按产品所具有的功能进行划分,先开发主要功能或用户最需要功能,然后,随着时间推进,不断增加新的辅助功能或次要功能,最终开发出一个强大的、功能完善的、高质量的、稳定的产品。

迭代模型描述软件产品的不同阶段是按产品深度或细化的程度来划分,先将产品的整个框架都建立起来,在系统的初期,已经具有用户所需求的全部功能。然后,随着时间推进,不断细化已有的功能或完善已有功能,这个过程好像是一个迭代的过程。最终的目标是一致的,也是为了实现一个强大的、功能完善的、高质量的、稳定的产品。

6. 试着解释一下风险管理中用到的实践。风险该如何管理?

比如十大风险清单:就是在项目进行中,不时地更新和处理项目当前风险最高的前十项风险。以保证项目不脱离主轨道。因为项目中的风险大大小小会很多。十大风险清单就是抓住重要的风险及时处理,而又关系的小风险可能也就随之消失。

风险管理就是通过风险的识别、预测、估算和衡量、选择有效的方法和手段,对风险进行预防、避免、降低或者转移的管理过程。

7. 你喜欢任务分解还是滚动式计划?

根据项目特点来定,一般会选用任务分解的计划,责任清楚,可控性更强。滚动式计划的灵活性比较强,适应性比较好,但容易引起大家对计划不够重视,计划能力降低,或者可控性会差些。有时会将这两种方法结合起来使用。

8. 你需要哪些东西帮助你判断项目是否符合时间要求,在预算范围内运作?

? 前提是这个项目的进度计划和成本计划是符合项目实际情况并不断随着项目的时间发展而滚动更新的。

? 确保收集的进度和花费的成本就真实可靠的。

? 在此时项目的范围没有影响到时间和成本的规划。

那么就可以根据项目时间与计划的内容进行对比来判断项目符合时间要求,在预算范围内运作。常用的方法有基线对比法和挣值法。

9. DSDM、Prince2、Scrum,这三者之间有哪些区别?

? 动态系统开发方法(Dynamic System Development method,DSDM)是众多敏捷开发方法中的一种,它倡导以业务为核心,快速而有效地进行系统开发。

? PRINCE2(PRojects IN Controlled Environments 2)为项目管理提供了一种结构化的方法,这种方法最早是在1989年由英国政府计算机和电信中心(CCTA)开发的,作为英国政府IT项目管理的标准。PRINCE2如今日益流行,是英国项目管理的标准,它为管理项目提供清晰界定工作框架,介绍如何协调项目中的人和活动、如何设计和监督项目以及在项目发生变更的情况下如何调整的流程。每一个流程都详细标出关键的输入、输出和具体目标及要执行的活动,这为计划偏差提供了自发的控制。这种方法把项目划分为多个管理阶段,保证让所有资源得到有效的控制。依靠严格的监控,项目在控制和组织的方式下得到执行。详细参考:https://www.wendangku.net/doc/2714665428.html,/wiki/PRINCE2

? Scrum是一种迭代式增量软件开发过程,通常用于敏捷软件开发。Scrum在英语的意思是橄榄球里的争球。Scrum是一个包括了一系列实践和预定义角色的过程骨架,其主要角色包括

同项目经理类似的Scrum主管角色——负责维护过程和任务,产品负责人代表利益所有者,开发团队包括了所有开发人员。在每一次冲刺(一般为15到30天周期),开发团队创建可用的、可随时推出的软件一个增量(小版本)。每一个冲刺所要实现的特性来自产品订单(product backlog),产品订单是按照优先级排列的工作需求。在冲刺的过程中,没有人能够变更冲刺订单(sprint backlog),这意味着在一个冲刺中需求是被冻结的。

管理Scrum过程有很多实施方法,从白板上的即时贴到软件包。Scrum最大的好处是它非常容易学习,而且应用Scrum不需要太多的投入。详见:https://www.wendangku.net/doc/2714665428.html,/w/index.php?title=Scrum&variant=zh-cn

10.如果客户想要的东西太多,你在范围和时间上怎样跟他达成一致呢?

首先要向客户说明,如果在某个时间内去做不可能完成的工作,其结果必然是质量得不到保证,或者所化的成本过大。应该没有客户想做赔本的生意,每个客户都会重视质量,而不愿意损害自己的利益。

然后,和客户一起,按需求重要性、紧急性等需求进行分类,分为不同的等级,然后从优先级高的需求开始,来估算工作量,设定几个不同的开发周期或交付时间,从而由用户作出选择,例如:

(1) 只做优先级最高的那类需求,开发周期需要3个月;

(2) 做优先级最高和优先级高的那两类需求,开发周期需要7个月;

(3) 做优先级最高、高和中等的共3类需求,开发周期需要12个月;

(4) 所有需求都实现,开发周期需要18个月

用户可能选(2), 先完成两类需求,签订合同。等这合同履行很好之后,再继续下一步的开发。

平安银行软件开发笔试题

平安银行软件开发笔试题

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)

软件开发人员面试七大有效方法

软件开发人员面试七大有效方法 现如今大多数的求职者都有自己的一套面试模式,但是成功的几率自己却很难把握。大多数的面试目的是面试官为了找到那种能一起工作的人,当然,空缺的岗位有可能是在其他团队,但是面试官还是会按照自己的评价标准来择取。如果你能够理解面试官的问题,按照他的方式回答,那么任何面试都将不是问题。本文我将给大家介绍一些面试技巧,希望能帮助面试者发挥无限的潜能,实现梦想。 任何面试都要做足准备,这样才不至于在面试过程中手忙脚乱,胡言乱语,比如你是做计算机软件开发方面的,首先面试前你得好好复习下你的专业知识,这些资料知识可能并不是你需要的什么新鲜的知识,但是能让你有效地扩大和组织已经知道的知识和内容。而有效的扩大和组织的内容,有助于面试官对你另眼相看。 一坦诚很重要 面试,其实是一个人与人交流沟通的平台。能够参加面试,尤其是大公司或者知名企业的面试,在某种程度上来说,已经代表了你并不简单。北大青鸟丰台刘老师认为,自信地回答问题,不要让自己太紧张,如果你不知道,那就坦诚地说“我不知道,但是我认为……”。知之为知之,不知为不知,不要理直气壮地讲述一个错误的答案,这会让面试官怀疑你前面那些正确的答案搞不好也是胡诌的,功亏一篑。虽然这句话也不一定是金钥匙,但是却能显示你的思考能力和扩展能力。对面试官提出的所有问题都要做一番努力,不要一句“我不知道”就轻易打发。 二做好写代码的准备 软件开发人员参加面试的时候,一般情况下是要测验代码的,如果要你写代码,那就要注意了,千万别忘记遵循基本规则。我常听那些应聘人员一脸茫然地说“完了,大脑一片空白,我忘记语法了……”,有哪些基本规则,原来都是一些基本的像循环、if条件、主方法、异常,这些要是忘记了,太不应该了。甚至一些粗心造成的如标点符号忘写、写错造成失误都有。(关注微信公众号:bdqnft 领取学习礼包)看到这里,如果你一时间也没法想起这些,不妨复习一下。 三做好项目解释的准备 软件工程师在写代码之前就应该对业务需求了如指掌。所以,你得能解释项目中一一对应的流程分别是什么。写个三四行代码就深层次解释一下,然后听听非团队人员的意见和建议。当局者迷,旁观者清。看看和客户交流的内部营销记录,找找线索。可以先找个朋友练

一套比较完整的软件测试人员面试题

人力资源问题 你为什么选择软件测试行业 因为之前有了解软件测试这个行业,觉得他的发展前景很好。也对 根据你以前的工作经验描述一下软件开发、测试过程,由那些角色负责,你做什么 要有架构师、开发经理、测试经理、程序员、测试员 我在里面主要是负责所分到的模块执行测试用例。 结合你以前的学习和工作经验,你认为如何做好测试。 根据我以前的工作经验,我认为做好工作首先要有一个好的沟通,只有沟通无障碍了,才会有好的协作,才会有跟好的效率,再一个就是技术一定要过关,做测试要有足够的耐心,和一个良好的工作习惯,不懂的就问,实时与同事沟通这样的话才能做好测试工作。 你觉得测试最重要的是什么 尽可能的找出软件的错误 怎样看待加班问题 加班的话我没有太多的意见,但是我还是觉得如果能够合理的安排时间的话,不会有太多时候会加班的。如果一个很有个性的程序员认为自己的BUG不是BUG,怎么解决? 首先我要确定我所提的在我认为是不是bug,如果我认为是的话我会在他面前重现这个bug和他讲这是个bug,和他沟通,或者我会找到我的直系领导让他解决。 为什么在团队中要有测试 因为软件有错误,如果没有专业的测试人员很难发现软件的一些错误。 在测试时代学习自己最大的收获是什么? 在测试时代我除了学习了测试的知识外,还看到了老师们对待测试的一种态度,明白了做任何工作都要有沟通,做测试的也要有很好的沟通才可以做好。知道自己在项目组中的位置,和开发的关系。 你对未来的规划 我想在工作中慢慢的积累经验,使自己强大起来,能够担任更重要的职务。 自己优势及缺点 我的优点是有足够的耐心对待每一件事情,善于观察事物,承受压力的能力很强。缺点可能就是我不是很爱说话,习惯做不习惯说,但是和人沟通还是没有问题的。 你为什么选择测试时代不选择51testing 因为相对比来看测试时代价钱相对公道,师资也不错,还有一个原因就是在网上查了一下测试时代的口碑不错,也是网放心过来的原因。 13.请谈谈您对测试工作的理解 我认为测试工作是找出软件产品的错误, 14.你认为测试人员需要具备哪些素质? 我认为做测试的应该要有一定的协调能力,因为测试人员要经常与开发接触处理一些问题,如果处理不好的话会引起一些冲突这样的话工作上就会做不好。还有测试人员要有一定的耐心,有的时候做的测试很枯燥乏味的。除了要有耐心之外还要细心,不放过每一个可能的错误。 15.你为什么能够做测试这一行。 虽然说我的测试技术还不是很纯熟,但是我觉得我还是可以胜任软件测试这个工作的,因为做软件测试不仅是要求技术好,还要有一定的沟通能力,耐心、细心等外在的因素。综合起来看我认为我是胜任这个工作的。 1测试的目的是什么? 测试的目的是找出软件产品中的错误,是软件尽可能的符合用户的要求。

软件开发工程师招聘试题

专业技术资料 附录一 附录一【软件开发工程师招聘试题一】 考试时间: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.wendangku.net/doc/2714665428.html,esPerGallon=2; } System.out.println("mpg:"+https://www.wendangku.net/doc/2714665428.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篇Self introduction of software development interview 编订:JinTai College

软件开发面试自我介绍的范文6篇 前言:自我介绍是向别人展示你自己,直接关系到你给别人的第一印象的好坏及以后交往的顺利与否,也是认识自我的手段。自我介绍是每个人都必然要经历的一件事情,日常学习、工作、生活中与陌生人建立关系、打开局面的一种非常重要的手段,通过自我介绍获得到对方的认识甚至认可,是一种非常重要的技巧。本文档根据自我介绍内容要求和特点展开说明,具有实践指导意义,便于学习和使用,本文下载后内容可随意调整修改及打印。 本文简要目录如下:【下载该文档后使用Word打开,按住键盘Ctrl键且鼠标单击目录内容即可跳转到对应篇章】 1、篇章1:软件开发面试自我介绍的范文 2、篇章2:软件开发面试自我介绍的范文 3、篇章3:软件开发面试自我介绍的范文 4、篇章4:软件开发面试自我介绍范文 5、篇章5:软件开发面试自我介绍范文 6、篇章6:软件开发面试自我介绍范文 软件编程是现在it行业很火的的职业,尽管这样的工作比较伤脑力,但报酬却还是非常不错的,那么你知道软件开发

的面试要怎么自我介绍吗?今天小泰和你分享软件开发面试自 我介绍的范文,欢迎阅读。 篇章1:软件开发面试自我介绍的范文 尊敬的领导: 您好! 我是xxx大学(原xxx大学)冶金科学与工程学院20xx 年轻金属冶金专业应届毕业生。在此临近毕业之际,我希望能得到贵单位的赏识与栽培。为了发挥自己的才能,特向贵单位自荐。自我介绍 xxx大学师生中一直流传着这样一句话“今天你以母校为荣,明天母校以你为荣”,从入学以来,我一直把它铭记在心,立志要在大学四年里全面发展自己,从适应社会发展的角度提高个人素质。将来真正能在本职工作上做出成绩,为母校争光。 我以“严”字当头,在学习上勤奋严谨,对课堂知识不 懂就问,力求深刻理解。在掌握了本专业知识的基础上,不忘拓展自己的知识面,特别是在计算机应用方面,及时阅读相关书籍,并购置了个人电脑,掌握了Visual Basic 程序设计方 法和 PHP

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

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

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

华为软件测试工程师面试题

华为软件测试工程师面试题 2010-05-27 10:25 Q1:请你分别划划OSI的七层网络结构图,和TCP/IP的五层结构图? 答:七层结构从上到下依次是: 7 应用层;6 表示层;5 会话层;4 传输层;3 网络层;2 数据链路层;1 物理层 五层结构是 5 应用层;4 运输层;3 网络层; 2 链路层;1 物理层。 Q2:请你详细的解释一下IP协议的定义,在哪个层上面,主要有什么作用?TCP与UDP 呢? 答:UDP,TCP在传输层,IP在网络层, TCP/IP是英文Transmission Control Protocol/Internet Protocol的缩写,意思是"传输控制协议/网际协议"。TCP/IP协议组之所以流行,部分原因是因为它可以用在各种各样的信道和底层协议(例如T1和X.25、以太网以及RS-232串行接口)之上。确切地说,TCP/IP协议是一组包括TCP协议和IP协议,UDP(User Datagram Protocol)协议、ICMP(Internet Control Message Protocol)协议和其他一些协议的协议组。TCP/IP协议并不完全符合OSI的七层参考模型。传统的开放式系统互连参考模型,是一种通信协议的7层抽象的参考模型,其中每一层执行某一特定任务。该模型的目的是使各种硬件在相同的层次上相互通信。这7层是:物理层、数据链路层、网路层、传输层、话路层、表示层和应用层。而TCP/IP通讯协议采用了4层的层级结构,每一层都呼叫它的下一层所提供的网络来完成自己的需求。这4层分别为:应用层:应用程序间沟通的层,如简单电子邮件传输(SMTP)、文件传输协议(FTP)、网络远程访问协议(Telnet)等。 传输层:在此层中,它提供了节点间的数据传送服务,如传输控制协议(TCP)、用户数据报协议(UDP)等,TCP和UDP给数据包加入传输数据并把它传输到 Q3:请问交换机和路由器分别的实现原理是什么?分别在哪个层次上面实现的? 一般意义上说交换机是工作在数据链路层。但随着科技的发展,现在有了三层交换机,三层交换机已经扩展到了网络层。也就是说:它等于“数据链路层+ 部分网络层”。交换机中传的是帧。通过存储转发来实现的。 路由器是工作在网络层。路由器中传的是IP数据报。主要是选址和路由。 Q4:请问C++的类和C里面的STRUCT有什么区别? 答:除关键字不同外(class,struct)的唯一区别是, 结构在默认情况下的成员是公共(public)的, 而类在默认情况下的成员是私有(private)的。 在C++中,结构是特殊的类。 class是从struct发展而来的。之所以将struct和class都保留,是因为: 1、提出class是为了强调一种概念。 2、保留struct是为了照顾到大多数人的习惯。 struct和class是有区别的。 struct保证成员按照声明顺序在内存中存储。class不保证等等 而它们都可以继承,实现多态等。但也有少许区别。比如:

软件工程师面试题含答案

、你对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 ,通过这个核心的控制器来

各大公司软件测试职位面试题

各大公司软件测试职位面试题 软通动力面试 1.白箱测试和黑箱测试是什么?什么是回归测试? 白盒测试是测试人员要了解程序结构和处理过程按照程序内部逻辑测试程序检查程序中的每条通路是否按照预定要求正确工作它主要的针对被测程序的源代码测试着可以完全不考虑程序的功能. 白盒测试流程: 源程序-->分析程序内部逻辑结构-->流程图-->制定测试用例-->被测程序-->执行路径-->覆盖情况分析 黑盒测试主要是根据功能需求来测试程序是否按照预期工作,是要从用户的角度分析.尽量发现代码所表现的外部行为的错误.黑盒测试应该是由测试团队来完成的.根据某个给定的输入,应该能够理解并详细说明程序的预期输出. 黑盒测试流程:功能需求-->产生测试用例-->被测程序-->输出实际结果-->与预期结果比较-->分析功能是否实现. 回归测试:在对软件进行修正后进行的有选择的重新测试过程.一般要重复已用的测试用例.目的是检验软件在更改后所引起的错误,验证软件在修改后未引起不希望的有害效果 2.单元测试、集成测试、系统测试的侧重点是什么? 单元测试的重点是系统的模块,包括子程序的正确性验证等。 集成测试的重点是模块间的衔接以及参数的传递等。 系统测试的重点是整个系统的运行以及与其他软件的兼容性。 3.设计用例的方法、依据有那些? 白盒测试用例设计有如下方法:基本路径测试\等价类划分\边界值分析\覆盖测试\循环测试\数据流测试\程序插桩测试\变异测试. 这时候依据就是详细设计说明书及其代码结构 黑盒测试用例设计方法:基于用户需求的测试\功能图分析方法\等价类划分方法\边界值分析方法\错误推测方法\因果图方法\判定表驱动分析方法\正交实验设计方法. 依据是用户需求规格说明书,详细设计说明书 不同阶段测试用例的设计主要是根据情况选取以上两种测试方法中的一些. 4.集成测试通常都有那些策略? 答题建议:大致说四点即可,当然说全更好。集成测试有十种策略:(1)大爆炸集成(2)自顶向下集成(3)自底向上集成(4)三明治集成(5)分层集成(6)基干集成(7)基于功能的集成(8)基于消息的集成(9)基于风险的集成(10)基于进度的集成. 5.一个缺陷测试报告的组成 缺陷的标题,缺陷的基本信息,复现缺陷的操作步骤,缺陷的实际结果描述,期望的正确结果描述,注释文字和截取的缺陷图象。 6、一个测试工程师应具备那些素质和技能? 答题建议:一个好的测试工程师,不仅要基础扎实,对自身的性格、责任心都有非常高的要求。具体如下:(1)掌握基本的测试基础理论(2)本着找出软件存在的问题的态度进行测试,即客观吧,不要以挑刺形象出现(3)可熟练阅读需求规格说明书等文档(4)以用户的观点看待问题(5)有着强烈的质量意识(6)细心和责任心(7)良好的有效的沟通方式(与开发人员及客户)(8)具有以往的测试经验(9)能够及时准确地判断出高危险区在何处.

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

(招聘面试)软件开发人员招聘笔试试题

(招聘面试)软件开发人员招聘笔试试题

2002年度软件开发人员招聘笔试试题应聘者资料:

试题壹:基础知识 1、从供选择的答案中,选出应填入下面叙述中_?_内的最确切的解答,把相应编号写于答卷的对应栏内。 假设某计算机具有1M字节的内存(目前使用的计算机往往具有64M字节之上的内存),且按字节编址,为了能存取该内存各地址的内容,其地址寄存器至少需要二进制_A_位。为使4字节组成的字能从存储器中壹次读出,要求存放于存储器中的字边界对齐,壹个字的地址码应_B_。若存储周期为200NS,且每个周期可访问4个字节,则该存储器带宽为_C_BIT/S。假如程序员可用的存储空间为4M字节,则程序员所用的地址为_D_,而真正访问内存的地址称为_E_。 供选择的答案: A:①10②16③20④32 B:①最低俩位为00②最低俩位为10③最高俩位为00④最高俩位为10 C:①20M②40M③80M④160M D:①有效地址②程序地址③逻辑地址④物理地址 E:①指令②物理地址③内存地址④数据地址 2、从供选择的答案中。选出应填入下面叙述中_?_内的最确切的解答,把相应编号写于答卷的对应栏内。 给定结点的关键字序列(F、B、J、G、E、A、I、D、C、H),对它按字母的字典顺序进行排列,采用不同方法,其最终结果相同。但中间结果是不同的。 Shell排序的第壹趟扫描(步长为5)结果应为_A_。 冒泡排序(大数下沉)的第壹趟起泡的效果是_B_3. 快速排序的第壹趟结果是_C_。

二路归且排序的第壹趟结局是_D_。 供选择的答案 A:①(B、F、G、J、A、D、I、E、H、C) ②(B、F、G、J、A、E、D、I、C、H) ③(A、B、D、C、E、F、I、J、G、H) ④(C、B、D、A、E、F、I、G、J、H) B:①(A、B、D、C、F、E、I、J、H、G) ②(A、B、D、C、E、F、I、H、G、J) ③(B、F、G、E、A、I、D、C、H、J) ④(B、F、G、J、A、E、D、I、C、H) C:①(C、B、D、A、F、E、I、J、G、H) ②(C、B、D、A、E、F、I、G、J、H) ③(B、A、D、E、F、G、I、J、H、C) ④(B、C、D、A、E、F、I、J、G、H) D:①(B、F、G、J、A、E、D、I、G、H) ②(B、A、D、E、F、G、I、J、H、C) ③(A、B、D、C、E、F、I、J、G、H) ④(A、B、D、C、F、E、J、I、H、C) 3、从供选择的答案中,选出应填入下面叙述中_?_内的最确切的解答.把相应编号写于答卷的对应栏内。 进程是操作系统中的壹个重要概念。进程是壹个具有壹定独立功能的程序于某个数据集合上的壹次_A2_。

软件开发笔试题

2002年度软件开发人员招聘笔试试题 试题一:基础知识 1、从供选择的答案中,选出应填入下面叙述中_?_内的最确切的解答,把相应编号写在答卷的对应栏内。 假设某计算机具有1M 字节的内存(目前使用的计算机往往具有64M字节以上的内存),并按字节编址,为了能存取该内存各地址的内容,其地址寄存器至少需要二进制_A_位。为使4字节组成的字能从存储器中一次读出,要求存放在存储器中的字边界对齐,一个字的地址码应_B_。若存储周期为200NS,且每个周期可访问4个字节,则该存储器带宽为_C_BIT/S。假如程序员可用的存储空间为4M字节,则程序员所用的地址为_D_,而真正访问内存的地址称为_E_。 供选择的答案: A:①10 ②16 ③20 ④32 B:①最低两位为00 ②最低两位为10 ③最高两位为00 ④最高两位为10 C:①20M ②40M ③80M ④160M D:①有效地址②程序地址③逻辑地址④物理地址 E:①指令②物理地址③内存地址④数据地址 2、从供选择的答案中。选出应填入下面叙述中_?_内的最确切的解答,把相应编号写在答卷的对应栏内。 给定结点的关键字序列(F、B、J、G、E、A、I、D、C、H),对它按字母的字典顺序进行排列,采用不同方法,其最终结果相同。但中间结果是不同的。 Shell排序的第一趟扫描(步长为5)结果应为_A_。 冒泡排序(大数下沉)的第一趟起泡的效果是_B_3. 快速排序的第一趟结果是_C_。 二路归并排序的第一趟结局是_D_。 供选择的答案 A:①(B、F、G、J、A、D、I、E、H、C) ②(B、F、G、J、A、E、D、I、C、H) ③(A、B、D、C、E、F、I、J、G、H) ④(C、B、D、A、E、F、I、G、J、H) B:①(A、B、D、C、F、E、I、J、H、G) ②(A、B、D、C、E、F、I、H、G、J) ③(B、F、G、E、A、I、D、C、H、J) ④(B、F、G、J、A、E、D、I、C、H) C:①(C、B、D、A、F、E、I、J、G、H) ②(C、B、D、A、E、F、I、G、J、H) ③(B、A、D、E、F、G、I、J、H、C) ④(B、C、D、A、E、F、I、J、G、H) D:①(B、F、G、J、A、E、D、I、G、H) ②(B、A、D、E、F、G、I、J、H、C) ③(A、B、D、C、E、F、I、J、G、H) ④(A、B、D、C、F、E、J、I、H、C)

软件测试工程师笔试题

一、判断题 1.软件测试就是为了验证软件功能实现的是否正确,是否完成既定目标的活动,所以软件测试在软件工程的后期才开始具体的工作。(?) 分析:软件测试人员应在需求阶段就加入到开发过程中。因为软件的质量问题会随着软件开发周期的不断展开而不断放大的,而更正质量问题的成本也是不断放大的,也就是说在需求阶段出现的小问题,到开发完成后缺陷可能成几何倍数放大,而修改所需要的成本也会不断的放大,如果测试工程师能够尽早的加入其中的话可以尽早的找出问题,及时发现,避免问题最后放大到不可收拾。 2.发现错误多的模块,残留在模块中的错误也多。(?) 分析:开发人员能力参差不齐,当发现某模块bug数越多,修改的bug越多,则引入新的bug就会越多,那么这些新的bug发现的难度要比修改前发现bug要大的多,其隐藏未发现的bug数量就越多,那么相应的模块质量也就越差。代码复用也可能造成该模块的bug比较多。 3.测试人员在测试过程中发现一处问题,如果影响不大,而自己又可以修改,应立即将此问题正确修改,以加快、提高开发的进程。(?) 分析:正确流程应提交错误缺陷,此时开发组人员会有记录,并修改此问题。如果测试人员自己修改,会导致开发人员无记录,容易出现冗余系统版本,并不清楚哪个为最终版本。 4.单元测试通常应该先进行“人工走查”,再以白盒法为主,辅以黑盒法进行动态测试。(?) 5.功能测试是系统测试的主要内容,检查系统的功能、性能是否与需求规格说明相同。(?) 6.软件质量管理即QM是由QA和QC构成,软件测试属于QC的核心工作内容。(?) 补充:
QA(QualityAssurance)品质保证;
QC(QualityConterller)品质控制员 7.软件测试只能发现错误,但不能保证测试后的软件没有错误。(?) 8.软件就是程序。(?) 概念:软件是计算机程序,程序所用的数据以及相关文档资料的结合。软件又分为系统软件和应用软件两大类。 9.测试只要做到语句覆盖和分支覆盖,就可以发现程序中的所有错误。(?) 分析:白盒测试用例设计6种覆盖方法: a.语句覆盖 b.判定覆盖 c.条件覆盖 d.判定/条件覆盖 e.组合覆盖 f.路径覆盖 软件测试的目的是发现软件中的错误,但不能保证软件没有错误。 10.I18N测试是指对产品做出具有国际性的规划,而L10N测试则是指软件做出符合本地的工作。(?)

软件工程师面试问题总结归纳及答案

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

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

软件测试工程师面试题汇总(华为篇)

软件测试工程师面试题汇总(华为篇) 1、怎么来设计测试方案 根据测试需求(包括功能需求和非功能性需求),识别测试要点,识别测试环境要求,安排测试轮次,根据项目计划和开发计划做整体的测试安排。 被测试的特性:通过对需求规格说明书进行分析,列出本次测试需要进行测试的各部分特性(如要测试的功能需求、性能需求、安全性需求等等)。 不被测试的特性:由于资源、进度等方面原因,本次测试不列入测试范围的特性。 测试组网图:进行本次系统测试所需要的软硬件设备、配置数据及相互间的逻辑、物理连接。今后测试执行时需要依据这个组网图来进行环境的搭建。 2、如果给你一个B/S系统你怎么来进行测试 此题答案还可用于回答测试流程,测试流程题亦可参考15题。 阅读系统需求,充分理解需求,记录问题,并与项目需求人员充分沟通。 编写测试需求,包括系统功能和非功能测试要点、罗列测试类型、测试进度、质量要求等。 制定测试计划,包括熟悉测试业务、设计测试用例、执行测试用例、进行测试小结、编写测试报告,任务颗粒度一般应小于5人天 编写测试用例,根据测试方案设计用例,即便没有明确的性能和安全测试要求,也应识别进行此两项测试。 执行软件测试。 进行测试小结,如果测试持续时间较长,每个版本间隙总结本轮测试。 编写测试报告,总结测试过程,汇总度量数据。 3、怎么进行工作流的测试 把握需求,找准结点,理清流程,画出流转图,弄清节点间的数据流转,设计测试用例的时候必须覆盖所有可能的流程。 工作流: 如果问到有没有做过,根据对工作流的了解情况回答,如果比较了解,可以把参与的某个项目中说上一些有工作流的,如果不是很了解就说没有做过,但是学习过相关知识。 4、做性能测试的时候都需要关注哪些参数 并发访问量,服务器响应时间(最小、平均、最大) 并发性能测试的过程是一个负载测试和压力测试的过程,即逐渐增加负载,直到系统的瓶颈或者不能接收的性能点,通过综合分析交易执行指标和资源监控指标来确定系统并发性能的过程。 负载测试(Load Testing)是确定在各种工作负载下系统的性能,目标是测试当负载逐渐增加时,系统组成部分的相应输出项,例如通过量、响应时间、CPU负载、内存使用等来决定系统的性能。 负载测试是一个分析软件应用程序和支撑架构、模拟真实环境的使用,从而来确定能够接收的性能过程。压力测试(Stress Testing)是通过确定一个系统的瓶颈或者不能接收的性能点,来获得系统能提供的最大服务级别的测试。 疲劳测试是采用系统稳定运行情况下能够支持的最大并发用户数,持续执行一段时间业务,通过综合分析交易执行指标和资源监控指标来确定系统处理最大工作量强度性能的过程。疲劳强度测试可以采用工具自动化的方式进行测试,也可以手工编写程序测试,其中后者占的比例较大。 一般情况下以服务器能够正常稳定响应请求的最大并发用户数进行一定时间的疲劳测试,获取交易执行指标数据和系统资源监控数据。如出现错误导致测试不能成功执行,则及时调整测试指标,例如降低用户数、缩短测试周期等。还有一种情况的疲劳测试是对当前系统性能的评估,用系统正常业务情况下并发用户数为基础,进行一定时间的疲劳测试。 大数据量测试可以分为两种类型:针对某些系统存储、传输、统计、查询等业务进行大数据量的独立数据量测试;与压力性能测试、负载性能测试、疲劳性能测试相结合的综合数据量测试方案。大数据量测试的关键是测试数据的准备,可以依靠工具准备测试数据。 5、客户没给性能指数,怎么开展性能测试 如果客户没有提出明确的性能指标,可以按照惯例和经验设置,需要和项目经理协商,一般由项目经理确认,质量保证负责给出建议。 举例说一个Server端程序,要求峰值时CPU和MEM消耗在75%以下,而一个页面的访问响应时间一般认为

软件开发经典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等等。 重构代码每个程序员都需要有最基本的能力去重构目前已有的代码,使代码达到最优但却不能影响任何的已有的功能。有一本书叫《软件的重构》,每个程序员都应该读一下。 自动化编译程序员需要使用一个脚本,其能自动化编程所有的工程和代码,这样,整个开发团队可以不停地集成代码,自动化测试,自动化部署,以及使用一些工具进行静态代码分析或是自动化测试。

如何回答常见的软件测试面试问答

如何回答常见的软件测试面试问答 一说起软件测试面试问答,就自然而然想起可亲可敬的面试官,就少不了要回答面试官各种或正常或奇葩的提问。特别是对于很多平时对着电脑多过于对人的软件测试程序员来说,面对面试官接二连三的问题,有的时候也会手忙脚乱。那么,以下就让千锋软件测试的就业老师好好讲解一些常见的软件测试面试题!希望对即将面试的软件测试员们有所帮助! 软件测试面试问答1.开发与测试的关系 开发和测试是一个整体,也可以说测试驱动着开发,开发配合着测试,相辅相成的,在一个完整的项目组中缺一不可。 软件测试面试问答2.测试总结报告包括哪些项

测试用例的通过数,测试用例的未通过数,以及测试用例的通过率,未通过的功能都集中在哪几个功能模块,根据测试经验以及测试结果进行一个缺陷的分析和建议。 软件测试面试问答3.测试用例包括哪些项 产品名称、功能模块、用例的编号、编写人、被测功能的简述,测试的预置条件,测试步骤,预期结果,实际结果。 软件测试面试问答4.缺陷处理流程 首先,将缺陷的详细信息录入缺陷管理系统,并分配给对应的开发人员。其次,如果遇到一些难以发现的缺陷,在开发人员修正过程中配合开发人员进行Bug的再现。更重要的是,开发人员修正Bug后,会在缺陷管理系统中将修正后的Bug状态更改,通常为Fixed状态。 Finally,新版本发布后,测试人员会将bug状态更改为Fixed的Bug进行回归测试。如果测试通过,则将该Bug关闭,如果是未通过,则将该Bug从Fixed更改为Reopen状态,继续让开发人员来修正,并等待下一个新版本发布后的二次回归测试。 软件测试面试问答5.缺陷报告包括哪些项 包括:编写人、被测系统的版本号、测试环境、预期结果、实际结果、对于实际结果如有必要附上截图、测试用例数、测试用例通过数,测试用例的通过率、对缺陷的一个分析汇总。

相关文档
相关文档 最新文档