java面试技巧

自我介绍

1.你的从业时间          你从事相关的工作有多长了

2.你的教育背景          你是否受过良好的教育

3.你的工作经验          你是否有过具有一定的工作经验

4.你的项目经验          你是否有过丰富的项目经验

5.你与众不同之处      你是怎么进行项目开发的,有什么特别之处,或者你在哪些项目中取得过哪些成功,或者有哪些自己觉得骄傲的地方

 如:在项目中主要负责需求分析,架构设计和框架类代码实现。

6.你最擅长的地方      你最擅长的技术是什么?

       如:在项目开发中善于与客户沟通,充分理解客户需求。

自我评价

性格

 

优点

办事认真,待人热情,彬彬有礼,

坚持

勤奋

缺点

回答范例:

    呵呵,这个问题好难回答啊!我想想……(亲和力表现,也缓解了自己的紧张情绪)

    我的缺点是,比较执着,比如在技术方面比较爱钻研,有的时候会为一个技术问题加班到深夜。还有就是,工作比较按部就班,总是按照主管的要求完成任务。另外的缺点是,总在自己的工作范围内有创新意识,并没有扩展给其他同事。这些问题我想我可以进入公司以后以最短的时间来解决,我的学习能力很强,我相信可以很快融入公司的企业文化,进入工作状态。

    嗯……,我想就这些吧。

项目介绍

1.简述项目谁使用,作用,实现功能;

2.详细的列出项目实现的功能模块

3.说出项目实现的技术和架构,能说出项目的不寻常之处,比如采用了某项新技术,采用了良好的架框等

4.能让别人感觉出项目的规模

5.自己在项目中的角色,责任。

6. 自己负责的模块和使用的技术。

7. 自己对整个项目的贡献和感受

怎么对这个项目进行开发的?

分析:这个问题是考核你是否熟悉软件开发的流程,同时也是考核你的项目经验,你的专业素养,从这里可以判断出你参与过多少项目,可以判断你对软件工程的理解和熟悉程度。这个问题是十分关键的,你需要准备的知识点有:软件项目的生命周期、软件项目的开发模型、面向对象的分析和设计、软件质量保证等。

 

      软件项目的生命周期:

 

              项目计划

 

              需求分析

 

              设计(概要设计和详细设计)

 

              编码

 

              测试

 

              发布

 

              维护

 

      项目计划阶段:走访客户,进行交流沟通,获得客户原始需求。

 

对客户的需求和市场等进行调研,分析,编写可行性分析报告。

 

通过不断的与客户沟通,找客户不同环节的用户进行交流来获取需求。召开评审会议,报告可行性分析,报告用户原始需求,报告项目远景规化。

 

      需求分析阶段:

 

              在客户原始需求的基础上不断与客户沟通,充分的熟悉和深入客户业务,获得充分的业务需求,完善用户需求和功能性需求,了解客户的相关约束而获得非功能性需求。最终编写《需求规格说明书》;召开需求评审会议,客户确定需求,并签定合同;编写项目计划说明书;编写测试计划;召开项目启动会议,项目正式启动。

 

      概要设计阶段:根据《需求分析说明书》,进行用例分析,获得充分而有效的用例。编写界面原型,编写编码规范和界面风格规范,数据库设计规范。用uml工具画用例图,编写有效的用例规约文档。划分项目功能模块.评审用例及用例规约文档。

 

      详细设计阶段:根据完整的用例及需求进行分析,获得数据库所需的相关信息,画数据库E-R图,编写数据设计说明书.进行数据库建模。进行详细的分析,用uml工具画类图,确定每个功能模块的子功能,抽取项目的公共部分成为一个公共模块。确定项目的架构基础。确定需要用到的类及类成员和方法。确定一些辅助类及方法。对每一个用例都用uml工具画出顺序图。编写详细设计说明书,评审详细设计说明书, 进行基础框架搭建。列出任务清单,进行任务分配。

 

      编码阶段:以小组的形式进行代码编写,编写单元测试用例,每完成一个类都要进行单元测试。每完成一个功能点和模块都要进行集成测试。确保每一个功能点和模块完成后都是一个可以看得见、摸得着的产品。而不是等到最后才进行统一的调试和搭配。每天都要对代码进行检查和优化,也就是所谓的重构。

 

      测试阶段:根据测试计划对项目进行系统测试,以及用户的验收测试

 

      产品发布:交付完整的产品和设计文档。把产品布署到客户的计算机上,确保产品的正常运行。客户签收。

 

      维护阶段:为客户提供技术保障,对产品进行相应的维护和升级工作

 

 

软件常见开发模型

 

      瀑布模型:最经典的过程模型,适用于需求明确,规模较小的项目

 

      喷泉模型:迭代,无间隙特点,适用于面向对象的软件开发过程

 

      螺旋模型:

 

      MSF模型:微软解决方案过程模型

 

 

什么是极限(XP)编程:极限编程是对敏捷软件开发方法的一种实现。它强调测试先行,也就是在编写代码的时候先编写测试用例;循环迭代,每一次迭代都是一个可用的产品;重构,不断的对代码进行优化;结对编程,两个人为一对共同进行代码编写;它强调团队之间的知识传播,让团队的每个人都能熟悉软件开发的各种技术。如:支持熟悉数据库的人去做界面,做界面的人去做数据库等,通过不定期的角色转换来增强团队的能力。要求客户参与到软件开发中来,开发出最适合客户需求的产品。

 

 

 

单元测试一般是在编码的时候同步进行的,一般是以类为单位进行测试,当一个类完成了编码,并编译正确后才进行的测试,测试这个类是否已经能够实现指定的功能。一个类能够正常的编译成功并不意味着这个类就已经完成了,还要通过测试,设置断言来确定他是否已经达到了预期的效果,实现了特定的功能。调试,编译通过只能证明代码的语法没有错误。

 

