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