JAVA笔试经验

2024-05-23

JAVA笔试经验(共5篇)

篇1:JAVA笔试经验

·short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错?

对于short s1 = 1; s1 = s1 + 1; 由于s1+1运算时会自动提升表达式的类型,所以结果是int型,再赋值给short类型s1时,编译器将报告需要强制转换类型的错误,

对于short s1 = 1; s1 += 1;由于 += 是java语言规定的运算符,java编译器会对它进行特殊处理,因此可以正确编译。

·用最有效率的方法算出2乘以8等於几?

2 << 3,

因为将一个数左移n位,就相当于乘以了2的n次方,那么,一个数乘以8只要将其左移3位即可,而位运算cpu直接支持的,效率最高,所以,2乘以8等於几的最效率的方法是2 << 3。

·请设计一个一百亿的计算器

首先要明白这道题目的考查点是什么,一是大家首先要对计算机原理的底层细节要清楚、要知道加减法的位运算原理和知道计算机中的算术运算会发生越界的情况,二是要具备一定的面向对象的设计思想。

首先,计算机中用固定数量的几个字节来存储的数值,所以计算机中能够表示的数值是有一定的范围的,为了便于讲解和理解,我们先以byte 类型的整数为例,它用1个字节进行存储,表示的最大数值范围为-128到+127。-1在内存中对应的二进制数据为11111111,如果两个-1相加,不考虑Java运算时的类型提升,运算后会产生进位,二进制结果为1,11111110,由于进位后超过了byte类型的存储空间,所以进位部分被舍弃,即最终的结果为11111110,也就是-2,这正好利用溢位的方式实现了负数的运算。-128在内存中对应的二进制数据为10000000,如果两个-128相加,不考虑Java运算时的类型提升,运算后会产生进位,二进制结果为1,00000000,由于进位后超过了byte类型的存储空间,所以进位部分被舍弃,即最终的结果为00000000,也就是0,这样的结果显然不是我们期望的,这说明计算机中的算术运算是会发生越界情况的,两个数值的运算结果不能超过计算机中的该类型的数值范围。由于Java中涉及表达式运算时的类型自动提升,我们无法用byte类型来做演示这种问题和现象的实验,大家可以用下面一个使用整数做实验的例子程序体验一下:

int a = Integer.MAX_VALUE;

int b = Integer.MAX_VALUE;

int sum = a + b;

System.out.println(“a=”+a+”,b=”+b+”,sum=”+sum);

先不考虑long类型,由于int的正数范围为2的31次方,表示的最大数值约等于2*1000*1000*1000,也就是20亿的大小,所以,要实现一个一百亿的计算器,我们得自己设计一个类可以用于表示很大的整数,并且提供了与另外一个整数进行加减乘除的功能,大概功能如下:

()这个类内部有两个成员变量,一个表示符号,另一个用字节数组表示数值的二进制数

()有一个构造方法,把一个包含有多位数值的字符串转换到内部的符号和字节数组中

()提供加减乘除的功能

public class BigInteger

{

int sign;

byte[] val;

public Biginteger(String val)

{

sign = ;

val = ;

}

public BigInteger add(BigInteger other)

{

}

public BigInteger subtract(BigInteger other)

{

}

public BigInteger multiply(BigInteger other)

{

}

public BigInteger divide(BigInteger other)

{

}

}

备注:要想写出这个类的完整代码,是非常复杂的,如果有兴趣的话,可以参看jdk中自带的java.math.BigInteger类的源码。面试的人也知道谁都不可能在短时间内写出这个类的完整代码的,他要的是你是否有这方面的概念和意识,他最重要的还是考查你的能力,所以,你不要因为自己无法写出完整的最终结果就放弃答这道题,你要做的就是你比别人写得多,证明你比别人强,你有这方面的思想意识就可以了,毕竟别人可能连题目的意思都看不懂,什么都没写,你要敢于答这道题,即使只答了一部分,那也与那些什么都不懂的人区别出来,拉开了距离,算是矮子中的高个,机会当然就属于你了。另外,答案中的框架代码也很重要,体现了一些面向对象设计的功底,特别是其中的方法命名很专业,用的英文单词很精准,这也是能力、经验、专业性、英语水平等多个方面的体现,会给人留下很好的印象,在编程能力和其他方面条件差不多的情况下,英语好除了可以使你获得更多机会外,薪水可以高出一千元。

·使用final关键字修饰一个变量时,是引用不能变,还是引用的对象不能变?

使用final关键字修饰一个变量时,是指引用变量不能变,引用变量所指向的对象中的内容还是可以改变的。例如,对于如下语句:

final StringBuffer a=new StringBuffer(“immutable”);

执行如下语句将报告编译期错误:

a=new StringBuffer(“”);

但是,执行如下语句则可以通过编译:

a.append(“ broken!”);

