JAVA程序员笔试题目(附答案)

匿名网友 匿名网友 发布于: 2015-08-30 00:00:00
阅读 138 收藏 0 点赞 0 评论 0

  1. 有一个Vector对象,其中每一个元素都是一个String对象,请用For循环或者While循环输出Vector中的元素,要求格式为:”第i个元素为:aaa”

答:

Iterator it=Vector.iterat();

While(it.hasNext()){

String temp=(String)it.next();

System.out.print(第一个元素为:);

System.out.println(temp);

 

}

 

  1. Jsp有哪些内置对象,作用分别是什么?

 

  1. 答:request,response,pageContext,session,application,out.config,page,exception等

 

 

  1. 在try {}里面有一个return语句,那么紧跟在try{}后的finally{}里面的 code是否会被执行,是什么时候执行,在return之前还是之后。

    答:

 

  1. 面向对象的基本特征是什么?

答:继承,封装,多态,

 

 

  1. 页面之间传递参数的方法有哪些?

答:利用request,pageContext,session,application,cookie对象都可以

 

  1. Servlet中什么时候调用doGet()和doPost()?这两种方法有什么不同?

 

  1. 答:当表单是用get方法提交时,调用doGet(),反之调用doPost();

 

 

  1. 页面中有一个名称为unitprice的type=text的对象。要求输入的数据不能为空,写一个函数实现该功能,如果为空是给出提示。(用JavaScript语言写出)

答:<script language=”javascript” type=”text/JavaScript”>

    var aa;

    aa=document.form.text.unitprice.value;

    if(aa==null){

        alter(“请输入价格);

}

 

  1. 现有两个具有完全相同结构的表a 和b ,主键均为indexid。写出一个sql语句,把表b中不存在但a存在的数据记录插入到表b中。

 

 

  1. 左联接和右联接的区别

    答案:左连接 where只影向右表,右连接where只影响左表

    Left Join / Right Join /inner join相关

    关于左连接和右连接总结性的一句话:

    左连接 where只影向右表,右连接where只影响左表。

    Left Join

    select * from tbl1 Left Join tbl2 where tbl1.ID = tbl2.ID

    左连接后的检索结果是显示tbl1的所有数据和tbl2 中满足where 条件的数据。

    简言之 Left Join影响到的是右边的表

    Right Join

    select * from tbl1 Right Join tbl2 where tbl1.ID = tbl2.ID

    检索结果是tbl2的所有
    数据和tbl1中满足where 条件的数据。

    简言之 Right Join影响到的是左边的表。

    inner join

    select * FROM tbl1 INNER JOIN tbl2 ON tbl1.ID = tbl2.ID

    功能和 select * from tbl1,tbl2 where tbl1.id=tbl2.id相同。

 

  1. 存储过程和函数的区别

答:本质上没区别。只是函数有如:只能返回一个变量的限制。而存储过程可以返回多个。而函数是可以嵌入在sql中使用的,可以在select中调用,而存储过程不行。执行的本质都一样。

函数限制比较多,比如不能用临时表,只能用表变量.还有一些函数都不可用等等.而存储过程的限制相对就比较少

由于我现在基本上是DBA的工作,因此平时也看一些数据库方面的书籍。但是我一直对存储过程和函数之间的区别掌握不透。我向来认为存储过程可以实现的操作,函数也一样可以实现。最近,刚好大学的老师给我们上SQL-Server的课程,我对这个问题的疑惑终于慢慢解开。今天晚上顺便看了些网上的资料,觉得以下分析比较合理:

1. 一般来说,存储过程实现的功能要复杂一点,而函数的实现的功能针对性比较强。

2. 对于存储过程来说可以返回参数,而函数只能返回值或者表对象。

3. 存储过程一般是作为一个独立的部分来执行,而函数可以作为查询语句的一个部分来调用,由于函数可以返回一个表对象,因此它可以在查询语句中位于FROM关键字的后面。

