整理过的java面试题

1.    css和div 开发的优势?
优点:1)div+css,这个布局中,div承载的是内容,而css承载的是样式。内容和样式的分离。
2)搜索引擎亲和力(快速找到需要的数据,而不是像在table中一层层的查找) 重构页面的方便性(换皮肤如blog)
   缺点:开发效率低
2.    谈谈页面间的参数传递有哪些方式 ?
通过请求作用域request,session,通过内部转发携带参数,在jsp页面中使用<jsp:forward /> <jsp:param />
3.    hidden表单域有什么作用?
    用来记录一些用户不需要关心,但你程序需要关心的东西比如某条数据的主键值.暂时隐藏某个表单字段可以让你的表单变的简洁
4.    jsp有哪些内置对象?
Page,request,session,application,exception,config,pageContext,out,
5.    request的作用有哪些?
获取客户端传递的参数值
获取客户端请求头信息
获取会话
获取转发对象
获取servletContext对象
6.    session有什么作用。
Session对象类似于一个容器,可以存放任何对象,以供不同页面间共享数据
Session是记录客户端的状态信息,它是针对http协议的无状态连接的特性而提供的解决方案。
7.     application有什么作用。
取得保存的一些全局性的对象信息。
8.    在jsp中怎样操作page作用域
特定于 JSP 的一个类型,代表当前的 JSP 页面。pageContext.setAttribute();
9.    jsp有哪些动作?作用分别是什么?
<jsp:include /> <jsp:forward /> <jsp:usebean /> <jsp:setProperty /> <jsp:getProperty />
<jsp:param />
10.    java servlet api中forward() 与redirect()的区别?
1.    forward客户端请求服务器一次,redirect请求服务器两次
2.    forward由request对象发出,而redirect由response对象发起
3.      对于页面跳转来说,forward请求在URL地址栏会显示SERVLET的地址,而redirect显示的是重定向后页面的地址
4。     由于redirect()是2次请求,因此不能使用request作用域来保存信息

1.    class.forname的作用?为什么要用?
返回与给定字符串名称相关联类或接口的Class对象
 A a = (A)Class.forName("pacage.A").newInstance();这和 A a =new A();是一样的效果。
2.    在oracle大数据量下的分页解决方法?
String sql = "select * from " + (select * ,rownum rid from (select * from XXX order by id desc)
where rid<=" + pageSize*pageNumber + ") as t" + "where t>" + pageSize*(pageNumber -1);
3.    mySQl的分页是怎么实现的?
String sql = "select * from XXX order by id limit " + pageSize * (pageNumber - 1) + "," + pageSize;
       例子:(取数据库中21-30条的记录,)
       select * from student order by id limit 20,10;
4.    cookie被禁止后怎样使用session?
经常被使用的一种技术叫做URL重写,就是把session id直接附加在URL路径的后面。
5.    项目开发经历了哪几个阶段?
需求分析、概要设计、详细设计、编码、测试、软件交付、验收、维护
6.    谈谈项目的体系统架构:(客户层,表示层)web层,业务层,数据层?
7.    J2EE规范中的组件技术在项目中用到了哪些?
8.    TCP/IP通讯和UDP通迅的区别?
TCP/IP是面向连接的,UDP是非面向连接的。TCP/IP管发管到UDP管发不管到。
TCP/IP偏重的是点对点的通信,UDP可以使用组播实现一对多
TCP/IP是通过创建Socket对象进行连接,UDP是指本机上创建DatagramSocket对象
9.    浏览器和WEB服务器是用什么协议通迅的?HTTP
10.    网络通讯中,端口有什么含义。端口的取值范围?

21.    说出3个常见协议的默认端口
FTP 21控制连接端口    20数据连接端口
TELNET 23
DNS 53
HTTP 80
SMTP 25
22.    socket是什么,它有什么作用?
socket是TCP/IP协议的封装,是一类编程接口,网络上的两个程序基本上都是通过socket进行通信的,socket又称套接字,应用程序之间通常使用socket编程接口进行网络通信的,socket是建立网络通信使用的,即开发各种网络应用的,比如QQ,他的网络通讯就是通过socket来写的。
23.    TCP/IP通讯的基本步骤是什么?
TCP/IP通信过程,简单为,三次建立,四次断开。具体如下:

三次建立:

主机A发送SYN(seq=x)报文给主机B,主机A进入SYN_SEND状态 ;

主机B收到SYN报文,回应一个SYN(seq=y)ACK(ACK=x+1)报文,主机B进入SYN_RECV状态;

主机A收到主机B的SYN报文,回应一个ACK(ACK=y+1)报文,主机A进入established状态。