有人在定义方法的参数时,可能想采用如下形式来阻止方法内部修改传进来的参数对象:

public void method(final StringBuffer param)

{

}

实际上,这是办不到的,在该方法内部仍然可以增加如下代码来修改参数对象:

param.append(“a”);

·“==”和equals方法究竟有什么区别?

(单独把一个东西说清楚,然后再说清楚另一个,这样,它们的区别自然就出来了,混在一起说,则很难说清楚)

==操作符专门用来比较两个变量的值是否相等,也就是用于比较变量所对应的内存中所存储的数值是否相同,要比较两个基本类型的数据或两个引用变量是否相等,只能用==操作符,

如果一个变量指向的数据是对象类型的,那么,这时候涉及了两块内存,对象本身占用一块内存(堆内存),变量也占用一块内存,例如Objet obj = new Object();变量obj是一个内存,new Object()是另一个内存,此时,变量obj所对应的内存中存储的数值就是对象占用的那块内存的首地址。对于指向对象类型的变量,如果要比较两个变量是否指向同一个对象,即要看这两个变量所对应的内存中的数值是否相等,这时候就需要用==操作符进行比较。

equals方法是用于比较两个独立对象的内容是否相同,就好比去比较两个人的长相是否相同,它比较的两个对象是独立的。例如,对于下面的代码:

String a=new String(“foo”);

String b=new String(“foo”);

两条new语句创建了两个对象,然后用a,b这两个变量分别指向了其中一个对象,这是两个不同的对象,它们的首地址是不同的,即a和b中存储的数值是不相同的,所以,表达式a==b将返回false,而这两个对象中的内容是相同的,所以,表达式a.equals(b)将返回true。

在实际开发中,我们经常要比较传递进行来的字符串内容是否等,例如,String input = …;input.equals(“quit”),许多人稍不注意就使用==进行比较了,这是错误的,随便从网上找几个项目实战的教学视频看看,里面就有大量这样的错误。记住,字符串的比较基本上都是使用equals方法。

如果一个类没有自己定义equals方法,那么它将继承Object类的equals方法,Object类的.equals方法的实现代码如下:

boolean equals(Object o){

return this==o;

}

这说明,如果一个类没有自己定义equals方法,它默认的equals方法(从Object 类继承的)就是使用==操作符,也是在比较两个变量指向的对象是否是同一对象,这时候使用equals和使用==会得到同样的结果,如果比较的是两个独立的对象则总返回false。如果你编写的类希望能够比较该类创建的两个实例对象的内容是否相同,那么你必须覆盖equals方法,由你自己写代码来决定在什么情况即可认为两个对象的内容是相同的。

·静态变量和实例变量的区别?

在语法定义上的区别:静态变量前要加static关键字,而实例变量前则不加。

在程序运行时的区别:实例变量属于某个对象的属性,必须创建了实例对象,其中的实例变量才会被分配空间,才能使用这个实例变量。静态变量不属于某个实例对象,而是属于类,所以也称为类变量,只要程序加载了类的字节码,不用创建任何实例对象,静态变量就会被分配空间,静态变量就可以被使用了。总之,实例变量必须创建对象后才可以通过这个对象来使用,静态变量则可以直接使用类名来引用。

例如,对于下面的程序,无论创建多少个实例对象,永远都只分配了一个staticVar变量,并且每创建一个实例对象,这个staticVar就会加1;但是,每创建一个实例对象,就会分配一个instanceVar,即可能分配多个instanceVar,并且每个instanceVar的值都只自加了1次。

public class VariantTest

{

public static int staticVar = 0;

public int instanceVar = 0;

public VariantTest()

{

staticVar++;

instanceVar++;

System.out.println(“staticVar=” + staticVar + ”,instanceVar=” + instanceVar);

}

}

备注:这个解答除了说清楚两者的区别外,最后还用一个具体的应用例子来说明两者的差异,体现了自己有很好的解说问题和设计案例的能力,思维敏捷,超过一般程序员,有写作能力!

·是否可以从一个static方法内部发出对非static方法的调用?

不可以。因为非static方法是要与对象关联在一起的,必须创建一个对象后,才可以在该对象上进行方法调用,而static方法调用时不需要创建对象,可以直接调用。也就是说,当一个static方法被调用时,可能还没有创建任何实例对象,如果从一个static方法中发出对非static方法的调用,那个非static方法是关联到哪个对象上的呢?这个逻辑无法成立,所以,一个static方法内部发出对非static方法的调用。

·Integer与int的区别

int是java提供的8种原始数据类型之一。Java为每个原始类型提供了封装类,Integer是java为int提供的封装类。int的默认值为0,而Integer的默认值为null,即Integer可以区分出未赋值和值为0的区别,int则无法表达出未赋值的情况,例如,要想表达出没有参加考试和考试成绩为0的区别,则只能使用Integer。在JSP开发中,Integer的默认为null,所以用el表达式在文本框中显示时,值为空白字符串,而int默认的默认值为0,所以用el表达式在文本框中显示时,结果为0,所以,int不适合作为web层的表单数据的类型。

