51
、垃圾回收的优点和原理。并考虑
2
种回收机制。
Java
语言中一个显著的特点就是引入了垃圾回收机制,使
c++
程序员最头疼的内存管理的问题迎刃而解,它使得
Java
程序员在编写程序的时候不再需要考虑内存管理。由于有个垃圾回收机制,
Java
中的对象不再有
"
作用域
"
的概念,只有对象的引用才有
"
作用域
"
。
垃圾回收可以有效的防止内存泄露,有效的使用可以使用的内存。
垃圾回收器通常是作为一个单独的低级别的线程运行,不可预知
的情况下对内存堆中已经死亡的或者长时间没有使用的对象进行清楚和回收,程序员不能实时的调用垃圾回收器对某个对象或所有对象进行垃圾回收。回收机制有分代复制垃圾回收和标记垃圾回收,增量垃圾回收。
?
?
52
、请说出你所知道的线程同步的方法
。
wait():
使一个线程处于等待状态,并且释放所持有的对象的
lock
。
sleep():
使一个正在运行的线程处于睡眠状态,是一个静态方法,调用此方法要捕捉
InterruptedException
异常。
notify():
唤醒一个处于等待状态的线程
,注意的是在调用此方法的时候,并不能确切的唤醒某一个等待状态的线程,而是
由
JVM
确定唤醒哪个线程,而且不是按优先级。
Allnotity():
唤醒所有处入等待状态的线程
,注意并不是给所有唤醒线程一个对象的锁,而是让它们竞争。
?
?
53
、你所知道的集合类都有哪些?主要方法?
最常用的集合类是
List
和
Map
。
List
的具体实现包括
ArrayList
和
Vector
,
它们是可变大小的列表,比较适合构建、存储和操作任何类型对象的元素列表。
List
适用于按数值索引访问元素的情形。
Map
提供了一个更通用的元素存储方法。
Map
集合类用于存储元素对
(称作
"
键
"
和
"
值
"
),其中每个键映射到一个值。
54
、描述一下
JVM
加载
class
文件的原理机制
?
JVM
中类的装载是由
ClassLoader
和它的子类来实现的
,Java ClassLoader
是一个重要的
Java
运行时系统组件。它负责在运行时查找和装入类文件的类。
?
?
55
、
char
型变量中能不能存贮一个中文汉字
?
为什么
?
能够定义成为一个中文的,因为
java
中以
unicode
编码,一个
char
占
2
个字节,所以放一个中文是没问题的
?
56
、多线程有几种实现方法
,
都是什么
?
同步有几种实现方法
,
都是什么
?
多线程有两种实现方法,分别是
继承
Thread
类
与
实现
Runnable
接口
同步的实现方面有两种,分别是
synchronized,wait
与
notify
?
57
、
JSP
的内置对象及方法。
request
表示
HttpServletRequest
对象。它包含了有关浏览器请求的信息,并且提供了几个用于获取
cookie, header,
和
session
数据的有用的
方法。
???
response
表示
HttpServletResponse
对象,并提供了几个用于设置送回
浏览器的响应的方法(如
cookies,
头信息等)
???
out
对象是
javax.jsp.JspWriter
的一个实例,并提供了几个方法使你能用于向浏览器回送输出结果。
???
pageContext
表示一个
javax.servlet.jsp.PageContext
对象。它是用于方便存取各种范围的名字空间、
servlet
相关的对象的
API
,并且包
装了通用的
servlet
相关功能的方法。
???
session
表示一个请求的
javax.servlet.http.HttpSession
对象。
Session
可以存贮用户的状态信息
???
applicaton
表示一个
javax.servle.ServletContext
对象。这有助于查找有关
servlet
引擎和
servlet
环境的信息
???
config
表示一个
javax.servlet.ServletConfig
对象。
该对象用于存取
servlet
实例的初始化参数。
???
page
表示从该页面产生的一个
servlet
实例
?
58
、线程的基本概念、线程的基本状态以及状态之间的关系
线程指在程序执行过程中,
能够执行程序代码的一个执行单位
,每个程序至少都有一个线程,也就是程序本身。
Java
中的线程有四种状态分别是:运行、就绪、挂起、结束。
?
59
、
JSP
的常用指令
<%@page language="java" contenType="text/html;charset=gb2312" session="true" buffer="64kb" autoFlush="true"
isThreadSafe="true" info="text" errorPage="error.jsp" isErrorPage="true" isELIgnored="true" pageEncoding="gb2312"
import="java.sql.*"%>
isErrorPage(
是否能使用
Exception
对象
)
,
isELIgnored(
是否忽略表达式
)
<%@include file="filename"%>
<%@taglib prefix="c"uri=" [url]http://......[/url]"%>
?
60
、什么情况下调用
doGet()
和
doPost()
?
Jsp
页面中的
form
标签里的
method
属性
为
get
时调用
doGet()
,为
post
时调用
doPost()
。
?
61
、
servlet
的生命周期
web
容器加载
servlet
,生命周期开始。通过调用
servlet
的
init()
方法进行
servlet
的初始化。通过调用
service()
方法实现,根据请求的不同调用不同的
do***()
方法。结束服务,
web
容器调用
servlet
的
destroy()
方法。
?
62
、如何现实
servlet
的单线程模式
<%@ page isThreadSafe="false"%>
?
63
、页面间对象传递的方法
request
,
session
,
application
,
cookie
等
?
64
、
JSP
和
Servlet
有哪些相同点和不同点,他们之间的联系是什么?
JSP
是
Servlet
技术的扩展
,
本质上是
Servlet
的简易方式
,更强调应用的
外表表达
。
JSP
编译后是
"
类
servlet"
。
Servlet
和
JSP
最主要的不同点在于,
Servlet
的应用逻辑是在
Java
文件中,并且完全从表示层中的
HTML
里分离开来。而
JSP
的情况是
Java
和
HTML
可以组合成一个扩展名为
.jsp
的文件。
JSP
侧重于视图,
Servlet
主要用于控制逻辑。
?
65
、四种会话跟踪技术
会话作用域
ServletsJSP
页面描述
page
否是代表与
一个页面相关的对象和属性
。一个页面由一个编译好的
Java servlet
类(可以带有任何的
include
指令,但是没有
include
动作)表示。这既包括
servlet
又包括被编译成
servlet
的
JSP
页面
request
是代表与
Web
客户机发出的
一个请求相关的对象和属性
。一个请求可能跨越多个页面,涉及多个
Web
组件(由于
forward
指令和
include
动作的关系)
session
是代表与用于某个
Web
客户机的
一个用户体验相关的对象和属性
。一个
Web
会话可以也经常会跨越多个客户机请求
application
是代表
与整个
Web
应用程序相关的对象和属性
。这实质上是跨越整个
Web
应用程序,包括多个页面、请求和会话的一个全局作用域
?
67
、
J2EE
是技术还是平台还是框架?
?
J2EE
本身是一个标准
,一个为
企业分布式应用
的开发提供的标准平台。
?
J2EE
也是一个框架,
包括
JDBC
、
JNDI
、
RMI
、
JMS
、
EJB
、
JTA
等技术。
?
?
68
、我们在
web
应用开发过程中经常遇到输出某种编码的字符,如
iso8859-1
等,如何输出一个某种编码的字符串?
?
Public String translate (String str) {
???
String tempStr = "";
???
try {
?????
tempStr = new String(str.getBytes("ISO-8859-1"), "GBK");
?????
tempStr = tempStr.trim();
???
}
???
catch (Exception e) {
???
}
???
return tempStr;
?
}
?
69
、简述逻辑操作
(&,|,^)
与条件操作
(&&,||)
的区别。
区别主要答两点:
a.
条件操作只能操作布尔型的
,
而逻辑操作不仅可以操作布尔型
,
而且可以操作数值型
b.
逻辑操作不会产生短路
?
70
、
XML
文档定义有几种形式?它们之间有何本质区别?解析
XML
文档有哪几种方式?
a:
两种形式
dtd?
schema
,
b:
本质区别
:schema
本身是
xml
的,可以被
XML
解析器解析
(
这也是从
DTD
上发展
schema
的根本目的
)
,
c:
有
DOM,SAX,STAX
等
???
DOM:
处理大型文件时其性能下降的非常厉害。这个问题是由
DOM
的树结构所造成的,这种结构占用的内存较多,而且
DOM
必须在解析文件之
前把整个文档装入内存
,
适合对
XML
的随机访问
SAX:
不现于
DOM,SAX
是事件驱动型的
XML
解析方式。它顺序读取
XML
文件,不需要一次全部装载整个文件。当遇到像文件开头,文档结束,或者标
签开头与标签结束时,它会触发一个事件,用户通过在其回调事件中写入处理代码来处理
XML
文件,适合对
XML
的顺序访问
???
STAX:Streaming API for XML (StAX)
?
71
、简述
synchronized
和
java.util.concurrent.locks.Lock
的异同
?
主要相同点:
Lock
能完成
synchronized
所实现的所有功能
主要不同点:
Lock
有比
synchronized
更精确的线程语义和更好的性能。
synchronized
会自动释放锁
,而
Lock
一定要求程序员手工释放,并且必须在
finally
从句中释放
。
?
72
、
EJB
的角色和三个对象
一个完整的基于
EJB
的分布式计算结构由六个角色组成,这六个角色可以由不同的开发商提供,每个角色所作的工作必须遵循
Sun
公司提供的
EJB
规范,以保证彼此之间的兼容性。这六个角色分别是
EJB
组件开发者(
Enterprise Bean Provider
)、应用组合者(
Application Assembler
)、部署者(
Deployer
)、
EJB
服务器提供者(
EJB Server Provider
)、
EJB
容器提供者(
EJB Container Provider
)、系统管理员(
System Administrator
)
三个对象是
Remote
(
Local
)接口、
Home
(
LocalHome
)接口,
Bean
类
?
73
、
EJB
容器提供的服务
主要提供声明周期管理、代码产生、持续性管理、安全、事务管理、锁和并发行管理等服务。
?
74
、
EJB
规范规定
EJB
中禁止的操作有哪些?
1.
不能操作线程和线程
API(
线程
API
指非线程对象的方法如
notify,wait
等
)
,
2.
不能操作
awt
,
3.
不能实现服务器功能,
4.
不能对静态属生存取,
5.
不能使用
IO
操作直接存取文件系统,
6.
不能加载本地库
.
,
7.
不能将
this
作为变量和返回,
8.
不能循环调用。
?
75
、
remote
接口和
home
接口主要作用
remote
接口定义了业务方法,用于
EJB
客户端调用业务方法。
home
接口是
EJB
工厂用于创建和移除查找
EJB
实例
?
76
、
bean
实例的生命周期
对于
Stateless Session Bean
、
Entity Bean
、
Message Driven Bean
一般存在缓冲池管理,而对于
Entity Bean
和
Statefull Session Bean
存在
Cache
管理,通常包含创建实例,设置上下文、创建
EJB Object
(
create
)、业务方法调用、
remove
等过程,对于存在缓冲池管理的
Bean
,在
create
之后实例并不从内存清除,而是采用缓冲池调度机制不断重用实例,而对于存在
Cache
管理的
Bean
则通过激活和去激活机制保持
Bean
的状态并限制内存中实例数量。
?
77
、
EJB
的激活机制
以
Stateful Session Bean
为例:其
Cache
大小决定了内存中可以同时存在的
Bean
实例的数量,根据
MRU
或
NRU
算法,实例在激活和去激活状态之间迁移,激活机制是当客户端调用某个
EJB
实例业务方法时,如果对应
EJB Object
发现自己没有绑定对应的
Bean
实例则从其去激活
Bean
存储中(通过序列化机制存储实例)回复(激活)此实例。状态变迁前会调用对应的
ejbActive
和
ejbPassivate
方法。
?
78
、
EJB
的几种类型
会话(
Session
)
Bean
,实体(
Entity
)
Bean
消息驱动的(
Message Driven
)
Bean
会话
Bean
又可分为有状态(
Stateful
)和无状态(
Stateless
)两种
实体
Bean
可分为
Bean
管理的持续性(
BMP
)和容器管理的持续性(
CMP
)两种
?
79
、客服端调用
EJB
对象的几个基本步骤
设置
JNDI
服务工厂以及
JNDI
服务地址系统属性,查找
Home
接口,从
Home
接口调用
Create
方法创建
Remote
接口,通过
Remote
接口调用其业务方法
?
80
、如何给
weblogic
指定大小的内存
?
在启动
Weblogic
的脚本中(位于所在
Domian
对应服务器目录下的
startServerName
),增加
set MEM_ARGS=-Xms32m -Xmx200m
,可以调整最小内存为
32M
,最大
200M
81
、如何设定的
weblogic
<span sty