1.下列哪种情况会导致持久区jvm堆内存溢出
答: 使用CGLIB技术直接操作字节码运行,生成大量的动态类
拓展: Java堆内存分为两部分分别是permant space和heap space
permant space主要存放的是Java类定义信息,与垃圾回收器要收集的Java对象关系不大,持久代溢出通常是因为持久代设置过小,动态加载了大量Java类
heap space主要分为年轻代和年老代,年老代常见的内存溢出原因有循环上万次的字符串处理,在一段代码内申请上百M甚至上G的内存和创建成千上万的对象
2.看以下代码,文件名称forward.jsp,如果运行以下jsp的内容,地址栏的内容为
<html>
<head><title> 跳转 </title> </head>
<body>
<jsp:forward page="index.htm"/>
</body>
</html>
答: http://127.0.0.1:8080/myjsp/forward.jsp
拓展: redirect:请求重定向,客户端行为,本质上是两次请求,地址栏改变,前一次请求对象消失
举例:你去银行办事(forward.jsp),但缺少公安局的证明(index.htm),银行要求你去公安局取了证明之后再来银行办理业务,这时你得走出银行去公安局(index.htm),因此,地址栏会改变
forward:请求转发,服务器行为,地址栏不变
举例:你把钱包落在了出租车上,你去警局报案(forward.jsp),警察局打电话给这个出租车司机(index.htm),让他把钱包送过来,你不用自己去找他,在警局等就行。所以,地址栏不变
3.假定 Base b= new Derived();调用执行b.methodOne()后,输出结果是什么
public class Base
{
public void methodOne()
{
System.out.print("A");
methodTwo();
}
public void methodTwo()
{
System.out.print("B");
}
}
public class Derived extends Base
{
public void methodOne()
{
super.methodOne();
System.out.print("C");
}
public void methodTwo()
{
super.methodTwo();
System.out.print("D");
}
}
答: ABDC
拓展: 子类重写父类的非静态方法之后,如果不是通过super关键字调用,那么调用的都是重写后子类中的方法
4.下面对静态数据成员描述正确的是
答: 静态数据成员可以在类体内初始化
拓展: 静态数据成员不可以直接通过类名调用,加入A类想调用B类private静态成员,那么就不能直接通过类名调用
5.下列哪项技术可以在WEB开发中实现会话跟踪实现
答: Session、Cookie、地址重写、隐藏域