在Hibernate中,如果将OID定义为Integer类型,那么Hibernate就可以根据其值是否为null而判断一个对象是否是临时的,如果将OID定义为了int类型,还需要在hbm映射文件中设置其unsaved-value属性为0。

另外,Integer提供了多个与整数相关的操作方法,例如,将一个字符串转换成整数,Integer中还定义了表示整数的最大值和最小值的常量。

·下面的代码有什么不妥之处?

1. if(username.equals(“zxx”){}

2. int x = 1;

return x==1?true:false;

篇2:JAVA笔试经验

Java的培训可以说是所花时间最少的课程,相应的考前准备时间也会远远少于那些动辄十天二十天的课程,在竞争如此激烈的IT界,时间因素是广大界内人士不得不考虑的问题。费用方面,对于Java认证来说,一般的上班族都还可以承受,特别Java程序员认证可以说是性能价格比很好的认证了(在校大学生一般也能承受)。

二、在国内的普及程度或曰认知度

国内目前的IT国际认证,位于前三甲的应该是微软的MCSE、CISCO的CCNA、Sun的SCJP。但是这三种认证在技术领域上是没有冲突的,Java是有关企业级开发的技术,MCSE是企业内部局域网组网和管理技术,而CCNA主要是基于CISCO公司产品的广域网技术。所以对于欲进入IT界或是IT界内想继续深造的人士来说,在希望取得某种国际认证时,也要仔细分析现在工作需要什么技术,或者将来希望从事哪方面工作,切忌盲目获取自认为最热门的认证。不过,这里提到的三种认证,即使拿到了,也并不能代表就是该领域的专家,可以说这只是一个基础,仅仅是找工作的敲门砖而已,余下的还需要自己到工作中去不断的发现,补充和完善。换句话说,这些认证的含金量,或者说企业对他们的认可度是远远比不上那些培训时间较长,费用较贵的认证类型的,例如Oracle的OCP认证,微软的MCSD认证等等。 Java认证的目的

美国Sun公司提供的关于Java的SCJP/SCJD认证是全球各大企业都认同的行业认证之一,其特点是培训和考试费用高、考试难度较大。那么,为何要进行Java的认证考试呢?其目的主要为:

Java认证是全球各大企业都认可的行业认证,获取该认证表明您有很高水平的Java编程能力,这样就可以拥有更多的找到好的满意的工作的机会,当然,这也同样为您的提升增加了一个很重要的砝码。

Java语言本身很简单,很容易学和使用,但也有很多的一些习惯用法与其它语言不同。获得JSCP认证将使您在Java编程中更具有专业性,同时也能极大地增强您的自信心。

使用Java语言可以编写简短、精确、清晰的一流的程序,但是其认证却是比较困难的考试,不过这却让SCJP考试具有更高的价值。

目前有很多要出国或者移民的人参加该项培训和认证,因为在美国或加拿大,Java编程的需求是非常大的。

三、SUNJAVA认证的内容和认知度

Java技术主要是讲授程序设计方面的知识,它的程序员认证(SCJP)课程可以作为企业级程序设计的入门课程来看待。其实该课程并不是从最基础的程序设计基本概念讲起,但与现在业界使用的其它开发语言比较,java还是比较流行的。而且Java技术是现在大多数企业在从事电子商务开发,企业信息化建设,Web应用开发时的首选技术。考取该认证的以在校大学生,希望移民加拿大的,及IT界中非开发人员希望转行做开发的为多。对于希望凭借自己快速学习的技能找工作的人来说,宁愿自己多花点功夫拿一个流行技术的认证,也不愿为了省事而去学一些没有任何技术资格认证的编程语言,所以它的吸引力还是很大的。 微软公司的MCSD课程也讲授企业级开发技术,但是它的起点比较高,一般学习该课程的同学都是使用了很长时间微软公司的产品,并且在企业级开发技术方面有一定基础的人。与获取Java程序员认证比较,不管是从学习的时间还是从学习费用考虑,MCSD都高于Java,而且要想获取该认证需要花的时间和精力也远远高于Java认证(不仅是Java程序员认证,也包括Java开发员认证SCJD)。

Oracle公司的数据库开发员(DEV)认证也是开发方面的技术资格认证,当然它偏重于数据库方面的企业级开发技能的训练。但是在Oracle的开发技能中Java技术所处的地位也是很重要的,因为从Oracle8i起是完全内嵌Java支持的,懂得Java技术的开发员做这方面的开发工作时会更加得心应手。从这个意义上来说,Java程序员认证也是一个基础(Oracle公司有自己的Java程序员认证课程,不过费用高于Sun公司的)。

Lotus公司的CLP开发员认证也涉及到开发的技术资格证书,该证书代表其所有者的技能能够对Lotus的Notes系统进行二次开发。不过学习该技术的人也最好具有Java基础,因为这其中也有很多编程工作依靠Java语言来完成。当然,该认证的应用范围是比较窄的,不过由于Lotus公司在国内的市场占有率情况不错,所以该认证还是具备一定的竞争力。

另外,微软、Oracle、Lotus也都有自己的网络或数据库管理方面的课程。而Cisco公司的认证则主要涉及广域网的组网技术。他们与Sun公司的Java分别属于不同的技术方向。

篇3:JAVA笔试经验

1 改革目标

本课程的培养目标是面向软件产业需求, 既有一定理论基础, 又有较强实际操作能力的实用型技术人才。实用型软件编程人员的基本素质包括以下几个方面:掌握基本的语言和算法, 具有一定的程序设计能力;具有面向对象的概念和设计思想, 精通一到二门面向对象的程序设计语言;掌握数据库的基本概念和基本应用;具有一定的项目经验, 在校期间参与一些项目设计;具有现代软件工程思想, 了解软件开发的一般方法, 熟悉软件开发的一般过程, 精通一些实用的软件开发工具;具有较强的代码编制能力, 同时有一定的软件测试能力。为了达到这一目标, 围绕强化学生的职业技能和岗位适应能力, 我们在教学方法和手段等方面进行了改革和探索。

2 教学方法改进

分析授课对象大都是只有较少程序设计基础的大学学生, 加之教科书内容的组织一般比较抽象化, 有些概念难以理解。如果照本宣科, 容易使学生产生厌倦、畏惧心理, 难以收到好的教学效果。因此采用传统的教学方法授课是不现实的, 在具体的教学实践中, 我们灵活运用多种教学方法, 优化课堂教学质量, 现就以下几个方面作详细介绍:

2.1 启发式教学法

课堂教学中在讲授新的知识时, 宜采用启发诱导的方法, 据学生获得和掌握知识和技能所需要的思维过程和思维方法, 按思维流程设计相应的启发式问题, 启发学生思考和完成学习任务, 并逐步过渡到让学生自己向自己提出问题、自我启发解决一类学习任务。这就要运用启发式的教学方法, 通过一步步诱导, 逐渐逼近目标, 最后水到渠成地完成任务。

2.2 实例教学法

教材上的大部分程序例子是纯粹为说明语法概念而编写的, 没有实用性的价值, 让人读来枯燥而无味。所以教学时不能完全照搬这样的例子, 应该尽量采用解决实际问题的例子, 让学生体会到学有所用, 才能激发其学习的动力。

程序设计语言教学的真正目的是:让学生掌握如何利用该语言, 来解决现实世界的实际问题。因此优秀的教学模式应该以程序设计为主线, 寓概念于实例中, 将复杂枯燥的语法知识分解到每个生动、有趣、实用的程序实例中, 对于不同专业的学生举出不同的实例, 以应用作为出发点, 重点介绍程序设计方法和思路, 在分析程序和程序设计中让学生逐步熟悉基本的语法和语句, 并把软件工程学的思想贯穿于算法分析和程序设计的过程中。

2.3 实践教学法

Java语言是一门实践性非常强的课程, 单单依靠课堂的教学是不够的, 程序设计技能的培养只有通过大量的编程训练和上机实习才能获得。因此不可忽视实际编程、上机实验这一重要环节。对于上机实验的选题, 依然贯彻以应用为出发点的原则, 结合生活、结合具体专业精心挑选难易适中、趣味性强的题目。通常采用“小题目大任务”的方法, 即每个实验学生编写的“小题目”并不是孤立的, 而是相互联系的, 实际上它们都是一个较大型较复杂程序的各个有效的组成部分。

2.3.1 考虑学生的个体差异, 将实验设置成基础性实验题目和提高性实验题目两部分。

这两类实验都是结合相关课程的教学需要由授课教师设计的, 前者目的在于帮助学生掌握基础知识和实验研究方法, 后者则在于培养和鼓励学生的学习兴趣、扩大知识面以及培养学生的应用能力和创新意识。

2.3.2 允许学生结合本人的兴趣, 从实际应用中选择有具体应用背景的实验题目, 充分发挥学生的主动性。

或由教师结合实际给学生布置一些较大的设计课题, 学生也可以统一组织成若干个学习小组, 协作共同完成。这样一方面锻炼了学生的自己动手能力, 也加强了他们交流与团结协作的精神;另一方面确实能将理论与实践相结合, 从而大大激发了学生的学习热情, 为其今后的学习和工作打下良好的基础。

2.3.3 建立一套完整的实践课考核方案。

认真检查上机题的完成情况, 检查工作最好在机房进行。检查时不仅要求学生演示最终的运行结果, 还要随机询问设计思路、出错处理、甚至源程序语句说明等, 以确认学生独立或合作完成指定任务的情况并给出合理的评分。

2.4 角色转换教学法

转换角色是教师要从课堂教学的“主角”转换成“配角”, 学生从被动接受的“配角”转换成“主角”, 这是现代教学原则所倡导的, 也是提高教学质量、培养学生能力所必需的;二是教师在安排、组织课程内容时转换角色, 教师要从作为初学者的学生的角度出发组织教学, 这样才能深入浅出, 便于学生理解。

3 教学手段的改革

3.1 采用多媒体教学方式

利用投影进行直观教学, 获得较好的教学效果。在利用多媒体教学过程中, 有许多方面需要注意:

3.1.1 按培养目标组织课堂教学内容。本课程从人才培养中的地位及作用的角度, 设计课程的教学内容及教学环节。

3.1.2 对教材进行再创造。高职强调应用性和适应性的人材, 因此, 在制作多媒课件时, 对教材进行再创造, 理论以“够用”为度, 突出高职培养应用型高技能人才的特点, 重新组织了内容, 以程序实例为中心, 打破了以教材为中心的传统教学模式, 不完全按教材的顺序授课, 而是以精选出的程序实例为中心, 把授课的重点放在具体实例的讲述上。3.1.3 加强互动性、趣味性。

无论在课堂教学中, 还是实践教学中, 我注重演示、操作、讲解的有机结合, 并尽量做到图文声并茂, 激发了学生的学习兴趣;直接使用各种软件实时操作进行教学, 学生可以同步感受软件的运行过程;演示程序的调试与运行过程, 使教学更具直观性和互动性。

3.2 采用校园网教学

把课程的重点及难点通过分析后提前发布到校园网供学生参考, 并及时得到反馈信息, 这样教师上课时也能做到心中有数。另外还把一些典型的实例及课外选做内容分配给学生, 让他们根据自身特点及能力有选择地参考或完成。

4 教学环节的改进

以上教学方法要想付诸实施还必须通过各个教学环节来辅助完成。在整个教学过程中我采用的是以下的教学环节:

4.1 课堂辅导

每章安排讨论课2学时左右, 同时给学生留一些小实例为思考题, 以提高分析问题、解决问题的能力。另外, 我们还坚持通过课堂讨论和答疑的方式, 解决学生自学和实例中所遇到的问题。

4.2 课后辅导

课堂的时间毕竟是有限的, 为了帮助学生巩固课堂所学的理论知识, 为上机实践做好理论和技术上的准备, 必须做好课后的教学辅导。为此安排两周一次或一周一次的答疑是非常必要的。

4.3 上机操作

计算机专业要求有很高的实际操作技能, 对于我们高职学生实践性要求更高, 如果只注重背书本, 学生毕业后也不会适应实际工作需要的。所以在解决一些习题时一定要尽量让学生直接上机验证或是编程, 这样学生在解决问题的同时很大的提高了动手能力。

4.4 改革考核方式

现行考试在很大程度上仍然是传统的考试方式, 以理论卷面为主, 难以考查学生对实践技能的掌握情况。教学管理部门对期末考试形式、时间和空间等规定太死, 不利于教师根据课程性质和特点以及学生个性差异选择考试方法, 更不利于全面真实地考核学生的知识、技能和能力。因此必须将考试重点转移到考核学生的实践技能方面。这就要求改革考方式和考试内容。我采用以平时大作业或项目为主的实践型考核方式, 大大调动了学生的实际动手的积极性, 对学生能力的提高作用显著。

5 结论

本人通过对5届共12个班的学生在教学过程中严格按照上述方案执行之后, 受到了学生的普遍欢迎和肯定, 教学效果有了很大提高, 尤其在掌握运用面向对象的思想进行分析、设计、解决现实问题方面效果显著。但由于此方案实施的时间不长, 并且处于探索中, 有些地方还需要在教学实践中加以改进, 以便更好地服务“Java程序设计”的教学工作, 提高学生对这门课及面向对象的程序设计思路的掌握水平。

摘要:本文主要分析高职高专“Java程序设计”教学现状, 并依据实际教学经验提出了从教学方法、教学手段、教学环节和实践教学以及考核方式等几个方面着手, 探讨对应用型软件人才培养中“Java程序设计”课程的教学改革。

关键词:教学方法,教学手段,教学环节,实践教学,考核方式,应用型软件人才

参考文献

[1]张光泉.对高职教育中实训教学的几点看法.河北职业技术学院学报, 2001, (2) :15-17.

[2]杨延广.对高职程序设计课教学方法的研究与探讨.高教论坛, 2006, 2.

[3]王卫生.Java程序设计与实训教程.北京:理工大学出版社, 2007, 2.

篇4:Java笔试题目

Java笔试题:

一. 选择题

1. 以下属于面向对象的特征的是(C,D)。(两项)

A) 重载

