JAVA面试问题总结Word格式文档下载.docx
- 文档编号:15880783
- 上传时间:2022-11-16
- 格式:DOCX
- 页数:59
- 大小:78.50KB
JAVA面试问题总结Word格式文档下载.docx
《JAVA面试问题总结Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《JAVA面试问题总结Word格式文档下载.docx(59页珍藏版)》请在冰豆网上搜索。
(5)文档材料是系统开发生命周期中重要的可递交成果,应加以重视。
1.1.2简述系统分析的步骤,并说明系统分析应提交的成果
系统分析的步骤如下:
(1)系统计划:
寻求可以对事务产生更大利益的同等或更优的技术和事务应用。
(2)可行性研究(可选):
从技术、操作和经济等各方面综合考虑,确定开发一个信息系统的优点,并分析其目标、客观情况和限制条件,确定该项目是否可行。
有时,若项目是由于内部或外部的因素而带有强制的性质时,该步骤可以省略。
(3)需求分析:
由系统分析员和客户一起确定信息系统的需求并进行归档。
(4)客户接受:
客户对需求文档的正式或非正式批准。
(5)原型设计(可选):
为了更好地理解客户的要求或增加客户接受预期系统的可能性而开发的信息系统原型。
系统分析阶段完成后应该提交"
需求指定文档"
和"
系统原型"
(可选)。
1.1.3试描述系统设计的主要阶段和步骤,并说明各步骤的主要工作。
步骤如下:
(1)将系统分层分割,细化成一系列子系统。
(2)标识问题的一致性特征。
(3)给子系统分配处理程序和任务。
(4)根据数据结构、文件和数据库,为实现数据存储选择基本策略。
(5)标识全局资源和确定控制访问这些资源的机制。
(6)选择实现软件控制方法:
①保持状态的程序内使用分配方法。
②直接地实现状态机制。
③使用一致性任务
(7)考虑边界条件
(8)建立交替使用的优先权。
1.1.4面向对象系统分析和设计的文档可以分为哪两大类?
它们分别由哪些部分组成
面向对象系统分析和设计的文档有"
面向客户"
的和"
面向软件设计者"
的两种。
"
的文档涉及系统功能,包括三视图模型、用户场景和事件-响应模型。
的文档涉及系统的结构,包括完整的五层OOA模型。
2J2SE基础知识相关的
2.1Java面向对象知识
2.1.1程序结构的概念
所谓程序结构是指程序设计方法,就是指通常人们所说的“结构化编程”、“面向对象编程”等等。
通常,最常见的程序结构包括:
非结构化程序结构化程序面向对象程序,当然,还有很多程序结构如“面向组件”程序和“面向方面”程序等,“面向组件”与“面向方面”是“面向对象”的扩展与延续。
2.1.2结构化程序设计的概念
“面向过程”的一种程序设计方法。
它是通过自顶向下,逐步求精,模块化的方法来实现程序功能的编程方法。
用这种方法编程,优点很多,可使程序易读、易写、易调试、易维护、易保证其正确性及验证其正确性。
然而,结构化程序设计并不能完全解决软件危机,人们仍然渴望生产效率更高、更可靠、易维护、易管理的开发思想和开发方法。
结构化程序设计方法的四条原则是:
1.自顶向下;
2.逐步求精;
3.模块化;
4.限制使用goto语句。
2.1.3面向对象程序设计的概念
面向对象程序设计,是一种充分利用抽象,封装等方法将现实世界要解决的问题抽象成为一个对象,从而模拟客观世界的一种程序设计方法。
是一种以对象为中心的思维方式。
对象之间通过消息相互作用。
过程式编程语言为:
程序=算法+数据;
面向对象编程语言为:
程序=对象+消息。
面向对象设计程序,主要就是设计抽象的类。
其主要相关概念有:
对象、类、封装、继承、多态性、消息、关联。
所有面向对象编程语言都支持三个概念:
封装、多态性和继承。
2.1.4面向方面编程(AOP)概念
AOP是实现调用者与被调用者之间的解耦,体现“分散关注”思想的编程方法,它将“关注”封装在“方面”中。
AOP实际是GoF设计模式的延续。
分散关注是将通用需求功能从不相关类之中分离出来;
同时,能够使得很多类共享一个行为,一旦行为发生变化,不必修改很多类,只要修改这个行为就可以。
从J2EE系统划分为J2EE容器和J2EE应用系统两个方面,我们已经看到一种分散关注的思路
2.1.5面向服务架构(SOA)概念
SOA是"
抽象、松散耦合和粗粒度"
的软件架构,它可以根据需求通过网络对松散耦合的粗粒度应用组件进行分布式部署、组合和使用。
服务层是SOA的基础,可以直接被应用调用,从而有效控制系统中与软件代理交互的人为依赖性。
SOA!
=WebServices,WebServices只是SOA的一种技术实现方式,并不足以构成SOA的全部,通过JMS、JDBC、.NETRemoting、IIOP乃至CORBA和TCP/IP都可以成为SOA的技术实现架构,而且也有厂商在私有协议上实现了SOA的模型。
2.1.6面向对象和面向过程的区别
面向过程,站在计算机的角度进行程序设计,一步步指明执行步骤的程序设计方法;
面向对象,站在符合人的思维习惯的角度进行程序设计,将属性与执行操作封装于对象之中。
如:
用计算机模拟一只猫捉老鼠的过程,程序员必须告诉计算机每一步猫的具体的动作。
如果用面向对象的程序设计方法来做,就可以把猫作为一个独立的对象,猫会奔跑,猫会捉老鼠,这些是它的固有属性,被封装在猫这个对象之中,所以,只需给出老鼠出现的信息,猫就会自动去捉。
面向过程高度耦合、高效率,通常是针对一个具体的应用实现,因此无法适应快速业务变化,不适合做大型面向客户应用的开发。
面向对象方法高内聚、低耦合,重用性高,更适应于解决当今的庞大、复杂和易变的系统模型。
2.1.7理解封装
是面向对象具有的一个基本特性,其目的是有效实现信息隐藏原则。
这是软件设计模块化、软件复用和软件维护的一个基础。
封装是一种机制,它将某些代码和数据链接起来,形成一个自包含的黑盒子(即产生一个对象)。
在强调对象的封装性时,也必须允许对象有不同程度的可见性,可见性是指对象的属性和服务允许对象外部存取和引用的程度。
封装主要依靠对类、数据和方法的访问控制,从语法上讲就是加上private、protected、public等关键词,如果没有关键词修饰则默认为package。
2.1.8理解继承
继承表达了对象的一般与特殊的关系。
特殊类的对象具有一般类的全部属性和服务。
继承具有传递性。
继承性允许程序设计人员在设计新类时,只须考虑与已有的父类所不同的特性部分,而继承父类的内容为自己的组成部分。
如果父类中某些行为不适用于子类,则程序设计人员可在子类中重写方法的实现。
因此,继承机制不仅除去基于层次联系的类的共性的重复说明,提高代码复用率,而且能使开发者大部分精力用于系统中新的或特殊的部分设计,便于软件的演进和增量式扩充。
就继承风格而言,具有多样性,除上述的单继承、多继承、多代继承外,还有全部继承、部分继承等等。
一般的面向对象系统,在不同程度上支持如下四种类型的继承:
1.替代继承,如果我们能够对类T的对象比类E的对象实施更多的操作,就说类T继承类E,即在类E的对象处,能够用类T的对象来替代。
这种继承是基于方法而非值。
例如,一个徒弟从师傅那里学到了师傅的全部技术,那么在任何需要师傅的地方,都可以由该徒弟来替代。
2.包含继承,如果类T的每个对象也是类E的对象,则说类T是类E的子对象。
这种继承是基于结构而非操作。
例如,苹果类的对象(如“红富士”、“红香蕉”、“青香蕉”、“国光”...)都是水果类的一些特殊对象,苹果继承了水果的特征,而且包含了水果的所有特征,这便是包含继承。
3.限制继承,如果类E包括满足某种已知限定条件的类T的所有对象,则类T是类E的一个子类。
这是包含继承的特殊情形。
例如,少年是人的子类,但是他们服从更特殊的限制条件,即要求年龄限于13到19之间;
又如,鸵鸟是一类特殊的鸟,它们不能继承鸟类的会飞的特征,是受限制继承。
4.特化继承,如果类E的对象是类T的对象,而T带有更多特殊信息,则类T是类E的子类。
例如人和学者,其中学者的信息是人的信息再加上某些属性。
2.1.9理解多态
多态性原意是指一种具有多种形态的事物,这里是指同一消息为不同的对象所接受时,可导致不同的行为。
多态性支持“同一接口,多种方法”,使高层代码(算法)只写一次而在低层可多次复用,面向对象的多种多态性方法的使用,如动态绑定(dynamicbinding)、重载(overload)等,提高了程序设计的灵活性和效率。
多态性提供了把接口与实现分开的另外一个方面。
多态性提高了代码的组织性和可读性,更重要的是它使软件的可扩充性有了充分的提高。
在某些程序设计语言中,多态性指相同的语言结构可以代表不同类型的实体(例如,在Prolog、Parllog一类语言中,同一个变量可以匹配各种类型的语法结构)或者对不同类型的实体进行操作(例如,在Lisp、Schema一类语言中,同一个函数可以对不同结构的表进行操作)。
在强类型语言中,多态表现为重载(overloading)和类属(genericity),又称为参数化多态(parameterizedpolymorphism)。
在面向对象的概念中,多态性则是指,不同对象收到相同消息时,根据对象类不同产生不同动作。
C++允许程序员发送相同消息到不同的相关对象,而由对象决定如何完成该动作,并且支持软件选择实现决策的时间。
其中,运行时的多态是面向对象的程序设计语言所独有的,有人还认为,只有与动态联编相结合的多态才是真正的面向对象的多态。
关于前期绑定(函数绑定)与后期绑定(动态绑定)概念:
函数绑定(functioncallbinding)将函数调用与函数体连接起来叫做绑定。
如果绑定在程序运行之前进行(由编译器和连接器执行),则称为预绑定(earlybinding),也叫静态联编。
可能你从没听说过这个名词,因为在过程设计语言里,绑定并非是你可以选择的。
预绑定意味着绑定基于的信息都是静态的,是编译和连接时就可以确定的。
而面向对象的多态性设计要求能够在运行时,根据对象类型的不同来选择合适的函数调用,这些类型信息在编译时是不可知的。
解决这一问题的方法是后期绑定(latebinding)。
运行时的多态性是在程序运行时发生的事件,编译器在编译时未确定要调用的函数,必须根据程序运行所产生的信息来通知用调用哪一个函数。
这被称为后绑定(latebinding),是动态联编方式。
关于重载概念:
如果函数的参数类型完全一致,仅仅是返回类型不同,则编译器认为出错。
这个处理有两个原因:
1)当函数的返回值不赋给某一个变量时,系统无法判断应调用哪一个函数;
2)即使当函数返回值赋给一个变量时,系统也无法判断这一赋值是否进行了类型转换。
函数重载提供了便利,但何时重载函数名收益最大却始终是一个问题。
当一组函数并不执行相似的操作时,就不应该采用函数重载。
即使一组函数执行相似的操作,也要慎重考虑,是否有其他更好的处理方法。
程序员在编写程序时不应着眼于语言的特征,而应重点解决实际的问题。
在使用语言的特性时,应遵循应用程序的逻辑结构,绝对不可因为语言拥有某一特性而仅仅为了使用它,在不顾实际需求的情况下滥用。
2.1.10消息传递与过程调用
关于消息传递
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- JAVA 面试 问题 总结