JAVA笔试总结

来源:互联网 发布:淘宝店铺宣传团队抽成 编辑:程序博客网 时间:2024/06/01 10:57

 java笔试总结(1)                                                                       

一、选择题

1.关于MVC,下面说法正确的是:(B)

A.Servlet实现MVC的Model部分         B.EJB实现MVC的Model部分           C.Http实现MVC的View部分         D.JSP实现MVC的Control部分

2.如果配置一个Servlet需要使用参数,最好在哪个方法中加载(A)

A.init           B.doGet         C.destory         D.doPost         E.service

3.在ORACLE中执行下面SQL的结果为(D)

Select instr('Mississippi','i',3,3)  from dual

A.7         B.10         C.8         D.11

4.哪个HTTP Method可以用来传递大数据量?(A)

A.POST         B.PUT         C.DELETE         D.HEAD         GET

5.对String和StringBuffer描述正确的是(D)

A.String和StringBuffer的值都是可变的                           //String对象是非可变对象,StringBuffer对象则是可变对象。

B.String类和StringBuffer类都是可以继承的                   //String、StringBuffer都是被final类,不能被继承

C.new   StringBuffer("abc").equals(new StringBuffer("abc"))的结果为false       

D.如果频繁地对字符串进行操作,String比起StringBuffer更高效            //用String存储字符串的话,如果你要追加加字符串,它会在你的内存中重新开辟一块空间来存储,那用StringBuffer的话,它就会在原来的基础上继续追加字符串,不会开辟新的内存空间,所以stringbuffer比String更高效的追加字符串是对的


二、问答题

1、说出Servlet的生命周期,并说出Servlet和CGI的区别

Servlet的生命周期:   实例化:Servlet容器创建Servlet类的实例。   初始化:该容器调用init()方法,通常会申请资源。   服务:由容器调用service()方法,(也就是doGet()和doPost())。
破坏:在释放Servlet实例之前调用destroy()方法,通常会释放资源。

Servlet和CGI的区别:
Servlet处于服务器进程中,它通过多线程方式运行其service方法,一个实例可以服务于多个请求,并且其实例一般不会销毁
而CGI对每个请求都产生新的进程,服务完成后就销毁,所以效率上低于servlet。

2、final,finally,finalize的区别

      final用于声明属性,方法和类,分别表示属性不可变,方法不可覆盖,类不可继承。将变量或方法声明为final,可以保证他们在使用中不被改变。被声明为final的变量必须在声明时给定初始值,而在以后的引用中只能读取,不可修改。被声明为final的方法也同样只能使用,不能重载。

finally在异常处理时提供finally块来执行任何 清除操作。如果抛出一个异常,那么相匹配的catch子句就会执行,然后控制就会进入finally块。

finalize方法名。java技术允许使用finalize()方法在垃圾回收处理器将对象从内存中清除出去之前做必要的清理工作,这个方法是由垃圾收集器在确定这个对象没有被引用时对这个对象调用的。它是在Object类中定义的,因此所有的类都继承了他。子类覆盖finalize()方法以整理系统资源或者执行其他清理工作。finalize()方法是在垃圾收集器删除对象之前对这个对象调用的。

3、什么情况下调用doGet()和doPost()

如果servlet是继承自HttpServlet,就必须重写它里面的两个方法doPost()和doGet(),不管servlet或jsp会去调用哪个方法,这两个方法都应该有。

如果method属性的值是get,它就去调用对应的servlet的doGet()方法;如果method属性的值是post,它就会去调用对应的servlet的doPost()方法,一般来说,不管采用那种提交方式,在servlet里要做的事情是一样的,所以,在很多情况下,在一个方法里面调用另一个方法,这样无论用哪种方式提交,都可以转去做一种处理。

4、页面间对象传递的方法有哪些,列举4个以上