三次握手完成,主机A和主机B已经建立连接。

四次断开:

某个应用进程先调用close,称该端执行“主动关闭”(active close)。该端的TCP发送一个FIN分节,表示数据发送完毕;

接收到这个FIN的对端执行“被动关闭”(passive close),这个FIN由TCP确认。

一段时间的等待后,接收到这个文件结束符的应用进程将调用close关闭它的套接字,所以它的TCP也发送一个FIN。

接收到这个最终FIN的原发送端TCP(主动要求关闭连接的那一端)确认这个FIN。

因为每个方向都需要一个FIN和ACK,所以断开需要4个次连接
24.    UDP通讯的基本步骤是什么?
25.    JDBC访问数据库的基本步骤是什么(手写)?
加载SQL驱动        Class.forName("com.mysql.jdbc.Driver");
使用DriverManager获取数据库连接        Connection conn = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/javatrain", "123", "123456");
使用Connection来创建一个Statement对象用来执行SQL语句        Statement stmt = conn.createStatement();
执行sql语句        ResultSet rs=stmt.executeQuery("select * from demo1");
操作结果集
回收数据库资源
26.    说说preparedStatement和Statement的区别
执行的sql语句格式不同:
     String sql = "select * from users where  username= '"+username+"' and userpwd='"+userpwd+"'";  
    stmt = conn.createStatement();  
    rs = stmt.executeQuery(sql);
*********************************************************************************************  
     String sql = "select * from users where  username=? and userpwd=?";  
    pstmt = conn.prepareStatement(sql);  
    pstmt.setString(1, username);  
    pstmt.setString(2, userpwd);  
    rs = pstmt.executeQuery();
PreparedStatement接口是statement接口的子接口,他继承了statement接口的所有功能,提高了代码的灵活性和执行效率,安全。
27.    说说事务的概念,在JDBC编程中处理事务的步骤。
事务是作为单个逻辑工作单元执行的一系列操作
一个逻辑单元必须有四个属性称为原子性、一致性、隔离型、持久性,只有这样才能称为一个事务
事务处理步骤:
conn.setAutoComit(false)设置提交方式为手工提交
conn.commit()提交事务
出现异常,回滚conn.rollback()
28.    数据库连接池的原理。为什么要使用连接池。
数据库连接池在初始化时将创建一定数量的数据库连接放到连接池中,这些数据库连接的数量是由最小数据库连接数制约。无论这些数据库连接是否被使用,连接池都将一直保证至少拥有这么多的连接数量。连接池的最大数据库连接数量限定了这个连接池能占有的最大连接数,当应用程序向连接池请求的连接数超过最大连接数量时,这些请求将被加入到等待队列中。
连接池基本的思想是在系统初始化的时候,将数据库连接作为对象存储在内存中,当用户需要访问数据库时,并非建立一个新的连接,而是从连接池中取出一个已建立的空闲连接对象。使用完毕后,用户也并非将连接关闭,而是将连接放回连接池中,以供下一个请求访问使用。而连接的建立、断开都由连接池自身来管理。同时,还可以通过设置连接池的参数来控制连接池中的初始连接数、连接的上下限数以及每个连接的最大使用次数、最大空闲时间等等。也可以通过其自身的管理机制来监视数据库连接的数量、使用情况等。
29.    servlet和jsp有什么关系?
Servlet是一个特殊的Java程序,它运行于服务器的JVM中,能够依靠服务器的支持向浏览器提供显示内容。  

JSP本质上是Servlet的一种简易形式, JSP会被服务器处理成一个类似于Servlet的Java程序,可以简化页面内容的生成。

Servlet和JSP最主要的不同点在于,Servlet 的应用逻辑是在Java 文件中,并且完全从表示层中的HTML分离开来。而JSP的情况是Java和HTML可以组合成一个扩展名为.jsp 的文件(有人说,Servlet就是在Java中写HTML,而JSP就是在HTML中写Java代码,当然,这个说法还是很片面的)。

JSP侧重于视图,Servlet更侧重于控制逻辑,在MVC架构模式中,JSP适合充当视图(view)而Servlet适合充当控制器(controller)。
30.    编写一个servlet的步骤。
1.编写一个类a.继承HttpServlet    b.重写doGet和doPost方法
2.编写配置文件(web.xml)a.注册servlet     b.绑定路径
3.访问http://主机:端口号/项目名/路径