B) 重写

C) 封装

D) 继承

2. 以下代码运行输出是(C)

public class Person{

private String name=”Person”;

int age=0;}

public class Child extends Person{

public String grade;

public static void main(String[] args){

Person p = new Child;

System.out.println(p.name);

}

}

A) 输出:Person

B) 没有输出

C) 编译出错

D) 运行出错

3. 在使用super 和this关键字时,以下描述正确的是(A)

A) 在子类构造方法中使用super()显示调用父类的构造方法,super()必须写在子类构造方法的第一行,否则编译不通过

B) super()和this()不一定要放在构造方法内第一行

C) this()和super()可以同时出现在一个构造函数中

D) this()和super()可以在static环境中使用,包括static方法和static语句块

4. 以下对封装的描述正确的是(D)

A) 只能对一个类中的方法进行封装,不能对属性进行封装

B) 如果子类继承了父类,对于父类中进行封装的方法,子类仍然可以直接调用

C) 封装的意义不大,因此在编码时尽量不要使用

D) 封装的主要作用在于对外隐藏内部实现细节,增强程序的安全性

5. 以下对继承的描述错误的是(A)

A) Java中的继承允许一个子类继承多个父类

B) 父类更具有通用性,子类更具体

C) Java中的继承存在着传递性

D) 当实例化子类时会递归调用父类中的构造方法

