java笔试题目汇总.docx
《java笔试题目汇总.docx》由会员分享,可在线阅读,更多相关《java笔试题目汇总.docx(33页珍藏版)》请在冰点文库上搜索。
java笔试题目汇总
JAVA代码查错
1.abstract class Name {
private String name;
public abstract boolean isStupidName(String name) { }
}
大侠们,这有何错误?
答案:
错。
abstract method必须以分号结尾,且不带花括号。
2.public class Something {
void doSomething () {
private String s = "";
int l = s.length(); }}
有错吗?
答案:
错。
局部变量前不能放置任何访问修饰符 (private,public,和protected)。
final可以用来修饰局部变量
(final如同abstract和strictfp,都是非访问修饰符,strictfp只能修饰class和method而非variable)。
3.abstract class Something {
private abstract String doSomething ();
}
这好像没什么错吧?
答案:
错。
abstract的methods不能以private修饰。
abstract的methods就是让子类implement(实现)具体细节的,怎么可以用private把abstract
method封锁起来呢?
(同理,abstract method前不能加final)。
4.public class Something {
public int addOne(final int x) {
return ++x; }}
这个比较明显。
答案:
错。
int x被修饰成final,意味着x不能在addOne method中被修改。
5.public class Something {
public static void main(String[] args) {
Other o = new Other();
new Something().addOne(o); }
public void addOne(final Other o) {
o.i++; }}
class Other {
public int i;}
和上面的很相似,都是关于final的问题,这有错吗?
答案:
正确。
在addOne method中,参数o被修饰成final。
如果在addOne method里我们修改了o的reference(比如:
o = new Other(),那么如同上例这题也是错的。
但这里修改的是o的member variable(成员变量),而o的reference并没有改变。
6.class Something {
int i;
public void doSomething() {
System.out.println("i = " + i); }}
有什么错呢?
看不出来啊。
答案:
正确。
输出的是"i = 0"。
int i属於instant variable (实例变量,或叫成员变量)。
instant variable有default value。
int的default value是0。
7.class Something {
final int i;
public void doSomething() {
System.out.println("i = " + i); }}
和上面一题只有一个地方不同,就是多了一个final。
这难道就错了吗?
答案:
错。
final int i是个final的instant variable (实例变量,或叫成员变量)。
final的instant variable没有default value,必须在constructor (构造器)结束之前被赋予一个明确的值。
可以修改为"final int i = 0;"。
8.public class Something {
public static void main(String[] args) {
Something s = new Something();
System.out.println("s.doSomething() returns " + doSomething()); }
public String doSomething() {
return "Do something ..."; }}
看上去很完美。
答案:
错。
看上去在main里call doSomething没有什么问题,毕竟两个methods都在同一个class里。
但仔细看,main是static的。
static method不能直接call non-static methods。
可改成"System.out.println("s.doSomething() returns " + s.doSomething());"。
同理,static method不能访问non-static instant variable。
9.此处,Something类的文件名叫OtherThing.java
class Something {
private static void main(String[] something_to_do) {
System.out.println("Do something ..."; }}
这个好像很明显。
答案:
正确。
从来没有人说过Java的Class名字必须和其文件名相同。
但public class的名字必须和文件名相同。
10.interface A{
int x = 0;}
class B{ int x =1;}
class C extends B implements A {
public void pX(){
System.out.println(x); }
public static void main(String[] args) {
new C().pX(); }}
答案:
错误。
在编译时会发生错误(错误描述不同的JVM有不同的信息,意思就是未明确的x调用,两个x都匹配(就象在同时import java.util和java.sql两个包时直接声明Date一样)。
对于父类的变量,可以用super.x来明确,而接口的属性默认隐含为 public static final.所以可以通过A.x来明确。
11.interface Playable {
void play();}
interface Bounceable {
void play();}
interface Rollable extends Playable, Bounceable {
Ball ball = new Ball("PingPang";}
class Ball implements Rollable {
private String name;
public String getName() {
return name; }
public Ball(String name) {
this.name = name; }
public void play() {
ball = new Ball("Football";
System.out.println(ball.getName()); }}
这个错误不容易发现。
答案:
错。
"interface Rollable extends Playable, Bounceable"没有问题。
interface可继承多个interfaces,所以这里没错。
问题出在interface Rollable里的"Ball ball = new Ball("PingPang";"。
任何在interface里声明的interface variable (接口变量,也可称成员变量),默认为public static final。
也就是说"Ball ball = new Ball("PingPang";"实际上是"public static final Ball ball = new Ball("PingPang";"。
在Ball类的Play()方法中,"ball = new Ball("Football";"改变了ball的reference,而这里的ball来自Rollable interface,Rollable interface里的ball是public static final的,final的object是不能被改变reference的。
因此编译器将在"ball = new Ball("Football";"这里显示有错。
一、单选题
1、以下哪条语句会产生运行错误:
(A)
A.var obj = ( ); B.var obj = [ ]; C.var obj = { }; D.var obj = / /;
2、以下哪个单词不属于javascript保留字:
(B)
A.with B.parent C.class D.void
3、请选择结果为真的表达式:
(C)
A.null instanceofObject B.null === undefined C.null== undefined D.NaN == NaN
二、不定项选择题
4、请选择对javascript理解有误的:
(ABCD)
A.JScript是javascript的简称
B.javascript是网景公司开发的一种Java脚本语言,其目的是为了简化Java的开发难度
C.FireFox和IE存在大量兼容性问题的主要原因在于他们对javascript的支持不同上
D.AJAX技术一定要使用javascript技术
5、foo对象有att属性,那么获取att属性的值,以下哪些做法是可以的:
(ACE)
A.foo.att B.foo(“att”) C.foo[“att”] D.foo{“att”} E.foo[“a”+”t”+”t”]
6、在不指定特殊属性的情况下,哪几种HTML标签可以手动输入文本:
(AB)
A. B.C. D.
7、以下哪些是javascript的全局函数:
(ABC)
A.escape B.parseFloat C.eval D.setTimeout E.alert
8、关于IFrame表述正确的有:
(ABCD)
A.通过IFrame,网页可以嵌入其他网页内容,并可以动态更改
B.在相同域名下,内嵌的IFrame可以获取外层网页的对象
C.在相同域名下,外层网页脚本可以获取IFrame网页内的对象
D.可以通过脚本调整IFrame的大小
9、关于表格表述正确的有:
(ABCDE)
A.表格中可以包含TBODY元素 B.表格中可以包含CAPTION元素
C.表格中可以包含多个TBODY元素 D.表格中可以包含COLGROUP元素 E.表格中可以包含COL元素
10、关于IE的window对象表述正确的有:
(ACD)
A.window.opener属性本身就是指向window对象 B.window.reload()方法可以用来刷新当前页面
C.window.location=”a.html”和window.location.href=”a.html”的作用都是把当前页面替换成a.html页面
D.定义了全局变量g;可以用window.g的方式来存取该变量
三、问答题:
1、谈谈javascript数组排序方法sort()的使用,重点介绍sort()参数的使用及其内部机制
sort的实现的功能类似JAVA的比较器,数据排序从多维数组的第一维开始排序,可以自己定义排序方法,很不多的函数
2、简述DIV元素和SPAN元素的区别。
DIV有回车,SPAN没有
3、结合text这段结构,谈谈innerHTML outerHTML innerText之间的区别。
这个问题只要写一下看的很清楚 innerHTML对象里面的HTML,outerHTML包括对象和里面的
innerText对象里面的文本
4、说几条XHTML规范的内容(至少3条)
属性加引号,不能有不匹配的标签,加定义
5、对Web标准化(或网站重构)知道哪些相关的知识,简述几条你知道的Web标准?
W3C标准等
四、程序题:
1、完成foo()函数的内容,要求能够弹出对话框提示当前选中的是第几个单选框。
2、填充注释部分的函数体,使得foo()函数调用弹出”成功”的对话框。
代码应尽量简短。
function reverse(str) {
// 在此处加入代码,完成字符串翻转功能
return str.split(",").reverse().join(",");
}
1编写一个方法求一个字符串的字节长度
newfunction(s)
{
if(!
arguments.length||!
s)returnnull;
if(”"==s)return0;
varl=0;
for(vari=0;i{
if(s.charCodeAt(i)>255)l+=2;
elsel++;
}
alert(l);
}(”hello你好,我好,大家好!
world!
”);
2编写一个方法去掉一个数组的重复元素
Array.prototype.strip=function()
{
if(this.length<2)return[this[0]]||[];
vararr=[];
for(vari=0;i{
arr.push(this.splice(i–,1));
for(varj=0;j{
if(this[j]==arr[arr.length-1])
{
this.splice(j–,1);
}
}
}
returnarr;
}
vararr=["abc",85,"abc",85,8,8,1,2,5,4,7,8];
alert(arr.strip());
3说出3条以上ff和ie的脚本兼容问题
IE有children,FF没有;IE有parentElement,FF没有;IE有innerText,outerText,outerHTML,FF没有;FF有HTMLElement,HTMLDivElement,XMLDocument,DocumentFragment,Node,Event,Element等等,IE没有;IE有数据岛,FF没有;IE跟FF创建HttpRequest实例的方法不一样。
。
等等。
。
4用脚本写去除字符串的前后空格
String.prototype.trim=function(mode)
{//前后去空格
if(mode==’left’){
return((this.charAt(0)==”“&&this.length>0)?
this.slice
(1).trim(’left’):
this);
}else
if(mode==’right’){
return((this.charAt(this.length-1)==”“&&this.length>0)?
this.slice(0,this.length-1).trim(’right’):
this);
}else{
returnthis.trim(’left’).trim(’right’);}};
5算出字符串中出现次数最多的字符是什么,出现了多少次
//
[CDATA[varstr="adadfdfseffserfefsefseeffffftsdg";//命名一个变量放置给出的字符串
varmaxLength=0;//命名一个变量放置字母出现的最高次数并初始化为0
varresult='';//命名一个变量放置结果输入
while(str!
=''){//循环迭代开始,并判断字符串是否为空
oldStr=str;//将原始的字符串变量赋值给新变量
getStr=str.substr(0,1);//用字符串的substr的方法得到第一个字符(首字母)
eval("str=str.replace(/"+getStr+"/g,'')");//详细如补充
if(oldStr.length-str.length>maxLength)
{//判断原始的字符串的长度减去替代后字符串长度是否大于之前出现的最大的字符串长度
maxLength=oldStr.length-str.length;//两字符串长度相减得到最大的字符串长度
result=getStr+"="+maxLength//返回最大的字符串结果(字母、出现次数)}}
alert(result)//弹出结果
//]]>
6写出3中使用this的典型应用
在HTML元素事件属性中inline方式使用this关键字:
7.最后一个问题是,如何制作一个combo选项,就是可以输入可以下拉菜单选择。
这个网上有很多成品,主要是通过绝对定位和相对定位结合的方式,改造原有的select标签和input标签的方法。
1、JavaScript包括哪些数据类型?
我回答的是有两种:
基本类型和对象,其中基本类型包括数字、字符串、布尔和null;对象(类似对象),包括数组、函数、内置对象、自定义对象。
不过按理说字符串也有些对象的特点。
我这个回答是参考的JavaScript权威指南的,有些小问题,第一类中缺少了undefined。
搜索了下,网上还有几种回答:
第一种:
共九种类型:
1.未定义(