java选择题编程题集锦文档格式.docx
《java选择题编程题集锦文档格式.docx》由会员分享,可在线阅读,更多相关《java选择题编程题集锦文档格式.docx(45页珍藏版)》请在冰豆网上搜索。
AFormBean是一种数据bean,主要用来封装表单提交上来的数据,并把这些数据传递给Action
B在FormBean中可以对页面上传递来的参数进行一下格式上的验证,这种验证是一种客户端的验证
C用户每次提交表单,都会产生一个新的FormBean实例
D动态FormBean不能进行验证操作
A
8.以下哪些不是Hibernate的检索方式:
A、导航对象图检索
B、OID检索
C、ORM检索
D、QBC检索
E、本地SQL检索
F、HQL检索
C
9.以下代码定义了一个变量,如何输出这个变量的值
(A)
(B)
(C)
(D)
%>
答案:
A,D
10.EJB有哪些对象?
Remote(Local)接口
Home(LocalHome)接口
Bean类
EnterpriseBeanProvider
ABC
11方法可以进行servlet的调试?
(ABCDE)
A、使用打印语句;
在桌面计算机上运行服务器
B、使用ApacheLog4J
C、使用IDE集成的调试器
D、直接查看HTML源码
E、返回错误页面给客户
12、下面关于servlet的功用说法正确的有哪些?
A、读取客户程序发送来的显式数据
B、读取客户程序发送来的隐式数据
C、生成相应的结果
D、发送显式的数据给客户程序
E、发送隐式的数据给客户程序
13、下面关于session的用法哪些是错误的?
(ABD)
A、HttpSessionsession=newHttpSession();
B、Stringhaha=session.getParameter(“haha”);
C、session.removeAttribute(“haha”);
D、session.setAttribute(“haha”);
14、关于说法正确的有哪些?
(ABC)
A、URL的输出在请求时被插入到JSP页面中
B、不能含有影响整个页面的JSP内容
C、被包含文件改变后不需更改使用它的页面
D、被包含文件更改后,需要手动地更新使用它的页面
15、关于bean的说法正确的有哪些?
(BD)
A、具备一个零参数(空)的构造函数(不是必须的)
B、不应该有公开的实例变量(字段)
C、所有的属性都必须通过getXxx和setXxx方法来访问
D、布尔型的属性使用isXxx,而非getXxx
16、下面关于MVC说法错误的有哪些?
(AC)
A、必须使用复杂的框架
B、使用内建的RequestDispatcher能够很好地实现MVC
C、MVC影响整个系统的设计
D、我们可以用MVC来处理单个请求
17、下面的标签中哪些是JSTL标签?
A、
B、
C、
D、
18、使用Junit测试equals()必须根据哪些属性来进行?
A、反身性
B、对称性
C、传递性
D、一致性
19、以下哪些说法是正确的?
(A)每个HTTP请求对应一个单独的ActionServlet实例
(B)对于每个请求访问HelloAction的HTTP请求,Struts框架会创建一个单独的HelloAction实例。
(C)每个子应用对应一个单独的RequestProcessor实例
(D)每个子应用对应一个单独的web.xml文件
20、ActionFormBean对象是由谁创建的?
(A)标签处理类
(B)ActionServlet
(C)RequestProcessor
(D)Action
21、struts框架,错误的是,面那些说法正确?
AStruts中无法完成上传功能
BStruts框架基于MVC模式
CStruts框架容易引起流程复杂、结构不清晰等问题
DStruts可以有效地降低项目的类文件数目
四、编程题(1、2题各15分,3题20分)
1、利用异常处理机制的方法来制作一个代码程序段。
输入“Iam007”时,打印“亲爱的007,您好”;
输入其他字符串时,打印“对不起,请下次进入”,然后程序结束
importjava.io.*;
publicclassKB
{
publicstaticStringscan()
{
Stringstr="
;
try
BufferedReaderbuf=newBufferedReader(newInputStreamReader(System.in));
str=buf.readLine();
}
catch(Exceptione){}
returnstr;
}
publicclassMyExceptionTest{
publicstaticvoidexceptionThrow()throwsMyException1{
thrownewMyException1();
publicstaticvoidanotherThrow()throwsMyException2{
thrownewMyException2();
publicstaticvoidmain(Stringargs[]){
try{
Stringstr=KB.scan();
if(str.equals(Iam007))
exceptionThrow();
else
anotherThrow();
}catch(MyException1e1){
e1.printStackTrace();
}catch(MyException2e2){
e2.printStackTrace();
classMyException1extendsException{
MyException1(){
super(亲爱的007,您好);
classMyException2extendsException{
MyException2(){
super(对不起,请下次进入);
2、使用同步函数实现卖100张票。
要求写两个类(主函数类:
MainTest,线程类:
ThreadTest),线程类实现Runnable接口。
publicclassMainTest{
publicstaticvoidmain(Stringargs[])
Threadt=newThread(newThreadTest());
t.start();
classThreadTestimplementsRunnable{
privateinttickets=100;
publicvoidrun(){
while(true)
sale();
publicsynchronizedvoidsale()
if(tickets>
0)
try{
Thread.sleep(10);
}catch(Exceptione)
e.printStackTrace();
System.out.println(Thread.currentThread().getName()+issalingticket+tickets);
3、请完成一个选课系统里注册模块的程序设计:
条件:
学生的持久化类的属性有:
id,username,password,sex,major,class,
课程的持久化类的属性有:
id,coursename,classroom,coursetime,
JSP页面为:
reg.jsp,regok.jsp,regbad.jsp;
完成学生与课程的持久化类的映射文件,设置成级连保存,延迟检索;
写出与注册页面相对应的的Action和ActionForm;
要求ActionForm要对表单中的数据格式进行验证;
Action要对学生的用户名进行唯一验证;
如果没有重复的用户名就可以注册成功,否则失败;
写出检测用户名是否存在的方法;
根据session接口写出相应的方法;
Course.hbm.xml
Student.hbm.xml
StudentCourse.hbm.xml
struts-config.xml
type=com.formbean.RegFormBean/>
type=com.action.RegAction
name=RegFormBean
input=/reg.jsp>
path=/regbad.jsp/>
path=/regok.jsp/>
null=false/>
4.Java编程,打印昨天的当前时刻
publicclassYesterdayCurrent{
publicvoidmain(String[]args){
Calendarcal=Calendar.getInstance();
cal.add(Calendar.DATE,-1);
System.out.println(cal.getTime());
5.文件读写,实现一个计数器
publicintgetNum(){
inti=-1;
Stringstri="
BufferedReaderin=newBufferedReader(newFileReader(f));
while((stri=in.readLine())!
=null){
i=Integer.parseInt(stri.trim());
in.close();
}catch(Exceptione){
returni;
publicvoidsetNum(){
inti=getNum();
i++;
PrintWriterout=newPrintWriter(newBufferedWriter(newFileWriter(f,false)));
out.write(String.valueOf(i));
//可能是编码的原因,如果直接写入int的话,将出现java编码和windows编码的混乱,因此此处写入的是String
out.close();
6.指出下面程序的运行结果:
classA{
static{
System.out.print
(1);
publicA(){
System.out.print
(2);
classBextendsA{
System.out.print(a);
publicB(){
System.out.print(b);
publicclassHello{
publicstaticvoidmain(String[]ars){
Aab=newB();
//执行到此处,结果:
1a2b
ab=newB();
1a2bab
注:
类的static代码段,可以看作是类首次加载(被虚拟机加载)执行的代码,而对于类的加载,首先要执行其基类的构造,再执行其本身的构造
7.写一个Singleton模式的例子
publicclassSingleton{
privatestaticSingletonsingle=newSingleton();
privateSingleton(){}
publicSingletongetInstance(){
returnsingle;
8删除表的重复记录
如果记录完全相同才算重复记录,那么:
(sqlserver2000下测试通过)
selectdistinct*into#tmppfromtid
deletefromtid
insertintotidselect*from#tmpp
droptable#tmpp
如果有id主键(数字,自增1的那种),那么:
(sqlserver2000下测试通过)
deletefromtableAwhereidnotin
(selectid=min(id)fromtableAgroupbyname)
面试和笔试大全
2、String是最基本的数据类型吗
基本数据类型包括byte、int、char、long、float、double、boolean和short。
java.lang.String类是final类型的,因此不可以继承这个类、不能修改这个类。
为了提高效率节省空间,我们应该用StringBuffer类
3、int和Integer有什么区别
Java提供两种不同的类型:
引用类型和原始类型(或内置类型)。
Int是java的原始数据类型,Integer是java为int提供的封装类。
Java为每个原始类型提供了封装类。
原始类型封装类
booleanBoolean
charCharacter
byteByte
shortShort
intInteger
longLong
floatFloat
doubleDouble
引用类型和原始类型的行为完全不同,并且它们具有不同的语义。
引用类型和原始类型具有不同的特征和用法,它们包括:
大小和速度问题,这种类型以哪种类型的数据结构存储,当引用类型和原始类型用作某个类的实例数据时所指定的缺省值。
对象引用实例变量的缺省值为null,而原始类型实例变量的缺省值与它们的类型有关。
4、String和StringBuffer的区别
JAVA平台提供了两个类:
String和StringBuffer,它们可以储存和操作字符串,即包含多个字符的字符数据。
这个String类提供了数值不可改变的字符串。
而这个StringBuffer类提供的字符串进行修改。
当你知道字符数据要改变的时候你就可以使用StringBuffer。
典型地,你可以使用StringBuffers来动态构造字符数据。
5、运行时异常与一般异常有何异同?
异常表示程序运行过程中可能出现的非正常状态,运行时异常表示虚拟机的通常操作中可能遇到的异常,是一种常见运行错误。
java编译器要求方法必须声明抛出可能发生的非运行时异常,但是并不要求必须声明抛出未被捕获的运行时异常。
6、说出Servlet的生命周期,并说出Servlet和CGI的区别。
Servlet被服务器实例化后,容器运行其init方法,请求到达时运行其service方法,service方法自动派遣运行与请求对应的doXXX方法(doGet,doPost)等,当服务器决定将实例销毁的时候调用其destroy方法。
与cgi的区别在于servlet处于服务器进程中,它通过多线程方式运行其service方法,一个实例可以服务于多个请求,并且其实例一般不会销毁,而CGI对每个请求都产生新的进程,服务完成后就销毁,所以效率上低于servlet。
7、说出ArrayList,Vector,LinkedList的存储性能和特性
ArrayList和Vector都是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,它们都允许直接按序号索引元素,但是插入元素要涉及数组元素移动等内存操作,所以索引数据快而插入数据慢,Vector由于使用了synchronized方法(线程安全),通常性能上较ArrayList差,而LinkedList使用双向链表实现存储,按序号索引数据需要进行前向或后向遍历,但是插入数据时只需要记录本项的前后项即可,所以插入速度较快。
8、EJB是基于哪些技术实现的?
并说出SessionBean和EntityBean的区别,StatefulBean和StatelessBean的区别。
EJB包括SessionBean、EntityBean、MessageDrivenBean,基于JNDI、RMI、JAT等技术实现。
SessionBean在J2EE应用程序中被用来完成一些服务器端的业务操作,例如访问数据库、调用其他EJB组件。
EntityBean被用来代表应用系统中用到的数据。
对于客户机,SessionBean是一种非持久性对象,它实现某些在服务器上运行的业务逻辑。
对于客户机,EntityBean是一种持久性对象,它代表一个存储在持久性存储器中的实体的对象视图,或是一个由现有企业应用程序实现的实体。
SessionBean还可以再细分为StatefulSessionBean与StatelessSessionBean,这两种的SessionBean都可以将系统逻辑放在method之中执行,不同的是StatefulSessionBean可以记录呼叫者的状态,因此通常来说,一个使用者会有一个相对应的StatefulSessionBean的实体。
StatelessSessionBean虽然也是逻辑组件,但是他却不负责记录使用者状态,也就是说当使用者呼叫StatelessSessionBean的时候,EJBContainer并不会找寻特定的StatelessSessionBean的实体来执行这个method。
换言之,很可能数个使用者在执行某个StatelessSessionBean的methods时,会是同一个Bean的Instance在执行。
从内存方面来看,StatefulSessionBean与StatelessSessionBean比较,StatefulSessionBean会消耗J2EEServer较多的内存,然而StatefulSessionBean的优势却在于他可以维持使用者的状态。
9、Collection和Collections的区别。
Collection是集合类的上级接口,继承与他的接口主要有Set和List.
Collections是针对集合类的一个帮助类,他提供一系列静态方法实现对各种集合的搜索、排序、线程安全化等操作。
10、和的区别。
是位运算符,表示按位与运算,是逻辑运算符,表示逻辑与(and)。
11、HashMap和Hashtable的区别。
HashMap是Hashtable的轻量级实现(非线程安全的实现),他们都完成了Map接口,主要区别在于HashMap允许空(null)键值(key),由于非线程安全,效率上可能高于Hashtable。
HashMap允许将null作为一个entry的key或者value,而Hashtable不允许。
HashMap把Hashtable的contains方法去掉了,改成containsvalue和containsKey。
因为contains方法容易让人引起误解。
Hashtable继承自Dictionary类,而HashMap是Java1.2引进的Mapinterface的一个实现。
最大的不同是,Hashtable的方法是Synchronize的,而HashMap不是,在多个线程访问Hashtable时,不需要自己为它的方法实现同步,而HashMap就必须为之提供外同步。
Hashtable和HashMap采用的hash/rehash算法都大概一样,所以性能不会有很大的差异。
12、final,finally,finalize的区别。
final用于声明属性,方法和类,分别表示属性不可变,方法不可覆盖,类不可继承。
finally是异常处理语句结构的一部分,表示总是执行。
finalize是Object类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法,可以覆盖此方法提供垃圾收集时的其他资源回收,例如关闭文件等。
13、sleep()和wait()有什么区别
sleep是线程类(Thread)的方法,导致此线程暂停执行指定时间,给执行机会给其他线程,但是监控状态依然保持,到时后会自动恢复。
调用sleep不会释放对象锁。
wait是Object类的方法,对此对象调用wait方法导致本线程放弃对象锁,进入等待此对象的等待锁定池,只有针对此对象发出notify方法(或notifyAll)后本线程才进入对象锁定池准备获得对象锁进入运行状态。
14、Overload和Override的区别。
Overloaded的方法是否可以改变返回值的类型
方法的重写Overriding和重载Overloading是Java多态性的不同表现。
重写Overriding是父类与子类之间多态性的一种表现,重载Overloading是一个类中多态性的一种表现。
如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写(Overriding)。
子类的对象使用这个方法时,将调用子类中的定义,对它而言,父类中的定义如同被屏蔽了。
如果在一个类中定义了多个同名的方法,它们或有不同的参数个数或有不同的参数类型,则称为方法的重载(Overloading)。
Overloaded的方法是可以改变返回值的类型。