6. 以下程序的运行结果是(D)

class Person{

public Person(){

System.out.println(“this is a Person”);

}

}

public class Teacher extends Person{

private String name=”tom”;

public Teacher(){

System.out.println(“this is a teacher”);

super();

}

public static void main(String[] args){

Teacher teacher = new Teacher();

System.out.println(this.name);

}

}

A) this is a Person

this is a teacher

tom

B) this is a teacher

this is a Person

tom

C) 运行出错

D) 编译有两处错误

7. 以下说法错误的是()

A) super.方法()可以调用父类的所有非私有方法

B) super()可以调用父类的所有非私有构造函数

C) super.属性可以调用父类的所有非私有属性

D) this和super关键字可以出现在同一个构造函数中

8. 以下关于final关键字说法错误的是(A,C)(两项)

A) final是java中的修饰符,可以修饰类、接口、抽象类、方法和属性

B) final修饰的类肯定不能被继承

C) final修饰的方法不能被重载

D) final修饰的变量不允许被再次赋值

9. 访问修饰符作用范围由大到小是(D)

A) private-default-protected-public

B) public-default-protected-private

C) private-protected-default-public

D) public-protected-default-private

10. 以下(D)不是Object类的方法

A) clone()

B) finalize()

C) toString()

D) hasNext()

