收藏 分销(赏)

软件工程师面试题含答案.doc

上传人:二*** 文档编号:4576706 上传时间:2024-09-30 格式:DOC 页数:17 大小:69KB 下载积分:5 金币
下载 相关 举报
软件工程师面试题含答案.doc_第1页
第1页 / 共17页
本文档共17页,全文阅读请下载到手机保存,查看更方便
资源描述
. . 一、你对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或E的形式提供 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进展基于 协议的网络应用间的交互。 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〕 (3) Service Requestor在UDDI效劳器上查询并 获取WSDL文件 (4) Service requestor将请求绑定到SOAP,并访问相应的效劳。 三、什么是中间件? 中间件就是程序中可织入的,可重用的,与业务逻辑无关的各种组件。 中间件〔middleware〕是根底软件的一大类,属于可复用软件的畴。顾名思义,中间件处于操作系统软件与用户的应用软件的中间。中间件在操作系统、网络和数据库之上,应用软件的下层,总的作用是为处于自己上层的应用软件提供运行与开发的环境,帮助用户灵活、高效地开发和集成复杂的应用软件。   在众多关于中间件的定义中,比较普遍被承受的是IDC表述的:中间件是一种独立的系统软件或效劳程序,分布式应用软件借助这种软件在不同的技术之间共享资源,中间件位于客户机效劳器的操作系统之上,管理计算资源和网络通信。 分类:数据访问中间件,远程调用中间件,消息中间件,交易中间件,对象中间件。 举例: 1,RMI〔Remote Method Invocations, 远程调用〕 2,Load Balancing(负载均衡,将访问负荷分散到各个效劳器中) 3,Transparent Fail-over(透明的故障切换) 4,Clustering(集群,用多个小的效劳器代替大型机〕 5,Back-end-Integration(后端集成,用现有的、新开发的系统如去集成遗留的系统) 6,Transaction事务〔全局/局部〕全局事务〔分布式事务〕局部事务〔在同一数据库联接的事务〕 7,Dynamic Redeployment(动态重新部署,在不停顿原系统的情况下,部署新的系统〕 8,System Management(系统管理) 9,Threading(多线程处理) 10,Message-oriented Middleware面向消息的中间件〔异步的调用编程〕 11,ponent Life Cycle(组件的生命期管理) 12,Resource pooling〔资源池〕 13,Security〔平安〕 14,Caching〔缓存〕 四、什么是典型的软件三层构造?软件设计为什么要分层?软件分层有什么好处? 答:(1) Presentation layer〔表示层〕 (1) 表示逻辑〔生成界面代码〕 (2) 接收请求 (3) 处理业务层抛出的异常 (4) 负责规那么验证〔数据格式,数据非空等〕 (5) 流程控制 (2) Service layer〔效劳层/业务层〕 (1) 封装业务逻辑处理,并且对外暴露接口 (2) 负责事务,平安等效劳 (3) Persistence layer〔持久层〕 (1) 封装数据访问的逻辑,暴露接口 (2) 提供便的数据访问的案〔查询语言,API,映射机制等〕 Domain layer〔域层〕 (1) 业务对象以及业务关系的表示 (2) 处理简单的业务逻辑 (3) 域层的对象可以穿越表示层,业务层,持久层 软件分层构造使得代码维护非常便,设计明确,各层独立,专注自己擅长的领域。 五、什么是OOP?OOP相对于面向过程编程有哪些优点? OOP,Object-Oriented Programming,面向对象编程不同于面向过程编程: 〔1〕OOP关注对象和角色,也就是事物的本质 1〕OOP把客观世界中的对象抽象成对应的类; 2〕通过类构造实例; 3〕通过依赖、继承、实现等形式建立对象间的通信关系 〔2〕OOP易于扩展,增加或改变业务的功能,无需大幅改动改变源代码 〔3〕OOP易于建模,OOP就是软件架构师在计算机高级语言中对客观世界的抽象和再现,人们可以很好地理解和建立起计算机中的抽象模型 六、谈谈Overload和Override的区别。 答: 法的重写Overriding和重载Overloading是Java多态性的不同表现。重写Overriding是父类与子类之间多态性的一种表现,重载Overloading是一个类中多态性的一种表现。如果在子类中定义某法与其父类有一样的名称和参数,我们说该法被重写(Overriding)。子类的对象使用这个法时,将调用子类中的定义,对它而言,父类中的定义如同被“屏蔽〞了。如果在一个类中定义了多个同名的法,它们或有不同的参数个数或有不同的参数类型,那么称为法的重载(Overloading)。Overloaded的法是可以改变返回值的类型。 七、谈谈HashMap和Hashtable的区别。 答: HashMap是轻量级的〔线程不平安的,效率高的〕集合,Hashtable是重量级的〔线程平安的,效率低的〕集合。 都属于Map接口的类,实现了将惟一键映射到特定的值上。 HashMap 类没有分类或者排序。它允一个 null 键和多个 null 值。 Hashtable 类似于 HashMap,但是不允 null 键和 null 值。它也比 HashMap 慢,因为它是同步的。 八、请问abstract class和interface有什么区别? 答: 1) 接口没有任的实现,而抽象类它可以有局部的实现也可以没有; 2) 如果需要复用或者共享局部代码,应该用抽象类而不是接口; 3) 继承无法解决类型的转换问题,接口就是为了解决这一问题而产生的(Java的单继承是接口产生的根本原因) 接口是一种抽象的第三规,跟对象没什么直接关系。 九、请问软件开发中的设计模式你会使用哪些? 答:我熟悉的设计模式有单例模式,DAO模式,模板法,工厂模式,委托代理模式,MVC模式等。 Singleton模式主要作用是保证在Java应用程序中,一个类Class只有一个实例存在。 Singleton模式一般形式: 定义一个类,它的构造函数为private的,它有一个static的private的该类变量,在类初始化时实例话,通过一个public的getInstance法获取对它的引用,继而调用其中的法。 十、类的核心特性有哪些? 类具有封装性、继承性和多态性。 封装性: 类的封装性为类的成员提供公有、缺省、保护和私有等多级访问权限,目的是隐藏类中的私有变量和类中法的实现细节。 继承性: 类的继承性提供从已存在的类创立新类的机制,继承〔inheritance〕使一个新类自动拥有被继承类〔父类〕的全部成员。 多态性: 类的多态性提供类中法执行的多样性,多态性有两种表现形式:重载和覆盖。 十一、请问类与对象有什么区别? 类 类就是某一种事物的一般性的集合体,是一样或相似的各个事物共同特性的一种抽象。 对象 在面向对象概念中,对象〔Object〕是类的实例〔instance〕。对象与类的关系就像变量与数据类型的关系一样。 十二、写出生产者消费者模型的实现 十三、用软件工程和Java来表达购物车〔shopping cart〕系统实现 十四、文件系统的几个类:FileInputStream、FileOutputStream、FileReader、FileWriter的区别 十五、请写出Java API中最常用的五个包,并且各举两个类加以说明。 十六、请问你在“电信运营支撑系统〞中遇到了哪些问题?你是怎么解决的?做这个工程你最大的收获是什么? 十七、请说出几个常用的异常类 答:NullpointException〔空指针异常〕 ClassNotFoundException〔类找不到异常〕 ClassCastException〔类型转换异常〕 IllegalArgumentException〔非法参数异常〕 ArithmeticException〔算术异常〕 NumberFormatException〔数据格式异常〕 IndexOutOfBoundsException〔数组下标越界异常〕 IllegalStateException〔非法语句异常〕 十八、什么是进程和线程?两者的区别是什么? 十九、请简要描述一下你做的ShoppingCart工程。 二十、请问网络7层协议,tcp/ip4 层协议是什么? 二十一、Java面向对象的四大特点 二十二、public,private,protected,default访问权限〔可见性〕 答: public:全局可见 protected:继承体系构造之间可见 default〔或不写〕:同包可见 private:本类可见。 二十三、名词解释 CRM [Customer Relationship Management, 客户关系管理] ERP [Enterprise Resource Planning, 企业资源规划] OSS [Operation Support System, 运营支撑系统] BSS [Business Support System, 数据定义语言] BOSS [Business Operation Support System, 数据定义语言] OA [Office Automatization, 办公自动化] OOP SOA GUI DDL [Data Definition Language, 数据定义语言] DML [Data Manipulation Language, 数据操作语言] WYSIWYG 所见即所得 [What You See is What You Get] CMP CMT B2B C2C B2C IDE DOM Client/Server CMM ORM MIS MVC MVC是Model-View-Controller的简写。"Model" 代表的是应用的业务逻辑〔通过JavaBean,E组件实现〕, "View" 是应用的表示面〔由JSP页面产生〕,"Controller" 是提供应用的处理过程控制〔一般是一个Servlet〕,通过这种设计模型把应用逻辑,处理过程和显示逻辑分成不同的组件实现。这些组件可以进展交互和重用。 OLE CORBA CORBA 标准是公共对象请求代理构造(mon Object Request Broker Architecture),由对象管理组织 (Object Management Group,缩写为 OMG)标准化。它的组成是接口定义语言(IDL), 语言绑定(binding:也译为联编)和允应用程序间互操作的协议。 其目的为: 用不同的程序设计语言书写 在不同的进程中运行 为不同的操作系统开发。 UML UML,标准建模语言,包含用例图,静态图(包括类图、对象图和包图),行为图,交互图(顺序图,合作图),实现图等。 XML CMMI JRE J2EE J2EE是Sun公司提出的多层(multi-diered),分布式(distributed),基于组件(ponent-base)的企业级应用模型(enterpriese application model).在这样的一个应用系统中,可按照功能划分为不同的组件,这些组件又可在不同计算机上,并且处于相应的层次(tier)中。所属层次包括客户层(clietn tier)组件,web层和组件,Business层和组件,企业信息系统(EIS)层。 JDK AOP OO Container W3C JMS Domain POJO JVM JNDI JTA SOAP [Simple Object Access Protocol,简单对象访问协议] WSDL JDO JDO是Java对象持久化的新的规,为Java Data Object的简称,也是一个用于存取某种数据仓库中的对象的标准化API。JDO提供了透明的对象存储,因此对开发人员来说,存储数据对象完全不需要额外的代码〔如JDBC API的使用〕。这些繁琐的例行工作已经转移到JDO产品提供商身上,使开发人员解脱出来,从而集中时间和精力在业务逻辑上。另外,JDO很灵活,因为它可以在任数据底层上运行。JDBC只是面向关系数据库〔RDBMS)JDO更通用,提供到任数据底层的存储功能,比方关系数据库、文件、XML以及对象数据库〔ODBMS〕等等,使得应用可移植性更强。 TDD DAO IoC [Inversion of Control, 控制反转] RMI DNS [Internet Domain Name System, 因特网域名系统] URL URI 二十四、数据库连接池的工作机制 二十五、互联网提供哪些效劳? 二十六、请写出JSP的几个隐含置对象 答:JSP中隐含置对象 名称 类型 注释和围 request javax.servlet. . ServletRequest request response javax.servlet. . ServletResponse response page javax.lang.Object page Exception java.lang.Throwable page pageContext javax.servlet.jsp.PageContext page session javax.servlet. . Session session application javax.servlet.ServletContext ServletContext out javax.servlet.jsp.JspWriter OutputStream config javax.servlet.ServletConfig ServletConfig JSP共有以下9种根本置组件〔可与ASP的6种部组件相对应〕: request 用户端请求,此请求会包含来自GET/POST请求的参数 response 网页传回用户端的回应 page JSP 网页本身 exception 针对错误网页,未捕捉的例外 pageContext 网页的属性是在这里管理 session 与请求有关的会话期 application servlet 正在执行的容 out 用来传送回应的输出 config Servlet的构架部件 二十七、请你谈谈SSH整合 答:SSH: Struts〔表示层〕+Spring〔业务层〕+Hibernate〔持久层〕 Struts: Struts是一个表示层框架,主要作用是界面展示,接收请求,分发请求。 在MVC框架中,Struts属于VC层次,负责界面表现,负责MVC关系的分发。〔View:沿用JSP, ,Form,Tag,Resourse ;Controller:ActionServlet,struts-config.xml,Action〕 Hibernate: Hibernate是一个持久层框架,它只负责与关系数据库的操作。 Spring: Spring是一个业务层框架,是一个整合的框架,能够很好地黏合表示层与持久层。 二十八、应用效劳器与WebServer的区别 二十九、Java Servlet API中forward() 与redirect()的区别 答: 前者仅是容器中控制权的转向,在客户端浏览器地址栏中不会显示出转向后的地址;后者那么是完全的跳转,浏览器将会得到跳转的地址,并重新发送请求。这样,从浏览器的地址栏中可以看到跳转后的地址。所以,前者更加高效,在前者可以满足需要时,尽量使用forward()法,并且,这样也有助于隐藏实际的。在有些情况下,比方,需要跳转到一个其它效劳器上的资源,那么必须使用sendRedirect()法。 三十、写一个简单的C/S构造程序,Java 的通信编程,编程题(或问答),用JAVA SOCKET编程,读效劳器几个字符,再写入本地显示? 答:Server端程序: package test; import .*; import java.io.*; public class Server { private ServerSocket ss; private Socket socket; private BufferedReader in; private PrintWriter out; public Server() { try { ss=new ServerSocket(10000); while(true) { socket = ss.accept(); String RemoteIP = socket.getInetAddress().getHostAddress(); String RemotePort = ":"+socket.getLocalPort(); System.out.println("A client e in!IP:"+RemoteIP+RemotePort); in = new BufferedReader(new InputStreamReader(socket.getInputStream())); String line = in.readLine(); System.out.println("Cleint send is :" + line); out = new PrintWriter(socket.getOutputStream(),true); out.println("Your Message Received!"); out.close(); in.close(); socket.close(); } }catch (IOException e) { out.println("wrong"); } } public static void main(String[] args) { new Server(); } }; Client端程序: package test; import java.io.*; import .*; public class Client { Socket socket; BufferedReader in; PrintWriter out; public Client() { try { System.out.println("Try to Connect to 127.0.0.1:10000"); socket = new Socket("127.0.0.1",10000); System.out.println("The Server Connected!"); System.out.println("Please enter some Character:"); BufferedReader line = new BufferedReader(new InputStreamReader(System.in)); out = new PrintWriter(socket.getOutputStream(),true); out.println(line.readLine()); in = new BufferedReader(new InputStreamReader(socket.getInputStream())); System.out.println(in.readLine()); out.close(); in.close(); socket.close(); }catch(IOException e) { out.println("Wrong"); } } public static void main(String[] args) { new Client(); } }; 九、请问软件开发中的设计模式你会使用哪些? 答:我熟悉的设计模式有单例模式,DAO模式,模板法,工厂模式,委托代理模式,MVC模式等。 Singleton模式主要作用是保证在Java应用程序中,一个类Class只有一个实例存在。 Singleton模式一般形式: 定义一个类,它的构造函数为private的,它有一个static的private的该类变量,在类初始化时实例话,通过一个public的getInstance法获取对它的引用,继而调用其中的法。 十、类的核心特性有哪些? 类具有封装性、继承性和多态性。 封装性: 类的封装性为类的成员提供公有、缺省、保护和私有等多级访问权限,目的是隐藏类中的私有变量和类中法的实现细节。 继承性: 类的继承性提供从已存在的类创立新类的机制,继承〔inheritance〕使一个新类自动拥有被继承类〔父类〕的全部成员。 多态性: 类的多态性提供类中法执行的多样性,多态性有两种表现形式:重载和覆盖。 十一、请问类与对象有什么区别? 类 类就是某一种事物的一般性的集合体,是一样或相似的各个事物共同特性的一种抽象。 对象 在面向对象概念中,对象〔Object〕是类的实例〔instance〕。对象与类的关系就像变量与数据类型的关系一样。 十二、写出生产者消费者模型的实现 十三、用软件工程和Java来表达购物车〔shopping cart〕系统实现 十四、文件系统的几个类:FileInputStream、FileOutputStream、FileReader、FileWriter的区别 十五、请写出Java API中最常用的五个包,并且各举两个类加以说明。 十六、请问你在“电信运营支撑系统〞中遇到了哪些问题?你是怎么解决的?做这个工程你最大的收获是什么? 十七、请说出几个常用的异常类 答:NullpointException〔空指针异常〕 ClassNotFoundException〔类找不到异常〕 ClassCastException〔类型转换异常〕 IllegalArgumentException〔非法参数异常〕 ArithmeticException〔算术异常〕 NumberFormatException〔数据格式异常〕 IndexOutOfBoundsException〔数组下标越界异常〕 IllegalStateException〔非法语句异常〕 十八、什么是进程和线程?两者的区别是什么? 十九、请简要描述一下你做的ShoppingCart工程。 二十、请问网络7层协议,tcp/ip4 层协议是什么? 二十一、Java面向对象的四大特点 二十二、public,private,protected,default访问权限〔可见性〕 答: public:全局可见 protected:继承体系构造之间可见 default〔或不写〕:同包可见 private:本类可见。 二十三、名词解释 CRM [Customer Relationship Management, 客户关系管理] ERP [Enterprise Resource Planning, 企业资源规划] OSS [Operation Support System, 运营支撑系统] BSS [Business Support System, 数据定义语言] BOSS [Business Operation Support System, 数据定义语言] OA [Office Automatization, 办公自动化] OOP SOA GUI DDL [Data Definition Language, 数据定义语言] DML [Data Manipulation Language, 数据操作语言] WYSIWYG 所见即所得 [What You See is What You Get] CMP CMT B2B C2C B2C IDE DOM Client/Server CMM ORM MIS MVC MVC是Model-View-Controller的简写。"Model" 代表的是应用的业务逻辑〔通过JavaBean,E组件实现〕, "View" 是应用的表示面〔由JSP页面产生〕,"Controller" 是提供应用的处理过程控制〔一般是一个Servlet〕,通过这种设计模型把应用逻辑,处理过程和显示逻辑分成不同的组件实现。这些组件可以进展交互和重用。 OLE CORBA CORBA 标准是公共对象请求代理构造(mon Object Request Broker Architecture),由对象管理组织 (Object Management Group,缩写为 OMG)标准化。它的组成是接口定义语言(IDL), 语言绑定(binding:也译为联编)和允应用程序间互操作的协议。其目的为: 用不同的程序设计语言书写 在不同的进程中运行 为不同的操作系统开发。 UML UML,标准建模语言,包含用例图,静态图(包括类图、对象图和包图),行为图,交互图(顺序图,合作图),实现图等。 XML CMMI JRE J2EE J2EE是Sun公司提出的多层(multi-diered),分布式(distributed),基于组件(ponent-base)的企业级应用模型(enterpriese application model).在这样的一个应用系统中,可按照功能划分为不同的组件,这些组件又可在不同计算机上,并且处于相应的层次(tier)中。所属层次包括客户层(clietn tier)组件,web层和组件,Business层和组件,企业信息系统(EIS)层。 JDK AOP OO Container W3C JMS Domain POJO JVM JNDI JTA SOAP [Simple Object Access Protocol,简单对象访问协议] WSDL JDO JDO是Java对象持久化的新的规,为Java Data Object的简称,也是一个用于存取某种数据仓库中的对象的标准化API。JDO提供了透明的对象存储,因此对开发人员来说,存储数据对象完全不需要额外的代码〔如JDBC API的使用〕。这些繁琐的例行工作已经转移到JDO产品提供商身上,使开发人员解脱出来,从而集中时间和精力在业务逻辑上。另外,JDO很灵活,因为它可以在任数据底层上运行。JDBC只是面向关系数据库〔RDBMS)JDO更通用,提供到任数据底层的存储功能,比方关系数据库、文件、XML以及对象数据库〔ODBMS〕等等,使得应用可移植性更强。 TDD DAO IoC [Inversion of Control, 控制反转] RMI DNS [Internet Domain Name System, 因特网域名系统] URL URI 二十四、数据库连接池的工作机制 二十五、互联网提供哪些效劳? 二十六、请写出JSP的几个隐含置对象 答:JSP中隐含置对象 名称类型注释和围 request javax.servlet. . ServletRequest request response javax.servlet. . ServletResponse response page javax.lang.Object page Exception java.lang.Throwable page pageContext javax.servlet.jsp.PageContext page session javax.servlet. . Session session application javax.servlet.ServletContext ServletContext out javax.servlet.jsp.JspWriter OutputStream config javax.servlet.ServletConfig ServletConfig JSP共有以下9种根本置组件〔可与ASP的6种部组件相对应〕: request 用户端请求,此请求会包含来自GET/POST请求的参数 response 网页传回用户端的回应 page JSP 网页本身 exception 针对错误网页,未捕捉的例外 pageContext 网页的属性是在这里管理 session 与请求有关的会话期 application servlet 正在执行的容 out 用来传送回应的输出 config Servlet的构架部件 二十七、请你谈谈SSH整合 答:SSH: Struts〔表示层〕+Spring〔业务层〕+Hibernate〔持久层〕 Struts: Struts是一个表示层框架,主要作用是界面展示,接收请求,分发请求。 在MVC框架中,Struts属于VC层次,负责界面表现,负责MVC关系的分发。〔View:沿用JSP, ,Form,Tag,Resourse ;Controller:ActionServlet,struts-config.xml,Action〕 Hibernate: Hibernate是一个持久层框架,它只负责与关系数据库的操作。 Spring: Spring是一个业务层框架,是一个整合的框架,能够很好地黏合表示层与持久层。 二十八、应用效劳器与W
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 考试专区 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服