Java面试笔试题及答案(3)- 简答题

时间:2021-03-26 21:54:56

1. JSP和Servlet有哪些相同点和不同点,他们之间的联系是什么? 

JSP是Servlet技术的扩展,本质上是Servlet的简易方式,更强调应用的外表表达。JSP编译后是"类servlet"。Servlet和JSP最主要的不同点在于,Servlet的应用逻辑是在Java文件中,并且完全从表示层中的HTML里分离开来。而JSP的情况是Java和HTML可以组合成一个扩展名为.jsp的文件。JSP侧重于视图,Servlet主要用于控制逻辑。

 

2. swtich是否能作用在byte上,是否能作用在long上,是否能作用在String?

switch(expr1)中,expr1是一个整数表达式。因此传递给 switch 和 case 语句的参数应该是 int、 short、 char 或者 byte。long,string 都不能作用于swtich。

3. 如何利用ServletContext和ServletConfig对象获得初始化参数

String psw = config.getInitParameter("psw");

ServletContext ss = config.getServletContext();

String ppp = ss.getInitParameter("name");

 

4. 如何用css约束一个层不可见?

  <div style="display:none"> </div>  -----表示不可见

  <div style="display:block"> </div>------表示可见

  

5. 在表单中存在一组名称为checkbox1的多选框,如何才能取得这些多选框内的值?

在页面中用javaScript方式取值

<script>

      function  sss(){

         var str = document.getElementsByName("checkbox1");   

         var checkValue = new Array();      

         for(var i=0;i<str.length;i++){

            if(str[i].checked){

              alert(str[i].value);

            }

         }      

      }    

</script>

Function sss()

 Var str=document.getElementsByName(checkbox1);

 Var checkValue=new Array()

For(var i=0;i<str.length;i++){

If(str[i].checked){

Alert(str[i].value);

}

}

  Servlet中取值

   String str[] = request.getParameterValues("checkbox1");

6. 说出数据连接池的工作机制是什么?

J2EE服务器启动时会建立一定数量的池连接,并一直维持不少于此数目的池连接。客户端程序需要连接时,池驱动程序会返回一个未使用的池连接并将其标记为忙。如果当前没有空闲连接,池驱动程序就新建一定数量的连接,新建连接的数量由配置参数决定。当使用的池连接调用完成后,池驱动程序将此连接表记为空闲,其他调用就可以使用这个连接。

 

7. 多线程有几种实现方法,都是什么?同步有几种实现方法,都是什么?

多线程有两种实现方法,分别是继承Thread类与实现Runnable接口 
同步的实现方面有两种,分别是synchronized,waitnotify

 

 

 

8. 一个页面在打开时,需要处理一些事情(比如弹出一个广告页),需要定义窗口的什么事件?

<script>

        window.onload=function(){…}

</script>

 

或是

<body onload="">

9. HTML的Form和XFORM的区别

 

10. 描述forward redirect的区别

forward是服务器请求资源,服务器直接访问目标地址的URL,目标地址可以接收request 请求参数,然后把结果发给浏览器,浏览器根本不知道服务器发送的内容是从哪儿来的,所以它的地址栏中还是原来的地址。
redirect就是服务端根据逻辑,发送一个状态码,告诉浏览器重新去请求哪个地址,浏览器会重新进行请求,此时不能用request传值,浏览器的地址栏会变成新的地址

 

11. Static变量是什么含义

   static是静态变量,就是变量值不随函数执行结束而消失,下次调用同一函数时,上次所赋予的值仍存在。

12. 垃圾回收器的基本原理是什么?垃圾回收器可以马上回收内存吗?有什么办法主动通知虚拟机进行垃圾回收

对于GC来说,当程序员创建对象时,GC就开始监控这个对象的地址、大小以及使用情况。通常,GC采用有向图的方式记录和管理堆(heap)中的所有对象。通过这种方式确定哪些对象是"可达的",哪些对象是"不可达的"。当GC确定一些对象为"不可达"时,GC就有责任回收这些内存空间。可以。程序员可以手动执行System.gc(),通知GC运行,但是Java语言规范并不保证GC一定会执行。

 

13. OverloadOverride的区别。Overloaded的方法是否可以改变返回值的类型?

   方法的重写Overriding和重载OverloadingJava多态性的不同表现。重写Overriding是父类与子类之间多态性的一种表现,重载Overloading是一个类中多态性的一种表现。如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写 (Overriding)。子类的对象使用这个方法时,将调用子类中的定义,对它而言,父类中的定义如同被“屏蔽”了。如果在一个类中定义了多个同名的方法,它们或有不同的参数个数或有不同的参数类型,则称为方法的重载(Overloading)Overloaded的方法是可以改变返回值的类型。

 

14. 说出Servlet的生命周期,并说出ServletCGI的区别

Servlet被服务器实例化后,容器运行其init方法,请求到达时运行其service方法service方法自动派遣运行与请求对应的doXXX方法doGet,doPost)等,当服务器决定将实例销毁的时候调用其destroy方法。
cgi的区别在于servlet处于服务器进程中,它通过多线程方式运行其service方法,一个实例可以服务于多个请求,并且其实例一般不会销毁,而CGI对每个请求都产生新的进程,服务完成后就销毁,所以效率上低于servlet