11. 多态的表现形式有(A)

A) 重写

B) 抽象

C) 继承

D) 封装

12. 以下对重载描述错误的是(B)

A) 方法重载只能发生在一个类的内部

B) 构造方法不能重载

C) 重载要求方法名相同,参数列表不同

D) 方法的返回值类型不是区分方法重载的条件

13. 以下(D)添加到ComputerBook中不会出错

class Book{

protected int getPrice(){

return 30;

}

}

public class ComputerBook extends Book{

}

A) protected float getPrice(){}

B) protected int getPrice(int page){}

C) int getPrice(){}

D) public int getPrice(){return 10;}

14. 以下对抽象类的描述正确的是(C)

A) 抽象类没有构造方法

B) 抽象类必须提供抽象方法

C) 有抽象方法的类一定是抽象类

D) 抽象类可以通过new关键字直接实例化

15. 以下对接口描述错误的有(D)

A) 接口没有提供构造方法

B) 接口中的方法默认使用public、abstract修饰

C) 接口中的属性默认使用public、static、final修饰

D) 接口不允许多继承

16. 以下代码,描述正确的有(A)

interface IDemo{

public static final String name;1

void print();2

public void getInfo();3

}

abstract class Person implements IDemo{4

public void print(){

}

}

A) 第1行错误,没有给变量赋值

B) 第2行错误,方法没有修饰符

C) 第4行错误,没有实现接口的全部方法

D) 第3行错误,没有方法的实现

17. 接口和抽象类描述正确的有(B,C)(两项)

A) 抽象类没有构造函数

B) 接口没有构造函数

C) 抽象类不允许多继承

D) 接口中的方法可以有方法体

18. 以下描述错误的有(C)

A) abstract 可以修饰类、接口、方法

B) abstract修饰的类主要用于被继承

C) abstract 可以修饰变量

D) abstract修饰的类,其子类也可以是abstract修饰的

19. 以下描述正确的有(B)

A) 方法的重写应用在一个类的内部

B) 方法的重载与返回值类型无关

C) 构造方法不能重载

D) 构造方法可以重写

20. 以下程序运行结果是(A)