1.QuerySting在页面间传递值   这种方法的写法:在要传递值的页面,Response.Redirect(url),值包含在在url中。接收值得页面,Request.QueryString["变量名"]。    这是使用起来很简单的一种方式,但是它不是很安全,因为值会在浏览器里的地址栏里显示。并且它也不能传递对象,对长度也有限制,如果要传递的值很多,且对安全要求也高的话,这种方式就不适合了。2.Session变量    我们通常在一个页面中,将值放到session变量中,在另外几个页面使用它。Session变量存储过多的数据会消耗比较多的服务器资源,在使用时应该慎重。通常将登陆的用户名和密码防到session中,其他页面根据判断session中用户名和密码是否有值来判断用户是否登录。    写法:存入到session变量,Session["name"]=“要放入的值”;读取session中的值,变量名=Session["name"].ToString();3.Cookie对象变量    Cookie对象变量和session一样,他们不同的是,session是存在服务器端,而cookie是存放在客户端的。    写法:将值存入到cookie中    HttpCookie userName=new HttpCookie("name");            userName.Value = "值";            Response.AppendCookie(userName);    读取cookie中的值   变量名 = Request.Cookies["userName"].Value.ToString();4.使用Application 对象变量    Application对象的作用范围是整个全局,他对所有用户都有效,session和cookie是对一个用户而言,所以我们可以用它统计登陆该网站的人数。Application变量不会自己消亡,会始终占据内存,创建过多的变量会降低响应速度,只有在服务被中止、Global.asa被改变或者该Application被卸载下才会被终止。   写法:将值存入到application中, Application["name"] = "值";读取值,变量名= Application["name"].ToString();    上面是我常用到的几种方式,当然还有其他方式。还有利用某些控件的PostBackUrl属性,使用Server.Transfer,使用@PreviousPageType指令,这些暂时没用过,在以后会试着用,用的多了就会有对比,就能知道在什么场合更适合哪种方式。

5、S(SNO,SNAME)学生关系,SNO为学号,SNAME为姓名,C(CNO,CNAME,CTEACHER)KECHENGGUAXI。CNO为课程号,CNAME为课程名,教师

SC(SNO,CNO,SCGRADE)选课关系。SCGRADE为成绩        问题:

(1)找出没有选修过“李明”老师讲授课程的所有学生姓名

    SELECT sname from s

         where not EXISTS(
                     SELECT * from sc,c WHERE c.teacher='李明' and sc.cno=c.cno and sc.sno=s.sno)


(2)列出有二门以上(含两门)不及格课程的学生姓名及其平均成绩

select s.sno,s.sname,AVG(sc.scgrade) from
              s,sc,(SELECT sno FROM sc
             WHERE scgrade<60 GROUP BY sno
             HAVING COUNT(DISTINCT cno)>=2)a
            WHERE s.sno=sc.sno and sc.sno=a.sno GROUP BY s.sno,s.sname



(3)列出既学过“1”号课程,又学过“2”号课程的所有学生姓名

select s.sno,s.sname FROM s,(
           SELECT sc.sno
           from sc,c
           WHERE sc.cno=c.cno AND c.cname in('数据库','java')
          GROUP BY sc.sno
          HAVING COUNT(DISTINCT c.cno)=2
          )sc WHERE sc.sno=s.sno



小编有话说:

当今社会,初级程序员不断增多,虽然这份工作在被人眼中是一份十分不错的,体面的,高薪的工作,但是如果真的长期坚持,是一件很不容易的事情。刚开始的时候,小编也是什么都不懂,只懂些皮毛便出来飘啦,虽然在找工作期间遇到很多困难,也失落过,迷茫过。但是又何尝不是人生必经的过程,毕竟老话说得好:头三脚难踢,万事开头难。可是一旦过了这个坎,迎接我们的将会是希望和美好的明天,也希望对编程有兴趣的孩子,能够坚持自己的初衷,在程序员这条不归路上越走越远。

1 0
原创粉丝点击