JAVAJ2EE经典面试问题.docx
- 文档编号:7385017
- 上传时间:2023-01-23
- 格式:DOCX
- 页数:19
- 大小:29.56KB
JAVAJ2EE经典面试问题.docx
《JAVAJ2EE经典面试问题.docx》由会员分享,可在线阅读,更多相关《JAVAJ2EE经典面试问题.docx(19页珍藏版)》请在冰豆网上搜索。
JAVAJ2EE经典面试问题
Web面试问题
1.css和div开发的优势?
1)显示和内容实现了分离
2)有利于搜索引擎搜索
3)有利于维护和程序的扩展。
2.谈谈页面间的参数传递有哪些方式?
1)requestrequest.setAttribute();
2)sessionsession.setAttriubte();
3) forward> paramname= value=/> forward> 4) useBeanid=class=scope=request,session> 5)request.getRequestDispatcher(“1.jsp? name=xxxx”).forward(request,response) 3.hidden表单域有什么作用? 1)多个表单的区分 2)多个提交按钮 4.jsp有哪些内置对象? page pageContext===JspPageContext session===HttpSession request===ServletRequest response===ServletResponse application==servletContext out===JspWriter config====servletConfig exception===jspException 5.request的作用有哪些? 1)获取客户端的参数信息request.getParameter 2)用于内部转发request.getRequestDispather().forward() 3)可以作为容器使用,保存在请求之间的信息request.getAttribute() 4)可以获取请求头信息request.getHeader(); 6.session有什么作用。 1)可以作为容器,在一次会话之间保存对象信息。 2)因为http协议是无状态的协议,但是我们需要保存客户在多个请求之间的状态信息的时候,这个时候我们需要session来维持客户端的状态。 7.application有什么作用。 1)可以作为容器。 保存在application的信息可以提供给所有的jsp和servlet使用。 8.在jsp中怎样操作page作用域 pageContext.setAttribute(“age”,age,pageContext.Page_SCOPE); 9.jsp有哪些动作? 作用分别是什么? forward/>转发到另外一个页面 useBean/>设置javabean include>动态包含 setProperty>设置javabean属性: setXXX() getProperty>得到javabean属性: getXXX(); plugin>引用插件 params/>设置转发参数 param/> 10.javaservletapi中forward()与redirect()的区别? 1)forward内部转发,客户端向服务器发送一次请求,redirect()是客户端向服务器发送了2次请求。 2)forward是request发起的。 Redirect()是response对象发起的。 Rediect()方法可以跨越不同的工程之间。 Forward只能在一个工程中使用。 3)forward不会导致地址栏改变内容。 Rediect()会导致地址栏改变。 11.class.forName的作用? 为什么要用? 1)Class.forName()表示加载一个类。 使用这种方式用于反射方式创建对象。 2)Objeco=Class.forName().newInstance(); 12.在oracle大数据量下的分页解决方法? 1)SELECT*FROM ( SELECTA.*,ROWNUMRN FROM(SELECT*FROMTABLE_NAME)A WHEREROWNUM<=40 ) WHERERN>=21 mySQl的分页是怎么实现的? Selectf_id,f_namefromt_userlimit5,10 13.cookie被禁止后怎样使用session? 1)如果客户端允许cookie,那么服务器使用cookie来维持会话 2)如果客户端不允许cookie,那么服务器使用url重写来维持会话。 Response.encodeURL(“2.jsp”); 14.项目开发经历了哪几个阶段? 15.谈谈项目的体系统架构: 客户层,表示层,业务层,数据层? 16.J2EE规范中的组件技术在项目中用到了哪些? 1)servlet 2)jsp 3)jdbc 4)xml 5)jndi 17.TCP/IP通讯和UDP通迅的区别? 1)tcp通讯面向连接,经历3次握手,udp面向无连接 2)tcp是可靠的,udp不可靠 3)tcp使用的流套接字,upd使用的自寻址套接字。 Udp发送的信息都需要封装成为一个个的数据报文。 18.浏览器和WEB服务器是用什么协议通迅的? HTTP: 这是应用层,用于将在浏览器中输入的请求数据封装成为web服务器能够理解的格式,以便于底层tcp传输。 TCP: 底层是使用TCP建立与web服务器之间的连接。 19.网络通讯中,端口有什么含义。 端口的取值范围? 端口用于区分基于TCP/IP通讯进程(通讯应用程序)。 每个基于TCP/IP应用程序都会向操作系统申请注册一个服务,这个服务用端口来表示。 本质上来说,端口就是一段内存中的缓冲区。 我们用户程序使用的端口号: 1024---65535这个范围,0—1023是系统保留。 20.说出3个常见协议的默认端口。 http----80,ftp---21pop3: 110smtp---25 21.socket是什么,它有什么作用? Socket是通讯的端点,它屏蔽了底层的通信细节。 我们只需要面对socket就可以实现客户端和服务器之间的通信。 至于底层如何实现信息的传送,我们无需关系。 一种基于流的套接字: tcp通讯(Socekt,ServerSocket) 一种基于数据报文的套接字(自寻址): UDP通讯。 (DatagramSocket,DatagramPacket) 22.TCP/IP通讯的基本步骤是什么? 服务器: 1)向操作系统注服务,绑定一个端口。 这个端口代表这个服务。 ServerSocketsserverSocket=newServerSocket(9000); 2)等待客户端的连接。 serverSocket.accept();取出一个客户端的连接socket来处理 3)从socket对象中取出outputstream,inputsteram和客户端进行交互。 客户端: 1)创建一个socket对象。 Socketsocket=newSocket(host,port);创建成功,表示与服务器建立了连接。 (经过了3次握手! ) 2)通过socket对象,取出outputstream,inputstream输入输出流来和服务器进行信息的交互。 23.UDP通讯的基本步骤是什么? 服务器端: 1)创建一个DatagramSocket对象,然后讲这个对象和一个端口绑定。 DatagramSocketsocket=newDatagramSocket(port); 2)创建一个数据报对象DatagrampPacketp=newDatagramPacket(buffer,bufferSize); 3)将数据以数据报的形式接收: socket.receiver(p);如果客户端没有数据报文发送过来,那么服务器会一直阻塞在这个语句位置。 但是一旦收到数据报文,那么程序会往下执行。 因此,如果要接收很多数据报文,我们讲使用循环。 客户端: 1)创建一个DatagramSocket对象,无需和具体的端口绑定 2)发送数据的时候,将数据封装在数据报文对象中,因此,我要先创建一个DatagramPacket对象。 而且还应该封装ip,port端口。 3)通过datagramSocket对象发送数据: socket.send(p); 24.JDBC访问数据库的基本步骤是什么? 1)加载驱动Class.forName(“com.mysql.jdbc.Driver”); 2)通过驱动程序管理器DriverManager获取connection对象 3)通过连接对象connection对象获取会话。 4)通过会话执行查询或者增删改差 5)关闭资源。 25.说说preparedStatement和Statement的区别 1)preparedStatement是一个预编译会话,不再需要编译相同的sql语句,所以可以提高处理速度。 2)可以防范sql注入攻击。 26.说说事务的概念,在JDBC编程中处理事务的步骤。 事务是数据库不可分割的一系列原子属性操作,是一组不可分割的单元。 事务具有原子性,一致性,隔离性,持久性。 27.数据库连接池的原理。 为什么要使用连接池。 预先获取一定数量的连接对象,放在一个数据结构中(List,Map,Array)保存起来,当需要连接对象的时候,就从数据结构中取出一个连接对象;当使用完毕后,将连接对象放回。 这样达到了连接对象的复用效果,也提高了访问数据库的效率和性能! 28.谈谈DAO模式的原理的作用。 Dao是一种设计模式。 包括3个部分: 1)dao接口 2)dao接口的实现类,也就是数据访问对象dataaccessobject 3)po对象,也就是持久化对象,它和数据表相对应。 使用Dao设计模式实现了持久层和业务逻辑的分离。 有利于维护和程序扩展。 29.servlet和jsp有什么关系? 1)servlet,jsp是服务器的组件。 Servlet和jsp都是j2ee规范中定义的。 Jsp规范后于servlet规范。 2)jsp是html文本中嵌入了java代码,成为一种脚本。 必须经过jsp引擎转换和编译后才能成为一个servlet类。 但本质上来说,jsp就是servlet。 3)在mvc的架构中,jsp只充当了数据的显示和客户数据的输入;而servlet充当了控制器的作用。 4)客户端访问一个jsp文件资源的时候,我们无需在web.xml部署描述文件中配置,web容器直接查找对应路径下jsp文件。 然后转换和编译执行。 但是如果客户端访问一个servlet资源的时候,需要在web.xml中配置这个资源。 30.jsp是如何被容器调用和执行的? 1)当客户端第一次请求一个jsp资源的时候,jsp引擎会查找这个jsp文件并且讲它转换成为一个java文件,然后编译成为一个servlet类 2)Web容器实例化这个servlet 3)Web容器调用init()方法。 在这个init方法中,调用针对jsp的JspInit()方法。 4)Web容器调用service()方法。 在service()方法中,调用_jspService()方法。 31.编写一个servlet的步骤。 1)新写一个类,然后继承HttpServlet. 2)重写doGet()或者doPost()方法。 3)在web.xml部署描述文件中定义servlet类名称以及映射路径。 32.doGet和doPost方法各有什么作用? 1)当客户端以get方式提交的时候,service()方法调用doGet()方法处理 2)当客户端以post方式提交的时候,service()方法调用doPost()方法处理 33.为什么要为servlet配置URL映射? 1)为servlet配置URL映射,就把servlet的真正的物理路径隐藏了起来,这样客户端看到的是servlet的逻辑路径,这增强了安全性。 2)如果servlet发生了物理位置上的变化,那么客户端不会发生代码上变化,我们只需要改变web.xml就行了,这增强了程序的可维护性。 3)Web容器根据逻辑路径找到物理路径。 request.getRequestURi(); 34.解释web.xml中怎样配置一个servlet? 35.servlet的类架构是什么样的。 putlicinterfaceServlet publicabstractclassGenericServletimplementsServlet publicabstractclassHttpServerlextendsGenericServlet 36.谈谈servlet的生命周期? 1)当第一次请求到来的时候,web容器实例化一个servlet对象 2)Web容器调用servlet对象init()方法。 3)Web容器创建或者分配一个线程,然后将servlet对象以及request,response对象传入这个线程中。 4)Web容器调用对象的service()方法。 然后根据客户端不同的请求方式,调用doGet(),doPost()方法。 5)当web容器关闭的时候,web容器会调用servlet对象的destroy()方法。 37.servlet是线程安全的吗? 为什么? 不是,因为servlet是一个多线程机制。 多线程就会涉及对共享资源的访问。 也就涉及了安全。 38.你是如何处理servlet线程安全问题的? 解决线程安全的问题,可以有3种方法: 1)在编写servlet的时候,实现SingleThreadModel这个接口。 Servlet变成了单线程机制。 2)在涉及对共享资源访问的时候,使用synchronized同步加锁,实现对共享资源的访问。 3)尽量不在servlet中定义成员变量,而使用局部变量。 这3个方法中,我们最好使用第三种方法。 这样线程安全并且性能最高。 39.如何得到客户端的请求参数? request.getParameter(“email”);====String request.getParameterValues(“loves”);===String[] request.getParameterMap();====返回所有的键值对。 40.request.getParameter和request.getParameterValues的区别,它们的返回值是什么类型? request.getParameter(“email”);====String request.getParameterValues(“loves”);===String[] 41.response对象的作用? 1)从response对象中可以获取输出流对象,从而我们可以向客户端输出信息。 2)可以使用它来实现重定向。 response.sendRedirect(); 3)可以设置响应头信息。 告诉浏览器相关的内容,比如cookie,内容类型,缓存。 。 。 。 。 。 4)可以使用response对象实现url重写。 42.request对象的作用范围是什么? 作用鱼范围是一次请求响应完成,也可以说只要服务器向客户端输出内容,request对象就会被销毁。 43.session对象的作用范围是什么 存在于一次会话之间。 表象上说,就是打开一个浏览器窗口,也就意味着开始了一次会话。 当关闭浏览器的时候,也就意味着关闭了会话。 实际上,只有会话超时,那么服务器才会销毁session对象。 一次会话可以跨越多个请求。 44.application对象的作用范围是什么。 一个工程或者叫做项目启动以后,application对象就会一直存在。 当web容器关闭的时候,application才会被销毁。 45.session对象是什么时候产生的,什么时候销毁的? a)从表面现象来说,我们打开一个浏览器窗口,就开始了一次新的会话。 b)我请求静态页面,不能开始一次会话。 c)我请求一个servlet的资源的时候呢? 会话能否产生? 对于servlet来说,必须通过request.getSession()或者request.getSession(true)的方式显示创建。 对于服务器来说: request.getSession(),后面做了哪些工作呢: 1.服务器产生一个唯一的sessionId: 2.服务器创建一个cookie,并讲JSESSIONID作为键和值放置在cookie中。 3.服务器将cookie放置在响应头中,随着其他的响应一起发往客户端。 这个会话cookie保存在浏览器的内存中。 4.客户端通过同一个浏览器再次向服务器发起请求的时候,会将保存在浏览器内存中的会话cookie和请求参数一起发往服务器。 d)对于请求的是jsp文件来说呢? 会话自动创建。 e)从表面现象来说,我关闭一个浏览器就是关闭了一次会话。 但是从本质山过来说,关闭浏览器并没有真正销毁会话。 会话被销毁的几种方式: 1)会话超时: httpSession.setMaxInactiveInternal(30);这里的30表示s 2)手工方式让会话失效: httpSession.invalidate(); f)服务器通过唯一的jsessionid来标示同一个会话的。 它是通过cookie和url重写来维持会话的。 46.session的实现原理是什么? 因为http协议是一个无状态的协议,所以为了维护和保存客户端的状态,使用session来完成这个任务。 在客户端允许cookie请求下,通过cookie来装载sessionid,并通过cookie在客户端和服务器端传递。 在客户端不允许cookie的情况下,通过url重写来传递sessionid,从而维持会话.会话cookie保存在浏览器内存中。 47.项目中用到了session对象吗,在哪里用到的? 48.session和cookie有什么区别。 1)session是在服务器上。 Cookie保存在客户端。 会话cookie保存在客户端浏览器上。 2)session作为容器使用,可以保存数据。 但是,当会话结束的时候,session中保存的数据会一同销毁。 Cookie也可以保存数据,如果设置了保存的最大时间,那么数据可以保存在客户端硬盘上。 3)session依赖于cookie维护会话。 (当客户端允许cookie的时候) 49..Http协议是无状态的,服务器是用什么方式为一个客户端保存状态的? 服务器通过session来为客户端保存状态的。 50.servlet或jsp能同时响应多个客户端的请求吗? 是通过什么方式做到的? 可以,因为servlet和jsp允许在多线程中。 每次客户端请求到来的时候,web服务器都会创建或者分配一个线程来处理这个请求。 并将servlet或者jsp对象,request,response对象传入线程中。 51.请简述servlet多线程的实现方式? 每次客户端请求到来,web容器都会创建或者分配一个线程来处理这个请求,这样就实现了servlet的多线程机制。 52.在servlet中定义成员变量(全局变量),有线程安全问题吗? 如何处理? 有线程安全,尽量使用局部变量。 53.请求转发和重定向的区别。 1)请求转发客户端只向服务器发出了一次请求。 而重定向客户端向服务器发出了2次请求。 2)请求转发是request对象发起的。 重定向是response对象发起的。 3)请求转发是在一个工程或者项目之中,而重定向可以在不同的工程之间和不同的机器之间。 54.JSP中动态包含和静态包含的区别。 1)静态包含是在转换成为java文件时候,把被包含文件包含进来,然后统一编译。 动态包含是包含文件,被包含文件分别编译。 在执行的时候调用. 2)静态包含的文件名称不可以是变量。 动态包含的文件名称可以是变量。 3)静态包含的文件不能够包含html,body…,动态包含可以的。 55.谈谈MVC设计模式的概念,使用MVC的好处。 1)v是视图层,由jsp或者其他的视图来完成,接收用户的输入,并显示业务数据。 2)c作为控制去,由servlet来完成,接收客户端传递的参数,封装对象,调用模式层完成业务逻辑,然后根据业务逻辑的结果,实现转发。 3)m是模式层,也就是我们的业务层。 这里实现的是业务逻辑。 4)使用mvc最大的好处是,实现了显示和业务逻辑的分离。 56.模式1和模式2和区别。 模式1: jsp+javabean来实现的。 在javabean中包含太多的业务逻辑。 和jsp页面完全耦合。 这个javabean是广义的javabean.而不是标准的javabean. 模式2: 现在的mvc模式。 57.过滤器的原理,在项目中哪些地方用到了过滤器。 过滤器是请求到达servlet之前筑起的一道防火墙,能够过滤请求中信息并进行拦截。 同事能够对返回的流信息进行压缩,编码,改变流中信息。 对权限的处理,字符编码格式的处理都会用到过滤器。 58.为什么要使用ajax技术? 使用ajax技术,可以局部刷新页面,而不是全部刷新页面,给用户带来了更好的体验。 因为它使用的是异步请求方式。 59.ajax的基本原理是什么。 Aynchoronized异步,javascript+xml。 使用XMLHTTPREQUEST对象来向服务器异步发起请求的。 请求的结果也通过这个对象接收。 60.使用自定义标记的好处? 代替jsp页面上嵌入的java代码。 使用了类似html的标记来代替。 有利于程序的维护。 61.编写自定义标记有哪几个步骤。 1)编写一个类,继承TagSupport或者BodyTagSupport类。 2)编写标签库描述文件tld。 并且把这个tld后缀的文件放置在web-inf下。 3)在jsp文件中使用taglib指令引入标签库。 4)在jsp文件中使用自定义标签。 62.自定义标记中,tld文件的作用是什么? 在tld文件中定义了标签处理类的名称,标签体的取值,属性的取值。 还定义了标签库的uri位置。 这样,在web容器加载tld文件后,就可以通过uri找到相应的标签库以及标签库中的标签处理类。 63.如何在jsp中使用自定义标记? 1)使用taglib指令引入自定义标签库,并定义前缀 2)在页面中通过前缀使用标签。 64.jsp和javascript的区别? 1)jsp运行在服务器端,javascript运行在客户端浏览器。 2)jsp的载体是web容器。 Javascript的载体是浏览器。 3)jsp脚本中可以嵌入javascript代码。 65.你的项目中建有多少张表,字段最多的表是哪一张? 每张表里都有些什么字段? 66.说说你项目开发的流程? 67.说说你所开发模块的业务流程,业务是什么? 68.谈谈监听器的原理、配置
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- JAVAJ2EE 经典 面试 问题