资源描述
作者:Pan Hon glia ng仅供个人学习Java软件工程师面试笔试题.txt円根网线”尽赚了多少人的青春有时候感动的就是身边微不足道的小事。破碎不是最残酷的最残酷的是踩着这些碎片却假装不疼痛固执的寻找将来就算我遇见再怎么完美的人 ,都有一个缺点,他不是你, 下辈子要做男生,娶 一个像我这样的女生。一、你对 MVC的理解,MVC有什么优缺点?结合 Struts,说明在一个 Web应用如何去使用?答:MVC设计模式(应用观察者模式的框架模式)M: Model(Bus in ess process layer),模型,操作数据的业务处理层,并独立于表现层(In depe ndent of prese ntatio n)。V: View(Presentationlayer),视图,通过客户端数据类型显示数据,并回显模型层的执行结果。C: Con troller(Co ntrol layer),控制器,也就是视图层和模型层桥梁,控制数据的流向,接受视图层发出的事件,并重绘视图MVC1架的一种实现模型模型二(Servlet-centric):JSP+Servlet+JavaBean,以控制为核心,JSP只负责显示和收集数据,Sevlet,连接视图和模型,将视图层数据,发送给模型层,JavaBean,分为业务类和数据实体,业务类处理业务数据,数据实体,承载数据,基本上大多数的项目都是使用这种MVC勺实现模式。StrutsMVC 框架(Web 即plication 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(面向服务的编程)的架构,它是不依赖于语言,不依赖于平台,可 以实现不同的语言间的相互调用,通过In ternet进行基于Http协议的网络应用间的交互。WebService实现不同语言间的调用,是依托于一个标准,webservice是需要遵守 WSDLweb服务定义语言)/SOAP (简单请求协议)规范的。WebService=WSDL+SOAP+UDDIwebservice 的注册)Soap是由Soap的part和0个或多个附件组成,一般只有part,在part中有Envelope和Body。Web Service是通过提供标准的协议和接口,可以让不同的程序集成的一种SOA架构。Web Service 的优点(1) 可以让异构的程序相互访问(跨平台)松耦合(3)基于标准协议(通用语言,允许其他程序访问)Web Service的基本原理(1) Service Provider 采用 WSDL描述服务(2) Service Provider 采用UDDI将服务的描述文件发布到UDDI服务器(Register server )Service Requestor 在UDDI服务器上查询并 获取 WSDI文件Service requestor将请求绑定到 SOAP并访问相应的服务。三、什么是中间件?中间件就是程序中可织入的,可重用的,与业务逻辑无关的各种组件。中间件(middleware )是基础软件的一大类,属于可复用软件的范畴。顾名思义,中间件处 于操作系统软件与用户的应用软件的中间。中间件在操作系统、网络和数据库之上,应用软件的下层,总的作用是为处于自己上层的应用软件提供运行与开发的环境,帮助用户灵活、 高效地开发和集成复杂的应用软件。在众多关于中间件的定义中,比较普遍被接受的是IDC表述的:中间件是一种独立的系统软件或服务程序,分布式应用软件借助这种软件在不同的技术之间共享资源,中间件位于客户机服务器的操作系统之上,管理计算资源和网络通信。分类:数据访问中间件,远程调用中间件,消息中间件,交易中间件,对象中间件。 举例:1, RMI( Remote Method Invocations,远程调用)2,Load Balancing(负载均衡,将访问负荷分散到各个服务器中)3, Tran spare nt Fail-over(透明的故障切换)4,Clustering(集群,用多个小的服务器代替大型机)5,Back-end-lntegration(后端集成,用现有的、新开发的系统如何去集成遗留的系统)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 (缓存)四、什么是典型的软件三层结构?软件设计为什么要分层?软件分层有什么好处?答: Presentation layer(表示层)(1)表示逻辑(生成界面代码)(2)接收请求(3)处理业务层抛出的异常(4)负责规则验证(数据格式,数据非空等)流程控制Service layer(服务层/业务层)(1)封装业务逻辑处理,并且对外暴露接口(2)负责事务,安全等服务 Persiste nee layer(持久层)(1)封装数据访问的逻辑,暴露接口(2)提供方便的数据访问的方案(查询语言,API,映射机制等)Doma in layer (域层)(1)业务对象以及业务关系的表示(2)处理简单的业务逻辑(3)域层的对象可以穿越表示层,业务层,持久层软件分层结构使得代码维护非常方便,设计明确,各层独立,专注自己擅长的领域。五、什么是OOP OOP相对于面向过程编程有哪些优点?OOP Object-Oriented Programming,面向对象编程不同于面向过程编程:(1)OOP关注对象和角色,也就是事物的本质1)OOF把客观世界中的对象抽象成对应的类;2)通过类构造实例;3)通过依赖、继承、实现等形式建立对象间的通信关系(2)OO陽于扩展,增加或改变业务的功能,无需大幅改动改变源代码(3) OOF易于建模,OOP就是软件架构师在计算机高级语言中对客观世界的抽象和再现,人 们可以很好地理解和建立起计算机中的抽象模型六、谈谈 Overload和Override 的区别。答:方法的重写Overriding 和重载 Overloading 是Java多态性的不同表现。重写Overridi ng 是父类与子类之间多态性的一种表现,重载Overloadi ng是一个类中多态性的一种表现。如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写 (Overriding)。子类的对象使用这个方法时,将调用子类中的定义,对它而言,父类中的定义如同被“屏蔽”了。如果在一个类中定义了多个同名的方法,它们或有不同的参数个数或有不同的参数类型,则称为方法的重载(Overloading) 。Overloaded的方法是可以改变返回值的类型。七、谈谈 HashMap和Hashtable 的区别。答:HashMap是轻量级的(线程不安全的,效率高的)集合, Hashtable是重量级的(线程安全 的,效率低的)集合。都属于Map接口的类,实现了将惟一键映射到特定的值上。HashMap类没有分类或者排序。它允许一个null键和多个null 值。Hashtable 类似于 HashMap,但是不允许 null 键和null值。它也比 HashMap慢,因为它是同步的。八、 请问 abstract class禾口 in terface 有什么区另U? 答:1)接口没有任何的实现,而抽象类它可以有部分的实现也可以没有;2)如果需要复用或者共享部分代码,应该用抽象类而不是接口;3)继承无法解决类型的转换问题,接口就是为了解决这一问题而产生的(Java的单继承是接口产生的根本原因)接口是一种抽象的第三方规范,跟对象没什么直接关系。九、请问软件开发中的设计模式你会使用哪些?答:我熟悉的设计模式有单例模式,DAO模式,模板方法,工厂模式,委托代理模式,MVC模式等。Singleton模式主要作用是保证在 Java应用程序中,一个类 Class只有一个实例存在。Singleton 模式一般形式:定义一个类,它的构造函数为 private 的,它有一个static 的private 的该类变量, 在类初始化时实例话,通过一个public的get In sta nee 方法获取对它的引用,继而调用其中 的方法。十、类的核心特性有哪些? 类具有封装性、继承性和多态性。封装性:类的封装性为类的成员提供公有、缺省、保护和私有等多级访问权限,目的是隐藏类中的私有变量和类中方法的实现细节。继承性:类的继承性提供从已存在的类创建新类的机制,继承(in herita nee )使一个新类自动拥有被继承类(父类)的全部成员。多态性: 类的多态性提供类中方法执行的多样性,多态性有两种表现形式:重载和覆盖。十、请问类与对象有什么区别?类类就是某一种事物的一般性的集合体,是相同或相似的各个事物共同特性的一种抽象。对象在面向对象概念中,对象(Object )是类的实例(instanee )。对象与类的关系就像变量与 数据类型的关系一样。十二、写出生产者消费者模型的实现十三、用软件工程和Java来叙述购物车(shopping cart )系统实现十四、文件系统的几个类:FilelnputStream 、FileOutputStream 、FileReader、FileWriter 的区别十五、请写出Java API中最常用的五个包,并且各举两个类加以说明。十六、请问你在“电信运营支撑系统”中遇到了哪些问题?你是怎么解决的?做这个项目你最大的收获是什么?十七、请说出几个常用的异常类答:NullpointException(空指针异常)ClassNotFou ndExceptio n(类找不到异常)ClassCastExceptio n(类型转换异常)川 egalArgume ntExceptio n(非法参数异常)ArithmeticExcepti on(算术异常)NumberFormatExceptio n (数据格式异常)In dexOutOfBou ndsExceptio n(数组下标越界异常)III egalStateExceptio n(非法语句异常)十八、什么是进程和线程?两者的区别是什么?十九、请简要描述一下你做的ShoppingCart项目。层协议是什么?,default访问权限(可见性),default访问权限(可见性)二十、请问网络 7层协议,tcp/ip4 二、Java面向对象的四大特点 二十二、 public,private,protected 答:public :全局可见 protected :继承体系结构之间可见 default(或不写):同包可见private :本类可见。二十二、 public,private,protected 答:public :全局可见 protected :继承体系结构之间可见 default(或不写):同包可见private :本类可见。二十三、名词解释CRMCustomer Relationship Management,客户关系管理ERPEnterprise Resource Planning,企业资源规划OSSOperation Support System,运营支撑系统BSSBusiness Support System,数据定义语言BOSSBus in ess Operati on Support System,数据定义语言 OAOffice Automatization,办公自动化HTTPOOPSOAGUIDDLData Definition Language, 数据定义语言DMLData Manipulation Language,数据操作语言WYSIWYG所见即所得What You See is What You GetCMPCMTB2BC2CB2CIDEDOMClie nt/ServerCMMORMMISMVCMVd Model View Controller的简写。Model代表的是应用的业务逻辑 (通过JavaBean,EJB组件实现),View 是应用的表示面(由JSP页面产生),Controller是提供应用的处理过程控制(一般是一个Servlet ),通过这种设计模型把应用逻辑,处理过程和显示逻辑分成不同的组件实现。这些组件可以进行交互和重用。OLECORBACORBA标准是公共对象请求代理结构(Com mon Object Request Broker Architecture),由对象管理组织(Object Management Group,缩写为 OMG标准化。它的组成是接口定义语言(IDL),语言绑定(binding:也译为联编)和允许应用程序间互操作的协议。其目的为:用不同的程序设计语言书写在不同的进程中运行 为不同的操作系统开发。UMLUML标准建模语言,包含用例图,静态图(包括类图、对象图和包图),行为图,交互图(顺序图,合作图),实现图等。XMLCMMIJREJ2EEJ2EE是 Sun公 司提出 的多层(multi-diered), 分布式(distributed), 基于组件 (component-base)的企业级应用模型(enterprieseapplication model).在这样的一个应用系统中,可按照功能划分为不同的组件,这些组件又可在不同计算机上,并且处于相应的层次(tier) 中。所属层次包括客户层 (clietn tier) 组件,web层和组件,Business 层和组件, 企业信息系统(EIS)层。JDKAOP00ContainerW3CJMSDomai nPOJOJVMJNDIJTASOAPSimple Object Access Protocol,简单对象访问协议 WSDLJDOJDO是Java对象持久化的新的规范,为Java Data Object 的简称,也是一个用于存取某种数据仓库中的对象的标准化API。JDO提供了透明的对象存储,因此对开发人员来说,存储数据对象完全不需要额外的代码(如JDBC API的使用)。这些繁琐的例行工作已经转移到JDO产品提供商身上,使开发人员解脱出来,从而集中时间和精力在业务逻辑上。另外,JDO很灵活,因为它可以在任何数据底层上运行。JDBC只是面向关系数据库(RDBMSJD更通用,提供到任何数据底层的存储功能,比如关系数据库、文件、XML以及对象数据库(ODBM)等等,使得应用可移植性更强。TDDDAOIoCInversion of Control,控制反转RMIDNSInternet Domain Name System,因特网域名系统URLURI二十四、数据库连接池的工作机制二十五、互联网提供哪些服务?二十六、请写出JSP的几个隐含内置对象答:JSP中隐含内置对象名称类型注释和范围requestjavax.servlet.http.HttpServletRequestrequestresponsejavax.servlet.http.HttpServletResp onseresponsepagejavax.la ng.ObjectpageExcepti onjava .Ian g.ThrowablepagepageC on textjavax.servlet.jsp.PageC on textpagesessi onjavax.servlet.http.HttpSessi onsessi onapplicati onjavax.servlet.ServletC on textServletCo ntextoutOutputStreamconfigjavax.servlet.ServletC onfigServletCo nfigJSP共有以下9种基本内置组件(可与 ASP的6种内部组件相对应):request用户端请求,此请求会包含来自GET/POST青求的参数response网页传回用户端的回应page JSP网页本身excepti on针对错误网页,未捕捉的例外pageC on text网页的属性是在这里管理sessi on与请求有关的会话期application servlet 正在执行的内容out用来传送回应的输出configServlet 的构架部件二十七、请你谈谈SSH整合答:SSHStruts (表示层)+Spri ng (业务层)+Hibernate (持久层)Struts :Struts是一个表示层框架,主要作用是界面展示,接收请求,分发请求。在MVC框架中,Struts属于VC层次,负责界面表现,负责MVC关系的分发。(View :沿用JSP, HTTP Form, Tag, Resourse ; Controller: ActionServlet, struts-config.xml ,Action )Hibernate :Hibernate是一个持久层框架,它只负责与关系数据库的操作。Spring :Spring是一个业务层框架,是一个整合的框架,能够很好地黏合表示层与持久层。二十八、应用服务器与Web Server的区别二十九、Java Servlet API 中 forward。 与 redirect() 的区别答:前者仅是容器中控制权的转向,在客户端浏览器地址栏中不会显示出转向后的地址;后者则是完全的跳转,浏览器将会得到跳转的地址,并重新发送请求链接。这样,从浏览器的地址 栏中可以看到跳转后的链接地址。所以,前者更加高效,在前者可以满足需要时,尽量使用forward。方法,并且,这样也有助于隐藏实际的链接。在有些情况下,比如,需要跳转到 一个其它服务器上的资源,则必须使用sen dRedirect()方法。三十、写一个简单的C/S结构程序,Java的通信编程,编程题(或问答),用JAVA SOCKET编程,读服务器几个字符,再写入本地显示?答:Server端程序:package test;import java .n et.*;import java.io.*;public class Serverprivate ServerSocket ss;private Socket socket;private BufferedReader in;private Prin tWriter out;public Server()tryss=new ServerSocket(IOOOO);while(true)socket = ss.accept();String RemotelP = socket.getl netAddress().getHostAddress();Stri ng RemotePort = :+socket.getLocalPort();System.out.pri ntln(A clie nt come in !IP:+RemotelP+RemotePort); in = new BufferedReader( newIn putStreamReader(socket.get In putStream();Stri ng line = in .readLi ne();System.out.pri ntln (Cle int send is : + lin e);out = new Prin tWriter(socket.getOutputStream(),true);out.pri ntl n(Your Message Received!);out.close();in .close();socket.close();catch (IOExcepti on e)out.pri ntln (wro ng);public static void main(String args)new Server();Client端程序:package test;import java.io.*;import java .n et.*;public class Clie ntSocket socket;BufferedReader in;Prin tWriter out;public Clie nt()trySystem.out.pri ntl n( Try to Conn ect to 127.0.0.1:10000);socket = new Socket(127.0.0.1,10000);System.out.pri ntl n(The Server Conn ected!);System.out.pri ntln (Please en ter some Character:);BufferedReader line = new BufferedReader( newIn putStreamReader(System.i n);out = new Prin tWriter(socket.getOutputStream(),true);out.pri ntln (l in e.readL in e();in = new BufferedReader( new In putStreamReader(socket.getl nputStream();System.out.pri ntl n(i n. readL in e();out.close();in .close();socket.close();catch(IOExcepti on e)out.pri ntln(Wron g);public static void main(String args)new Clie nt();版权申明本文部分内容,包括文字、图片、以及设计等在网上搜集整理。版权为潘宏亮个人所有This article in eludes someparts, in cludi ng text, pictures, and desig n. Copyright is Pan Hon glia ngs pers onal own ership.用户可将本文的内容或服务用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律 的规定,不得侵犯本网站及相关权利人的合法权利。除此以外,将本 文任何内容或服务用于其他用途时,须征得本人及相关权利人的书面 许可,并支付报酬。Users may use the contents or services of this articlefor pers onal study, research or appreciati on, and other non-commercial or non-profit purposes, but at the same time, they shall abide by the provisi ons of copyright law and other releva nt laws, and shall n ot infringe upon the legitimate rights of this website and its releva nt obligees. In additi on, when any content or service of this article is used for other purposes, writte n permissi on and remun erati on shall be obta ined from the pers on concerned and the releva nt obligee.转载或引用本文内容必须是以新闻性或资料性公共免费信息为 使用目的的合理、善意引用,不得对本文内容原意进行曲解、修改, 并自负版权等法律责任。Reproducti on or quotatio n of the content of this articlemust be reas on able and good-faithcitati onfor the use of n ewsor in formative public free in formatio n. It shall notmisinterpret or modify the original intention of the contentof this article, and shall bear legal liability such as copyright.
展开阅读全文