JavaWeb开发比较重要的面试题
1. 编码转换:怎样将GB2312编码的字符串转换为ISO-8859-1编码的字符串?
答:示例代码如下:
String s1=”你好”;
String s2=new String(s1.getBytes(“GB2312”),”ISO-8859-1”);
2. (基础)写一个函数,要求输入一个字符串和一个字符长度,对该字符串进行分隔。
答:函数代码如下:
public String[] paras(String str,int chars){
Int n = (str.length()+chars-1)/chars;
String ret[]=new String[n];
for(int i=0;i<n;i++){
If(i < n-1){
ret[i] = str.substring(i*chars,(i+1)*chars);
}else{
ret[i] = str.substring(i*chars);
}
}
return ret;
}
3. 写一个函数,2个参数,1个字符串,1个字节数,返回截取的字符串,要求字符串中的中文不能出现乱码:(“我ABC”,4)应该截为“我AB”,输出(“我ABC汉DEF”,6)应该输出为“我ABC”而不是“我ABC+汉的半个”。[基础]
答:代码如下:
Public String subString(String str,int subBytes){
int bytes=0;//用于存储字符串的总字节数
for(int i=0;i < str.length();i++){
if(bytes == subBytes){
return str.substring(0,i);
}
Char c str.CharAt(i);
If(c < 256){
bytes+=1;//英文字符的字节数看作1
}else{
bytes += 2;//中文字符的字节数看作2
If(bytes - subBytes == 1){
return str.substring(0,i);
}
}
}
return str;
}
4. List,Set,Map是否继承自Collection接口?【基础】
答:List,Set是;Map不是。
5. jsp和servlet的区别、共同点、各自应用的范围?
答:jsp是Servlet技术的扩展,本质上就是Servlet的简易方式。JSP编译后是“类servlet”。Servlet和JSP最主要的不同点在于,Servlet的应用逻辑是在Java文件中,并且完全从表示层的HTML里分离出来。而JSP的情况是Java和HTML可以组合成一个扩展名为.jsp的文件。JSP侧重于视图,Servlet主要用于控制逻辑。在struts框架中,JSP位于MVC设计模式的视图层,而Servlet位于控制层。
6. cookie和session的作用、区别、应用范围,session的工作原理??
Cookie:主要用在保存客户端,其值在客户端与服务器之间传送,不安全,存储的数据量有限。
Session:保存在服务器端,每一个session在服务器端有一个sessionID作一个标识。存储的数据量大,安全性高。占用服务端的内存资源。
7. jstl是什么?有点有哪些?
答:JSTL(jsp标准标签库)是一个不断完善的开放源代码的JSP标签库,由四个定制标记库(core、format、xml和sql)和一对通用标记库验证器(ScriptFreeTLV和PermittedTaglibsTLV)组成。优点有:
(1).在应用程序服务器之间提供了一致的接口,最大程度的提高了web应用在各应用服务之间的移植。
(2).简化了JSP和WEB应用程序的开发。
(3).以一种统一的方式减少了JSP中的scriptlet代码数量,可以达到没有任何scriptlet代码的程序。(在我们公司在项目中是不允许有任何的scriptlet代码出现在jsp中)。
(4)允许JSP设计工具与WEB应用程序开发的进一步集成。相信不久就会有支持JSTL的IDE开发工具出现。
8. j2ee的优越性主要表现在哪些方面?MVX模式
答:
a. J2EE基于JAVA技术,与平台无关
b. J2EE拥有开放标准,许多大型公司实现了对该规范支持的服务器。如BEA,IBM,ORACLE等。
c. J2EE提供相当专业的应用软件服务。
d. J2EE提供了一个优秀的企业级框架,对快速高质量的开发系统打下了基础。
Mode1模型:应用程序的主体部分,用于表示业务逻辑。
View视图:应用程序中用户界面相关的部分,是用户看到并与之交互的界面。
Controller控制器:用于根据用户的输入,控制用户界面数据显示,更新Mode1对象状态。
MVC模式的出现不仅实现了功能模块和显示模块的分离,同时还提供了应用程序的可维护、可扩展、可移植性、和组件的可复用性。
9. Java中访问数据库的步骤?Statement和PreparedStatement 之间的区别?
答:Java中访问数据库的步骤如下:
(1)注册驱动;
(2)建立连接;
(3)创建Statement;
(4)执行sql语句;
(5)处理结果集(若sql语句为查询语句);
(6)关闭连接。
PreparedStatement 被创建时即指定了sql语句,通常用于执行多次结构相同的SQL语句。
Statement st = conn.createStatement();
ResultSet rs = st.executeQuery(“select * from user”);
10. 说出Servlet的生命周期,并说出Servlet和CGI的区别?
答:
加载类并实例化(servlet)---初始化(init)---请求处理(doget(),dopost())---销毁(destroy).
与CGI的区别在于servlet处于服务器进程中,它通过多线程方式运行其service方法,一个实例可以服务于多个请求,并且其实力一般都不会销毁,而CGI对每个请求都产生新的进程,服务完成后就销毁,所以效率上低于servlet。
11. servlet执行时一般实现哪几个方法?
答:
public void init(ServletConfig config)
public ServletConfig getServletConfig()
public String getServletInfo()
public void service(ServletRequest request,SrevletResponse response)
Public void destroy()
12. jsp有哪些内置对象?作用分别是什么?
答:JSP共有以下9中基本内置组件(可与ASP的6种内部组件相对应):
request:用户端请求,此请求会包含来自GET/POST请求的参数;
response:网页传回用户端的回应;
pageContext:网页的属性是在这里管理;
session:与请求有关的会话期;
application:servlet正在执行的内容;
out:用来传送回应的输出;
config:servlet的构架部件;
page:JSP网页本身;
Exception:针对错误网页,未捕捉的例外;
13. JSP有那些动作?作用分别是什么?
答:JSP共有以下6种基本动作:
jsp:include:在网页被请求的时候引入一个文件;
jsp:useBean:寻找或者实例化一个JavaBean;
jsp:setProperty:设置JavaBean的属性;
jsp:getProperty:输出JavaBean的属性;
jsp:forward:把请求转到新的页面;
jsp:plugin:根据浏览器类型为Java插件生成OBJECT或EMBED标记。
14. JavaScript常用的方面
答:常用于数据输入校验和页面特殊效果等。
15. get和post的区别?
答:在数据传输过程中分别对应了HTTP协议中的GET和POST方法。二者主要区分如下:
(1)get是用来从服务器上获取数据,而post是用来向服务器上传递数据;
(2)Get是不安全的,因为在传输过程中,数据被放在请求的URL中;post的所有操作对用户来说都是不可见的;
(3)Get传输的数据量小,主要是由于受URL长度的限制;而post可以传输大量的数据,所以上传文件只能用post;
(4)Get是form的默认方法
(5)Get将表单中的数据按照var=value的形式,添加到action所指向的URL后面,并且两者用“?”连接,而各个变量之间使用“&”连接;post是将表单中的数据放在form的数据体中,按照变量和值相对应的方式,传递到action所指向的URL;
(6)Get限制form表单的数据集必须为ASCLL字符,而post支持整个ISO1 0646字符集;
16. 什么时候调用doGet()和doPost()?
答:
Jsp页面中的form标签里的method属性为get时调用doGet(),为post时调用doPost()。
17. 如何从form表单中的取CheckBox的值?
答:
可在网页把name属性取为同一个,value属性取每个条目的id,后台用getParamter(“name”)能取到CheckBox的一组值。
18. 常用的web容器和开发工具
答:
最常用的容器包括:Tomcat、weblogic;
开发工具有:eclipse,myeclipse,jbuilder。
19. 过滤器有哪些作用?
答:
(1)可以验证用户是否登录
(2)可以验证客户是否来自可信的网络
(3)可以过滤掉客户的某些不应该出现的词汇
(4)可以从系统里获得配置的信息
(5)可以记录系统的日志
(6)可以对客户提交的数据进行重新编码
(7)可以验证客户的浏览器是否支持当前应用
20. 过滤器的用法
答:
首先要实现(implements)Filter接口,同时覆盖Filter接口的三个方法:
init(FilterConfig config)//用于获得FilterConfig 对象;
doFilter(ServletRequest requesrt,ServletResponse response,FilterChain chain)//进行过滤处理一些业务;
Destroy()//销毁
21. J2EE是技术还是平台还是框架?
答:
J2EE本身是一个标准,一个为企业分布式应用开发提供的标准平台;
J2EE也是一个框架,包括JDBC、JNDL、RMI、JMS、EJB、JTA等技术。
22. 请写出spring中I0C的三种实现机制。
答:
三种机制为:通过setter方法注入、通过构造方法注入和接口注入。
23. 写出你熟悉的开源框架以及各自的作用。
答:框架:hibernate、spring、struts;
Hibernate主要用于数据持久化;
Spring的控制反转能起到耦合的作用;
Struts主要用于流程控制。
24. 在数据库中如何复制一张表?
答:
create table tab_name1 as select * from tab_name2;
25. int和Integer有什么区别?
答:
Java提供两种不同的类型:引用类型和原始类型(或内置类型);
Int是Java的原始数据类型,Integer是Java为int提供的封装类。
引用类型和原始类型具有不同的特征和用法,它们包括:大小和速度问题,对象引用实例变量的缺省
值为null,而原始类型实例变量的缺省值与他们的类型相关。
26. 垃圾回收的优点和原理。并考虑2种回收机制。
答:
垃圾回收机制,使Java中的对象不再有“作用域”的概念,
只有对象的引用才有“作用域”。垃圾回收可以有效的防止内存泄漏,有效的使用可以使用的内存。
垃圾回收器通常是作为一个单独的低级别的线程运行,不可预知的情况下对内存堆中已经死亡的或者长时间没有使用的对象进行清除和回收,程序员不能试试的调用垃圾回收器对某个对象或所有对象进行垃圾回收。
回收机制又分 代复制垃圾回收和标记垃圾回收,增量垃圾回收。
27. ==和equals()方法的区别是什么?
答:
==是指两个对象是否指向同一个内存地址;
equals是指两个对象地址中是否存在相同的内容。
28. jsp和servlet中的请求转发分别如何实现?
答:
Jsp:request.getRequestDispatcher(/*.jsp).forword(request,response);
Servlet: sendRedirect()
29. 事务处理?
答:Connection类中提供了3个事务处理方法:
setAutoCommit(Boolean autoCommit):设置是否自动提交事务,默认为自动提交事务,即为true,通过设置false禁止自动提交事务;
Commit():提交事务;
Rollback():回滚事务。
30. JDBC如何做事务处理?写出几个在jdbc中常用的接口
答:
Con.setAutoCommit(false);
Con.commit();
Con.rollback();
常用接口:
DriverManager,Connection,preparedStatement,statement,ResultSet