1、
public int testException(){ //
int i=0, n=0;
try{
n = 1/n;
System.out.println("n is : "+n);
return i+=2;
}catch (Exception e) {
// TODO: handle exception
i+=3;
return i+=4;
}
finally{
i+=5;
return i+=6;
}
}
经上机验证, 返回结果18, 然而我在笔试时却写了11。 try_catch语句中包含return时并不会推出程序其会继续执行, 如此题抛出了异常然后执行catch再执行finally块, 最终i为18。
拓展:
try{
n = 1+n;
return i;
}catch (Exception e) {
// TODO: handle exception
i+=3;
return i+=4;
}finally{
i+=5;
}
假如是这种情况的话其执行流程是try块中执行到return i时并不返回,跳到finally块中执行, 然后又返回到try块中, 但是返回的结果是0, 也即i的初始值。
2、
public long getResult(long x, long y ){
if(x<=0 || y<=0 )
return 0;
while(x!=y)
if(x<y)
x = x-y;
else
x = y-x;
return x;
}
请你优化此段代码?
我的思想是将一些运算拉到循环外面进行。 还有要注意观察在while与for这样的循环结构后是否有花括号{}括起来, 如果没括的话就只循环仅接其后的第一个语句块。 ^_^ ^_^ 但此题是会进入死循环的 ...
3、JAVA EE的结构。
分为客户层、Web层、 业务层、 企业信息系统层(EIS)。 当然也可以将其看做三层: 客户层、 JAVA EE应用服务器层、企业MIS层。
4、jsp运行原理?
.a、 客户端发送请求给服务端的web容器
b、 web容器将jsp翻译成servlet源代码
c、 web容器将servlet源代码编译成.class字节码文件
d、 web容器执行.class字节码文件
e、 web容器将结果响应给客户端
当第一次访问后,在没有改变jsp文件的情况下,只会执行1、3、4、5。因为.class字节码文件已经存在,不需要翻译和编译的过程。
5、 sql题。
a、 求在表a而不在表b中的记录 (表a与表b具有相同的表结构)
select * from a
minus
select * from b;
注意: 此题我考试时是将关键字minus写成了except ^_^ ^_^ 可惜oracle中并没有except这个关键字呀。
还发现了一个标准SQL与oracle的差异, 如左外连接标准关键字是left out join而oracle中是left outer join。
像这种形式: select * from a, b where a.testkey(+) = b.mykey; 在oracle中是表示 右外连接的。 注意!
我顺便复习了一遍sql中的集合查询:
union :得到两个查询结果的并集,并且自动去掉重复行。不会排序
union all:得到两个查询结果的并集,不会去掉重复行。也不会排序
intersect:得到两个查询结果的交集,并且按照结果集的第一个列进行排序
minus:得到两个查询结果的减集,以第一列进行排序
b、 将a表中的testvalue字段全部修改为b表中对应的mykey
update a set a.testvalue=(select myvalue from b where a.testkey = b.mykey);
6、 oracle的体系结构。 此部分内容较多, 参考教材《Oracle Database 10g 基础教程》第四章。
7、 视图的特点及其作用?
视图一经定义, 就可以和基本表一样被查询、被删除。 也可以在一个视图之上再定义新的视图, 但对视图的更新(增、删、改)操作则有一定的限制。
要注意创建视图后面的可选项: with check option。
视图的主要作用如下:
a、 视图能够简化用户的操作。
b、 视图使用户能以多种角度看待同一数据。
c、 视图对重构数据库提供了一定程度的逻辑独立性。
d、 视图能够对机密数据提供安全保护。
e、 适当的利用视图可以更清晰的表达查询。
8、 jsp/servlet下的编码方式?
String str="中文";
str=new String(str.getBytes("GB2312"),"8859_1"); 此种形式去解决即可,更好的一种方法是在servlet中构造一个过滤器。