public class Test extends Father{

private String name=”test”;

public static void main(String[] args){

Test test = new Test();

System.out.println(test.getName());

}

}

class Father{

private String name=”father”;

public String getName() {

return name;

}

}

A) father

B) test

C) 编译出错

D) 运行出错,无输出

21. 以下对异常的描述不正确的有(C)

A) 异常分为Error和Exception

B) Throwable是所有异常类的父类

C) Exception是所有异常类父类

D) Exception包括RuntimeException和RuntimeException之外的异常

22. 在try-catch-finally语句块中,以下可以单独与finally一起使用的是(B)

A) catch

B) try

C) throws

D) throw

23. 下面代码运行结果是(B)

public class Demo{

public int add(int a,int b){

try{

return a+b;

}catch(Exception e){

System.out.println(“catch 语句块”);

}finally{

System.out.println(“finally 语句块”);

}

return 0;

}

public static void main(String[] args){

Demo demo = new Demo();

System.out.println(“和是:”+demo.add(9,34));

}

}

A) 编译异常

B) finally语句块 和是:43

C) 和是:43 finally语句块

D) catch语句块 和是:43

24. 以下描述不正确的有(D)

A) try块不可以省略

B) 可以使用多重catch块

C) finally块可以省略

D) catch块和finally块可以同时省略

25. 以下对自定义异常描述正确的是(C)

A) 自定义异常必须继承Exception

B) 自定义异常可以继承自Error

C) 自定义异常可以更加明确定位异常出错的位置和给出详细出错信息

D) 程序中已经提供了丰富的异常类,使用自定义异常没有意义

26. 以下程序运行结果是(D)

public class Test {

public int div(int a, int b) {

try {

return a / b;

}catch(Exception e){

System.out.println(“Exception”);

}catch(NullPointerException e){

System.out.println(“ArithmeticException”);

}

catch (ArithmeticException e) {

System.out.println(“ArithmeticException”);

} finally {

System.out.println(“finally”);

}

return 0;

}

public static void main(String[] args) {

Test demo = new Test();

System.out.println(“商是:” + demo.div(9, 0));

}

}

A) Exception finally 商是:0

B) ArithmeticException finally 商是:0

C) finally商是:0

D) 编译报错

27. 以下对TCP和UDP描述正确的是(D)

A) TCP不能提供数据的可靠性

B) UDP能够保证数据库的可靠性

C) TCP数据传输效率高于UDP

D) UDP数据传输效率高于TCP

28. 在Java中,下面对于构造函数的描述正确的是(D)。(选择一项)

A) 类必须显示定义构造函数

B) 构造函数的返回类型是void

C) 构造函数和类有相同的名称,并且不能带任何参数

D) 一个类可以定义多个构造函数

29. 根据下面的代码,

String s = null;

会抛出NullPointerException异常的有(A,C)。[两项]

A) if( (s!=null) & (s.length()>0) )

B) if( (s!=null) & & (s.length()>0) )

C) if( (s==null) | (s.length()==0) )

D) if( (s==null) || (s.length()==0) )

30. .在Java中,关于HashMap类的描述,以下廉洁错误的是( B )。

A) HashMap使用键/值得形式保存数据

B) HashMap 能够保证其中元素的顺序

C) HashMap允许将null用作键

D) HashMap允许将null用作值

31. 下列选项中关于java中super关键字的说法错误的是( B )

A) super关键字是在子类对象内部指代其父类对象的引用

B) super关键字不仅可以指代子类的直接父类,还可以指代父类的父类

C) 子类可以通过super关键字调用父类的方法

D) 子类可以通过super关键字调用父类的属性

32. 在Java中,以下代码( A )正确地创建了一个InputStreamReader对象。

A) InuptStreamReader(new FileInputStream(“1.dat”));

B) InuptStreamReader(new FileReader(“1.dat”));

C) InuptStreamReader(new BufferReader(“1.dat”));

D) InuptStreamReader (“1.dat”);

33. 在Java中,( D )类提供定位本地文件系统,对文件或目录及其属性进行基本操作。

A) FileInputStream

B) FileReader

C) FileWriter

D) File

34. Java中的集合类包括ArrayList、LinkedList、HashMap等类,下列关于集合类描述错误的是(C)(选择一项)

A) ArrayList和LinkedList均实现了List接口

B) ArrayList的访问速度比LinkedList快

C) 添加和删除元素时,ArrayList的表现更佳

D) HashMap实现Map接口,它允许任何类型的键和值对象,并允许将null用作键或值

35. 在Java中开发JDBC应用程序时,使用DriverManager类的getConnection()方法

建立与数据源的连接语句为:

Connection con = DriverManager.getConnection(“jdbc:odbc:news”);

URL连接中的”n ews”表示的是(C)(选择一项)

A) 数据库中表的名称

B) 数据库服务器的机器名

