java程序员部分面试题答案.docx
一、你对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进展基于 协议的网络应用间的交互。WebService实现不同语言间的调用,是依托于一个标准,webservice是须要遵守WSDLweb效劳定义语言/SOAP简洁恳求协议标准的。WebService=WSDL+SOAP+UDDIwebservice的注册 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,RMIRemote 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,Component 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,面对对象编程不同于面对过程编程:1OOP关注对象和角色,也就是事物的本质 1OOP把客观世界中的对象抽象成对应的类; 2通过类构造实例; 3通过依靠、继承、实现等形式建立对象间的通信关系2OOP易于扩展,增加或变更业务的功能,无需大幅改动变更源代码3OOP易于建模,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, 办公自动化 OOPSOAGUIDDL Data Definition Language, 数据定义语言DML Data Manipulation Language, 数据操作语言WYSIWYG 所见即所得 What You See is What You GetCMPCMTB2BC2CB2CIDEDOMClient/ServerCMMORMMISMVC MVC是ModelViewController的简写。"Model" 代表的是应用的业务逻辑通过JavaBean,EJB组件实现, "View" 是应用的表示面由JSP页面产生,"Controller" 是供应应用的处理过程限制一般是一个Servlet,通过这种设计模型把应用逻辑,处理过程和显示逻辑分成不同的组件实现。这些组件可以进展交互和重用。OLECORBA CORBA 标准是公共对象恳求代理构造(Common Object Request Broker Architecture),由对象管理组织 (Object Management Group,缩写为 OMG)标准化。它的组成是接口定义语言(IDL), 语言绑定(binding:也译为联编)和允许应用程序间互操作的协议。 其目的为:用不同的程序设计语言书写 在不同的进程中运行 为不同的操作系统开发。UML UML,标准建模语言,包含用例图,静态图(包括类图、对象图和包图),行为图,交互图(依次图,合作图),实现图等。XMLCMMIJREJ2EEJ2EE是Sun公司提出的多层(multi-diered),分布式(distributed),基于组件(component-base)的企业级应用模型(enterpriese application model).在这样的一个应用系统中,可根据功能划分为不同的组件,这些组件又可在不同计算机上,并且处于相应的层次(tier)中。所属层次包括客户层(clietn tier)组件,web层和组件,Business层和组件,企业信息系统(EIS)层。JDKAOPOOContainerW3CJMSDomainPOJOJVMJNDIJTASOAP Simple Object Access Protocol,简洁对象访问协议WSDLJDO JDO是Java对象许久化的新的标准,为Java Data Object的简称,也是一个用于存取某种数据仓库中的对象的标准化API。JDO供应了透亮的对象存储,因此对开发人员来说,存储数据对象完全不须要额外的代码如JDBC API的运用。这些繁琐的例行工作已经转移到JDO产品供应商身上,使开发人员解脱出来,从而集中时间和精力在业务逻辑上。另外,JDO很灵敏,因为它可以在任何数据底层上运行。JDBC只是面对关系数据库RDBMS)JDO更通用,供应到任何数据底层的存储功能,比方关系数据库、文件、XML以及对象数据库ODBMS等等,使得应用可移植性更强。TDDDAOIoC Inversion of Control, 限制反转RMIDNS Internet Domain Name System, 因特网域名系统URLURI二十四、数据库连接池的工作机制二十五、互联网供应哪些效劳?二十六、请写出JSP的几个隐含内置对象答:JSP中隐含内置对象名称 类型 注释和范围request javax.servlet. . ServletRequest requestresponse javax.servlet. . ServletResponse responsepage javax.lang.Object pageException java.lang.Throwable pagepageContext javax.servlet.jsp.PageContext pagesession javax.servlet. . Session sessionapplication javax.servlet.ServletContext ServletContextout javax.servlet.jsp.JspWriter OutputStreamconfig javax.servlet.ServletConfig ServletConfigJSP共有以下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,ActionHibernate:Hibernate是一个许久层框架,它只负责及关系数据库的操作。Spring:Spring是一个业务层框架,是一个整合的框架,可以很好地黏合表示层及许久层。二十八、应用效劳器及Web Server的区分二十九、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 come 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, 办公自动化 OOPSOAGUIDDL Data Definition Language, 数据定义语言DML Data Manipulation Language, 数据操作语言WYSIWYG 所见即所得 What You See is What You GetCMPCMTB2BC2CB2CIDEDOMClient/ServerCMMORMMISMVC MVC是ModelViewController的简写。"Model" 代表的是应用的业务逻辑通过JavaBean,EJB组件实现, "View" 是应用的表示面由JSP页面产生,"Controller" 是供应应用的处理过程限制一般是一个Servlet,通过这种设计模型把应用逻辑,处理过程和显示逻辑分成不同的组件实现。这些组件可以进展交互和重用。OLECORBA CORBA 标准是公共对象恳求代理构造(Common Object Request Broker Architecture),由对象管理组织 (Object Management Group,缩写为 OMG)标准化。它的组成是接口定义语言(IDL), 语言绑定(binding:也译为联编)和允许应用程序间互操作的协议。 其目的为:用不同的程序设计语言书写 在不同的进程中运行 为不同的操作系统开发。UML UML,标准建模语言,包含用例图,静态图(包括类图、对象图和包图),行为图,交互图(依次图,合作图),实现图等。XMLCMMIJREJ2EEJ2EE是Sun公司提出的多层(multi-diered),分布式(distributed),基于组件(component-base)的企业级应用模型(enterpriese application model).在这样的一个应用系统中,可根据功能划分为不同的组件,这些组件又可在不同计算机上,并且处于相应的层次(tier)中。所属层次包括客户层(clietn tier)组件,web层和组件,Business层和组件,企业信息系统(EIS)层。JDKAOPOOContainerW3CJMSDomainPOJOJVMJNDIJTASOAP Simple Object Access Protocol,简洁对象访问协议WSDLJDO JDO是Java对象许久化的新的标准,为Java Data Object的简称,也是一个用于存取某种数据仓库中的对象的标准化API。JDO供应了透亮的对象存储,因此对开发人员来说,存储数据对象完全不须要额外的代码如JDBC API的运用。这些繁琐的例行工作已经转移到JDO产品供应商身上,使开发人员解脱出来,从而集中时间和精力在业务逻辑上。另外,JDO很灵敏,因为它可以在任何数据底层上运行。JDBC只是面对关系数据库RDBMS)JDO更通用,供应到任何数据底层的存储功能,比方关系数据库、文件、XML以及对象数据库ODBMS等等,使得应用可移植性更强。TDDDAOIoC Inversion of Control, 限制反转RMIDNS Internet Domain Name System, 因特网域名系统URLURI二十四、数据库连接池的工作机制二十五、互联网供应哪些效劳?二十六、请写出JSP的几个隐含内置对象答:JSP中隐含内置对象名称 类型 注释和范围request javax.servlet. . ServletRequest requestresponse javax.servlet. . ServletResponse responsepage javax.lang.Object pageException java.lang.Throwable pagepageContext javax.servlet.jsp.PageContext pagesession javax.servlet. . Session sessionapplication javax.servlet.ServletContext ServletContextout javax.servlet.jsp.JspWriter OutputStreamconfig javax.servlet.ServletConfig ServletConfigJSP共有以下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,ActionHibernate:Hibernate是一个许久层框架,它只负责及关系数据库的操作。Spring:Spring是一个业务层框架,是一个整合的框架,可以很好地黏合表