java基础10题

1.J2EE中,当把来自客户机的HTTP请求委托给servlet时,会调用HttpServlet的( )方法
A.service
B.doget
C.dopost
D.init
2.下面代码的运行结果为

public class Example{
    String str = new String("good");
    char[ ] ch = { 'a' , 'b' , 'c' };
    public static void main(String args[]){
        Example ex = new Example();
        ex.change(ex.str,ex.ch);
        System.out.print(ex.str + " and ");
        System.out.print(ex.ch);
    }
    public void change(String str,char ch[ ]){
        str = "test ok";
        ch[0] = 'g';
    }
}
  1. class Line {
  2. public class Point { public int x,y;}
  3. public Point getPoint() { return new Point(); }
  4. }
  5. class Triangle {
  6. public Triangle() {
  7. // insert code here
  8. }
  9. }
    在第16行插入哪段代码可以获得一个Point对象的坐标?( )
    4.如果进栈序列为e1,e2,e3,e4,则可能的出栈序列是()
    注:一个元素进栈后可以马上出栈,不用等全部进栈
    A.e3,e1,e4,e2
    B.e2,e4,e3,e1
    C.e2,e3,e4,e1
    D.任意顺序都有可能
    5.关于OutOfMemoryError,下面说法正确的是()?
    A.java.lang.OutOfMemoryError: PermGen space 增加-XX:MaxPermSize这个参数的值的话,这个问题通常会得到解决。
    B.java.lang.OutOfMemoryError: Requested array size exceeds VM limit当你正准备创建一个超过虚拟机允许的大小的数组时,这条错误将会出现
    C.java.lang.OutOfMemoryError: Java heap space 一般情况下解决这个问题最快的方法就是通过-Xmx参数来增加堆的大小
    D.java.lang.OutOfMemoryError: nativeGetNewTLA这个异常只有在jRockit虚拟机时才会碰到
    6.在委托事件模型中,源生成事件并把它发送给一个或多个监听器,每个监听器必须向事件源注册。
    A.T
    B.F
    7.下列关于异常处理的描述中,错误的是()。
    A.程序运行时异常由Java虚拟机自动进行处理
    B.使用try-catch-finally语句捕获异常
    C.可使用throw语句抛出异常
    D.捕获到的异常只能在当前方法中处理,不能在其他方法中处理
    8.以下多线程对int型变量x的操作,哪个不需要进行同步()
    A.++x
    B.x=y
    C.x++
    D.x=1
    9.要使某个类能被同一个包中的其他类访问,但不能被这个包以外的类访问,可以( )
    A.让该类不使用任何关键字
    B.使用private关键字
    C.使用protected关键字
    D.使用void关键字
    10.下面结果正确的是
public class Test {
    public static void main(String args[]) {
        String s = "tommy";
        Object o = s;
        sayHello(o); //语句1
        sayHello(s); //语句2
    }
    public static void sayHello(String to) {
        System.out.println(String.format("Hello, %s", to));
    }
    public static void sayHello(Object to) {
        System.out.println(String.format("Welcome, %s", to));
    }
}

A.这段程序有编译错误
B.语句1输出为:Hello, tommy
C.语句2输出为:Hello, tommy
D.语句1输出为:Welcome, tommy
E.语句2输出为:Welcome, tommy
F.根据选用的Java编译器不同,这段程序的输出可能不同

(1)A
HttpServlet容器响应Web客户请求流程如下:
1)Web客户向Servlet容器发出Http请求;
2)Servlet容器解析Web客户的Http请求;
3)Servlet容器创建一个HttpRequest对象,在这个对象中封装Http请求信息;
4)Servlet容器创建一个HttpResponse对象;
5)Servlet容器调用HttpServlet的service方法,这个方法中会根据request的Method来判断具体是执行doGet还是doPost,把HttpRequest和HttpResponse对象作为service方法的参数传给HttpServlet对象;
6)HttpServlet调用HttpRequest的有关方法,获取HTTP请求信息;
7)HttpServlet调用HttpResponse的有关方法,生成响应数据;
8)Servlet容器把HttpServlet的响应结果传给Web客户。
doGet() 或 doPost() 是创建HttpServlet时需要覆盖的方法.
(2)good and gbc
形参str只是栈上的一个引用,和ex.str是一个性质,但是是另个变量,str=“test ok”改变的是str的指向,和ex.str没有一毛钱关系
(3)Line.Point p = (new Line()).getPoint();
因为Point 在 类 Line 里面,属于内部类,直接 使用 Point p 肯定报错。
而public class Point { public int x,y;} 是 Point 的构造方法, Line 肯定不能 获取到,Point
只能获取到其Class
Class c =Line.Point.class;
但是如果是
private class Point , Line.Point 将报错不到

对象,只能通过
getPoint()
,而 getPoint 不是静态方法,所以需要new Line ,
(4)BC
A.若e3先出,说明e1,e2肯定没出且是连着的,所以e1若出来的前提是e2先出来,故A错
B,C以此类推
要记住先进后出;
且条件是一个元素进栈后可以马上出栈,不用等全部进栈,也就是说进了就可以立刻出去,不需要等后面的进栈之后再挨个出去
(5)正确答案: A B C D
(6)正确答案: A
(7)D
编译时异常必须显示处理,运行时异常交给虚拟机。
运行时异常可以不处理。当出现这样的异常时,总是由虚拟机接管。比如我们从来没有人去处理过Null Pointer Exception异常,它就是运行时异常,并且这种异常还是最常见的异常之一。出现运行时异常后,系统会把异常一直往上层抛,一直遇到处理代码。如果没有处理块,到最上层,如果是多线程就由Thread.run()抛出,如果是单线程就被main()抛出。抛出之后,如果是线程,这个线程也就退出了。如果是主程序抛出的异常,整个程序也就退出了。运行时异常是Exception的子类,也有一般异常的特点,是可以被Catch块处理的。只不过往往不对它处理罢了。也就是说,如果不对运行时异常进行处理,那么出现运行时异常之后,要么是线程中止,要么是主程序终止。
(8)D
x=y
隐含着需要读取y才能赋值给x,存在数据依赖,需要禁止重排序,不然可能有同步问题
(9)Ajava基础10题_第1张图片
(10)正确答案: C D
就近原则

你可能感兴趣的:(java,servlet,开发语言)