1.    网络通讯中,端口有什么含义。端口的取值范围?
端口在网络通讯中是指TCP/IP协议中的端口,是逻辑意义上的端口,如果一个IP地址是一个房间,那么端口就是进入这个房间的门,一个IP地址的端口可以有65536个,端口是通过端口号来标记的,端口号只有整数,端口号的范围是0-65535
2.    jsp是如何被容器调用和执行的?
1)用户请求JSP页面(HTTP请求)
2)web server中的servlet容器发现URL中有JSP后缀,就调用JSP容器来处理
3)如果此页面是第一个被请求,JSP容器要定位JSP页面文件并解释他
解释的过程包括:将JSP源文件处理成servlet代码(java代码),以及编译java文件生成servlet的call文件。
说明:JSP解释器生成的servlet类是实现了java.servlet.jsp.HttpJspPate接口的类的一个子类,这个servlet类叫做页面实现类。
3.    编写一个servlet的步骤。
1)编写一个类:a.继承HttpServlet     b.重写doGet或者doPost方法
2)编写配置文件(web.xml)a.注册servlet    b.绑定路经
3)访问http://主机:端口号/项目名/路径
4.    为什么要为servlet配置URL映射
由于客户端是通过URL地址访问web服务器中的资源,所以servlet程序若想被外界访问,必须把servlet程序映射到一个URL地址上,这个工作在web.xml中用<serlvet>元素和<servlet-mapping>元素完成。<servlet>元素用于注册servlet,他包含有两个主要的子元素<servlet-name><servlet-class>分别用于设置servlet的注册名称和servlet的完整类名,一个<servlet-mapping>元素用于映射一个已注册的servlet的一个对外访问路径,他包含两个子元素<servlet-name><url-patter>分别用于指定servlet的注册名称和servlet的对外访问路径。
5.    谈谈servlet的生命周期
加载并实例化    初始化    服务    销毁
容器启动的时候,会加载servlet的class,并New处这个对象,然后,当用户请求这个servlet的时候,容器回调用Init方法初始化servlet,这个也是整个生命周期中只会调用一次的方法,然后,会调用service这个方法,由这个方法调用doGet或doPost方法来响应用户,然后,容器在可用资源紧张或是长期没有对servlet发出请求的情况下,会销毁这个servlet。

1.HttpservletResponse的sendError方法的作用
*sendError(int sc):使用指定的状态码并清空缓冲,发送一个错误响应至客户端。如果响应已经被提交,这个方法会抛出
IllegalStateException。使用这个方法后,响应则应该被认为已被提交,且不应该再被进行写操作了。
*sendError(int sc, String msg):使用指定的状态码发送一个错误响应至客户端。服务器默认会创建一个HTML格式的服务错误页面作为响应结果,其中包含参数msg指定的文本信息,这个HTML页面的内容类型为“text/html”,保留cookies和其他未修改的响应头信息。
如果一个对应于传入的错误码的错误页面已经在web.xml中声明,那么这个声明的错误页面将会优先于建议的msg参数服务于客户端。
(ps:相比较上面的方法,我更倾向于前者。使用上面的方法,可以通过定制不同状态的响应结果显示于客户端,我们应该不想让客户端看到服务器创建出的简单粗暴的页面吧?)
2.什么情况下使用URL重写
URL 重写是拦截客户端传入 Web 请求URL并自动将其定向到到规则指定的 URL 的过程。比如浏览器发来请求
http://blog.mocoder.com/hello.html ,服务器自动将这个请求中定向为http://blog.mocoder.com/test.do?method=hello.
URL重写的好处:
    搜索引擎比较喜欢.html,.htm的,因为他们是静态的更容易让引擎了解你的内容
    URL能做到以不变应万变
    防止某些黑客恶意攻击
    方便访问者使用
3.doGet和doPost在什么时候调用?区别?
在使用表单提交数据到服务器的时候有两张方式可供选择,一个是post一个是get,可在<form>中的method属性中指定提交的方式,如果不知道method方式,默认该属性为get方式。
    通过get方式提交的数据有大小的限制,通常在1024字节左右,post没有数据大小限制
    通过get传递数据,实际上是将传递的数据按照key,value的方式跟在url的后面来达到传送的目的的,post传递数据是通过http请求的附件进行的,在URL中并没有明文显示.
    通过get提交的数据安全性不高,post方式更加安全。
4.response对象的作用
Response对象用于动态响应客户端请示,控制发送给用户信息,并将动态生成响应。Response对象提供了一个数据集合cookie,它用于在客户端写入cookie值,若指定的cookie不存在,则创建他,若存在,则将自动进行更新,结果返回给客户端浏览器。
5.jsp中import指令的作用
JSP中三大指令page指令、include指令、taglib指令
import是page指令中的属性,就是用来导包的

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值