单元测试由程序员自己来进行,也可以在项目小组内交互进行。单元测试是采用白盒测试

 

 

 

集成测试一般指实现了一个功能点或一个模块后,为了测试这个模块是否已经实现了需求要求的功能。集成测试可能需要对多个类进行组装,也可能需要与以前已经测试通过的模块进行组装,是对产品组件的系统整合和执行。集成测试可以根据模块的大小分不同的级别,在现行的软件开发中,每完成一个功能模块都必须要进行一次集成测试,使得你完成的模块是一个可以运行的产品。集成测试一般可以由项目小组的负责人(或指定一个小组成员)来完成。集成测试采用白盒式测试和黑盒测试

 

 

 

系统测试一般指项完代码已经全部完成,交给测试小组来进行测试。进行系统测试的人员独立于开发小组,系统测试人员把完成的产品布署在相应的计算机环境中,按照测试计划进行测试,验证系统是否满足了指定的需求。系统测试除了测试产品应满足基本的功能需求外,还要对产品的性能,用户界面,安全性,压力,可靠性,安装和反安装等几个方面进行测试

 

系统测试采用黑盒测试

 

 

 

验收测试一般指产品交付给客户,负责把产品布署在指定的计算机环境中。由用户根据需求文档,进行的总体测试。验收测试的内容和系统测试一样,只是执行者不同。都是除了测试系统完成基本功能外还要对性能,安全性,可靠性等进行测试。验收测试也是采用黑盒测试

 

 

 

为什么需要测试?测试是对软件质量的保证,只能通过严格测试的软件才是合格的软件,测试并不是说让软件能够编译通过,测试是让软件产品最大程度的满足客户的需求度。

 

 

回答实例:

 

考官:令狐冲,能谈谈你们是怎么样对这个项目开发的吗?

 

令狐冲:首先,我们这个项目已经有了一个基本的用户原始需求。但这是不够的,我们都知道需求分析是十分重要的,所以我们在用户原始需求文档的基础上,再次进行了分析,通过不断的与客户沟通,充分的了解和熟悉用户的业务,完善了业务需求和功能需求。还对用户业务需求和功能需求分析完善为实现软件的必须的非功能性需求。得出项目需求规格说明书,经过评审会议确认通过。

 

 

 

根据需求规格说明书进行用例分析,通过分析和讨论找出充分的有效用例,并用Rose画用例图。对每一个用例进行详细的分析,完成每个用例的用例规约文档,并编写界面原型。划分项目模块。最后对用例及用例规约文档进行评审验证。编写”代码编写规范”及界面风格规范,数据库设计规范,编写概要设计说明书。

 

 

 

根据需求规格说明书和分析各个用例规约文档,获得数据库的基本信息原型。也可以说是数据库表的草稿,根据数据库表草搞进行分析,进行数据库设计和优化。编写数据库设计说明书。采用PowerDesigner进行数据库建模,并生成SQL脚本。确定项目框架,设计公共模块和辅助类。根据对数据库模型和用例规约文档的分析,列出对象清单和理清对象关系。用Rose来画类图。对每一个用例都用rose画出时序图。编写详细设计说明书。列出任务清单,分组进行代码编写。

 

 

 

在代码编写阶段,先统一完成所有的实体类。对于非实体类则先完成类的框架,也就是只写方法和注释文字。具体方法的实现暂时为空。然后再进行代码填写。每完成一个类的代码编译通过后都要进行重构和单元测试。每完成一个功能和模块都由会由小组长进行集成测试。使得完成的模块是一个真正可以运行的,可见的功能实现。

 

在各个小组都完成自己的模块后就进行模块整合,进行一次大规模的集成测试。然后把产品产给产品测试小组进行系统测试。

如何保证软件开发的质量

为了保证软件质量,只有两个方法。一个是获得充分完整的需求,二是能过测试,以需求为中心编写测试计划。

回答实例:

      令狐冲:要保证软件的质量首先就要获得完整的需求,在需求分析阶段做了大量的工作与客户各个环节的代表性用户进行沟通,充分了解和熟悉客户的业务。并且从需求到设计阶段都保持与用户的沟通和交流。让用户的业务专家一直参与我们的需求,分析和设计工作。

其次我们会在需求分析后就编写测试计划,在开发的每个阶段都进行相应的测试来保证代码是乎合相应需求的。在代码编写过程中,每完成一个类都由程序进行单元测试,每完成一个功能点或模块都要进行集成测试,每一次集成测试都对上一次的已经测试通过的产品进行迭代, 也就是以前测试成功的都会加入到本次测试中来。使得每个完成的功能和模块完成后都是一个可以运行的,可以看得到的产品;同时也欢迎用户来见证我们的集成测试结果。代码编写完成后进行最后一次集成测试,然后交由独立的测试小组对项目进行系统测试。

如果被录用,将怎样开展工作

回答范例:

    针对这个如何展开工作的问题,我目前仅仅是对咱们公司的大体情况有一个了解,因此,对这个职位的工作性质仅仅是自己的一个理解。所以呢,我也不知道是否合适,我只能说一个大概。

    作为这个职位而言,我想我首先要对本公司的主营业务要有一个相当的了解,了解我们公司的业务组成部分、业务的发展方向、我们面向的客户性质等等。

第二,我要了解所属部门在公司中的地位,以及部门的工作目标,从而确定自身的工作努力方向。

    第三,了解我参与项目的开发方式,架构方式,紧密配合领导工作,尽快投入具体的开发工作。

这就是我开展工作的计划。

 

你可能感兴趣的:(001-java面试题集)