4. 当存储过程和函数被执行的时候,SQL Manager会到procedure cache中去取相应的查询语句,如果在procedure cache里没有相应的查询语句,SQL Manager就会对存储过程和函数进行编译。

Procedure cache中保存的是执行计划 (execution plan) ,当编译好之后就执行procedure cache中的execution plan,之后SQL SERVER会根据每个execution plan的实际情况来考虑是否要在cache中保存这个plan,评判的标准一个是这个execution plan可能被使用的频率;其次是生成这个plan的代价,也就是编译的耗时。保存在cache中的plan在下次执行时就不用再编译了。

存储过程和用户自定义函数具体的区别 :存储过程可以使得对数据库的管理、以及显示关于数据库及其用户信息的工作容易得多。存储过程是 SQL 语句和可选控制流语句的预编译集合,以一个名称存储并作为一个单元处理。存储过程存储在数据库内,可由应用程序通过一个调用执行,而且允许用户声明变量、有条件执行以及其它强大的编程功能。

存储过程可包含程序流、逻辑以及对数据库的查询。它们可以接受参数、输出参数、返回单个或多个结果集以及返回值。

可以出于任何使用 SQL 语句的目的来使用存储过程,它具有以下优点:

  • 可以在单个存储过程中执行一系列 SQL 语句。
  • 可以从自己的存储过程内引用其它存储过程,这可以简化一系列复杂语句。
  • 存储过程在创建时即在服务器上进行编译,所以执行起来比单个 SQL 语句快。

 

  1. 事务是什么?在java中如何手工执行事务

答:事务 指作为单个逻辑工作单元执行的一系列操作。 事务处理可以确保除非事务性单元内的所有操作都成功完成,否则不会永久更新面向数据的资源。通过将一组相关操作组合为一个要么全部成功要么全部失败的单元,可以简化错误恢复并使应用程序更加可靠。一个逻辑工作单元要成为事务,必须满足所谓的ACID(原子性、一致性、隔离性和持久性)属性;

在java中你要手工执行事务,如果是jdbc连接数据库,那么就设置提交的时候手动提交

conn.setAutoCommit(false);//conn 是connection对象

当结束后

conn.commit();

  1. 触发器分为事前触发和事后触发,他们之间有和区别?语句级触发和行级触发有和

区别 ?

 

答:事前触发:”before insert on 表名”,则可以在未插入前,对想插入的那一行”insert into 表名 values(a,b,c)”里的a,b,c进行操作,

例如把a换成f,”:new.a :=f “,

“:new”是插入前临时内存(用于insert update),保存着insert的记录,”:new.a”就引用了临时记录的a,”:new.a :=f “就是把f放进这个a里面,然后才执行临时内存写入表,这时实际插入到表的是(f,b,c)了。

 

事后触发:因为有时有两个表是相关联的,如果你删除了第一个表,第二个表的某写记录的找不到关联,就变得没意义了,所以为了实现事务的完整性,在删除第一表的某记录后,还要同时删除第二个表的对应记录,这时就用到事后触发了”after delete on 表1″,在对表1进行删除操作时”delete from 表1 where 表1.id=’001′;”,

同时删除表2的记录”delete from 表2 where 表2.id=:old.id”,

“:old”是操作后临时内存(用于delete,update),它保存了进行删除操作后的记录,这里相当于删除表2中”表1.id=表2.id”的记录。

行级触发器对DML语句影响的每个行执行一次。

语句级触发器对每个DML语句执行一次,如果在TABLE表中插入的数据为500行,那么这个表上的语句级触发器只执行一次,而行级的触发器就要执行500次了。

  1. 游标的作用?如何知道游标已经到了最后

游标用于定位结果集的行,通过判断全局变量@@FETCH_STATUS可以判断是否到了最后,通常此变量不等于0表示出错或到了最后。

  1. 写出执行一条查询sql语句的代码(要求从重载驱动到打印出记录内容的全过程)

 

 

15、写出使用Session对象实现存储用户名和提取用户名的代码来。

 

session.setAttribute(String name,obg name);

String name=(String)session.getAttrubute(name);.

评论列表
文章目录