C) 数据源的名称

D) 用户名

36. 在Java中,JDBCAPI定义了一组用于与数据库进行通信的接口和类,它们包括在(B)包中。

A) java.lang

B) java.sql

C) java.util

D) java.math

37. Java中,以下( B )接口以键_值对的方式存储对象。

A) java.util.Collection

B) java.util.Map

C) java.util.List

D) java.util.Set

38. 以下关于对象序列化描述正确的是( C,D )[两项]

A) 使用FileOutputStream可以将对象进行传输

B) 使用PrintWriter可以将对象进行传输

C) 使用ObjectOutputStream类完成对象存储,使用ObjectInputStream类完成对象读取

D) 对象序列化的所属类需要实现Serializable接口

39. 在Java中,( A )类可用于创建链表数据结构的对象。

A) LinkedList

B) ArrayList

C) Collection

D) HashMap

40. 分析下面这段Java代码,它的运行结果是( C )。

Import java.io.*;

Public class B{

Public static void main(string [] args){

int i=12;

System.out.println(i+=i-=i*=i);}}

A) 100

B) 0

C) -120

D) 程序无法编译

41. 使用JDBC事务的步骤是(C,A,B,D)(多选)

A) 取消Connection的事务自动提交方式

B) 发生异常回滚事务

C) 获取Connection对象

D) 操作完毕提交事务

42. 以下对JDBC事务描述错误的是( B )

A) JDBC事务属于JAVA事务的一种

B) JDBC事务属于容器事务类型

C) JDBC事务可以保证操作的完整性和一致性

D) JDBC事务是由Connection发起的,并由Connection控制

43. 要通过可滚动的结果集更新数据,以下正确的是(A

A) pst=con.prepareStatement(sql, ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE)

B) pst=con.prepareStatement(sql, ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY)

C) pst=con.prepareStatement(sql, Resu ltSet.TYPE_SCROLL_SENSITIVE)

D) pst=con.prepareStatement(sql, ResultSet.CONCUR_UPDATABLE)

44. 存储过程pro有两个参数,第一个为输入参数,第二个为输出参数,以下代码正确的是(C)

A) CallableStatement cst=con.prepareCall(“(call pro(?,?))”);

B) CallableStatement cst=con.prepareCall(“(call pro(?))”);

C) CallableStatement cst=con.prepareCall(“{call pro(?,?)}”);

D) CallableStatement cst=con.prepareCall(“{call pro(?,?,?)}”);

45. 以下描述正确的是(B)

A) CallableStatement是PreparedStatement的父接口

B) PreparedStatement是CallableStatement的父接口

C) CallableStatement是Statement的子接口

D) PreparedStatement是Statement的父接口

46. 要删除book表中书籍(bookName)是”java”的记录,以下代码正确的是(A

String sql=”delete from book where bookName=?”;

PreparedStatement pst=con.preparedStatement(sql);

______________________________

pst.execute();

A) pst.setString(1,”java”);

B) pst.setString(0,”java”);

C) pst.setInt(0,”java”);

D) 以上选项都不正确

47. 获取ResutlSet对象rst的第一行数据,以下正确的是(B)

A) rst.hashNext();

B) rst.next();

C) rst.first();

D) rst.nextRow();

48. 以下可以正确获取结果集的有(AD)(多选)

A) Statement sta=con.createStatement();

ResultSet rst=sta.executeQuery(“select * from book”);

B) Statement sta=con.createStatement(“select * from book”);

ResultSet rst=sta.executeQuery();

C) PreparedStatement pst=con.preparedStatement();

ResultSet rst=pst.executeQuery(“select * from book”);

D) PreparedStatement pst=con.preparedStatement(“select * from book”);

ResultSet rst=pst.executeQuery();

49. 以下负责建立与数据库连接的是(D)

A) Statement

B) PreparedStatement

C) ResultSet

D) DriverManager

50. 使用JDBC连接数据库的顺序是(B,A,D,C,E)(多选)

A) 加载驱动

B) 导入驱动包

C) 发送并处理SQL语句

D) 建立于数据库的连接

篇5:金讯Java笔试题目

db2中如何使用sql语句编写多表嵌套查询

sevlet中如何使用定时访问数据库

jsp中的.内置对象和作用

如何知道在线人数,方法和实现

struts标签编写access跳转到index,jsp

sevlet如何返回一个javabean

拓展阅读:公司JAVA开发常用的面试题

1、jsp有哪些内置对象?作用分别是什么?

2、描述一下servlet的生命周期和基本架构,

3、多线程有几种实现方法,都是什么?

同步有几种实现方法,都是什么?

4、作用域public private protected以及不写时的区别?

5、用JAVA实现数据库查询(写一段完整的程序)。

6、用正则表达式判断123456_78不是一个数字。

上一篇:美术学院年度工作总结下一篇:结婚爱情短句