一些题目

下面哪些方法加入到子类里面,【不会】造成父类的方法被覆盖?

public class Parent {
  public int addValue( int a, int b) {
  int s;
  s = a+b;
  return s;
  }
}
  class Child extends Parent {
  }

A int addValue( int a, int b ){// do something...}
B public void addValue (){// do something...}
C public int addValue( int a, int b )throws MyException {//do something...}
D public float addValue ( int a ,int b, float b=1.0 ){// do something...}

此题涉及方法重载(overload),方法重写(override)以及类派生时方法重写的规则。方法重载的规则是:

一、参数列表必须不同,个数的不同完全可以,如果个数相同,则参数类型的不同不会引起歧意,例如int和long,float和double就不能作为唯一的类型不同;
二、返回值可以不同,但是不能是重载时唯一的不同点(这点和c++中不同,c++中返回类型必须一致)。
方法重写发生在类继承时,子类可以重写一个父类中已有的方法,必须在返回类型和参数列表一样时才能说是重写,否则就是重载,java中方法重写的一个重要而且容易被忽略的规则是重写的方法的访问权限不能比被重写的方法的访问权限低!
重写的另一个规则是重写的方法不能比被重写的方法抛弃(throws)更多种类的异常,其抛弃的异常只能少,或者是其子类,不能以抛弃异常的个数来判断种类,而应该是异常类层次结果上的种类。
此题中选取项A的错误就是重写的访问权限比被重写的方法的低,而B属于重载,选项C的错误在于比被重写的方法抛弃了更多种类的异常。选项D中,当只传递两个变量的值的时候,那系统就不知道倒底调用哪个方法了,因为b为常量,可以不指定,所以只有选项B是符合题意的。

 

2  Application和Java Applet的区别。
Java语言是一种半编译半解释的语言。Java的用户程序分为两类:Java Application和Java Applet。这两类程序在组成结构和执行机制上都有一定的差异,主要体现在以下几方面:
(1)运行方式不同。Java Application是完整的程序,可以独立运行;Java Applet程序不能单独运行,它必须嵌入到用HTML语言编写的Web页面中,通过与Java兼容的浏览器来控制执行。
(2)运行工具不同。Java Application程序被编译以后,用普通的Java解释器就可以使其边解释边执行,而Java Applet必须通过网络浏览器或者Applet观察器才能执行。
(3)程序结构不同。每个Java Application程序必定含有一个并且只有一个main方法,程序执行时,首先寻找main方法,并以此为入口点开始运行。含有main方法的那个类,常被称为主类,也就是说,Java Application程序都含有一个主类。而Applet程序则没有含main方法的主类,这也正是Applet程序不能独立运行的原因。尽管Applet没有含main方法的主类,但Applet一定有一个从 java.applet.Applet派生的类,它是由Java系统提供的。
(4)受到的限制不同Java Application程序可以设计成能进行各种操作的程序,包括读/写文件的操作,但是 Java Applet 对站点的磁盘文件既不能进行读操作,也不能进行写 操作。然而,由于Applet的引入,使Web页面具有动态多媒体效果和可交互性能,这使由名为超文本、实为纯文本的HTML语言编写成的Web页面真正具有了超文本功能,不但可以显示文本信息,而且还可以有各种图片效果和动态图

 

已知二叉树后序遍历序列是DABEC 中序遍历列是 DEBAC ,它的前序遍历序列是

请使用大写字母表示结果

 

这个树如下
----C
---/
--E
-/-/
D---B
-----/
------A

这种题,主要考虑个节点的逻辑关系,
先序遍历就是:根左右
后序遍历就是:左右根
中序遍历就是:左根右。

抓住一个关键,
例如本题中后序和中序第一个节点都是D,那么可以确定:D没有右子树,D本身是一个节点的左子树。中序遍历,D后面是E,说明D父节点是E,在草稿上画出来这个关系。在看中序遍历E后面是B,说明B是E的右子树,这样我们确定了3个节点了。再看中序的遍历B后的是A,但我们无法确定是左还是右,先放着,继续看后序遍历E后面是C,通过这个条件,说明C可能是E的父节点的右子树,也可能就是E的父节点,但是本题一共只有5个节点,所以 C肯定是E的父节点。这样,我们可以确定4个节点了,这剩下A节点。要区分A是左还是右,我们看后序遍历,A是在D之后,B之前,这个条件也只能说A是B 子节点,但仍然不能说明左右。所以我觉得:这道题有2个解:A在左在右,都是正确的。A是左是右,都符合后序和中序的遍历,都为正确。所以,只画这个图是不完整的,应该把A分别为左右节点的图都画出来,作为答案,A的位置不同,虽然先序遍历的结果都一样,但是图是不一样的。

 

设一棵完全二叉树共有699个结点,则在该二叉树中的叶子结点数为__个?
只填写数字即可

350个
699=N+(N-1)

二叉树中的结点分为三种:
度为2,度为1,度为0。即这个结点有两个孩子结点,有一个孩子结点,没有孩子结点(叶结点)。
结点总数=度为2的结点+度为1的结点+度为0的结点
在任意二叉树中,度为2的结点的数目比度为0的结点(叶结点)数目少一个。
例如,只有三个结点的二叉树,其度为2的结点数目为1(根结点),度为0的结点(叶结点)有两个。
 0
 / /
0  0
完全二叉数中,没有度为1的结点。所以
结点总数=度为2的结点+度为0的结点
699=N+(N-1)

 

5  下列关于构造器,普通函数与类方法名的代码是否正确?
public class T {
  public T() {
  }

  public void T() {
    System.out.println(1);
  }

  public static void main(String[] args) {
    new T().T();
  }
}

 

正确的。void T()是一个新的方法

 

6 判断

由于URL对象对应的Internet地址可以划分为“协议名”、“端口号”和“文件名”3部分,所以创建一个URL对象后,可以通过修改这3部分内容来修改这个URL对象的Internet地址。

 

错误

 

MyClass.java是一个java的源文件,里面允许没有MyClass这个class

对的

 

8  Java方法调用时参数都是按值传递的,从方法退出时,不会影响调用方的参数值

 

这个问题有点绕。
java 里,无论是传递一个数字,还是一个对象,实际传递的都是一个数值
如果是数字之类的,则这个数值代表的就是内容
如果是对象,则内容是参数指向的地址。

任何修改,都是对参数指向内容的修改,而不会修改以前的那个参数。
比如
int i=123;
myFunc(i);
在 方法里对参数的任何修改,都不会影响到这个i的,他依然是123
MyClass o = new MyClass();
myFunc(o);
在方法里对o的任何修改(比如让o指向了另外一个MyClass),都不会影响到调用着o的指向的,他依然指向自己的o.

 

有争议

 

9 用abstract修饰的类必须被继承才能使用

用abstract修饰的class中的方法如果是 static 就可以使用,下面的代码是正确的。

public class Test {
  void test() {
    ABS.test();
  }
}

abstract class ABS {
  static void test() {

  }
}

 

10 Abstract的类,是绝对不能被new的
也就是永远不会出现 new AbstractClass 这种情况

 

 匿名类可以直接来new 一个抽象类,只要实现了里面的抽象方法,比如
public class T {
  public static void main(String argv[]) {
    AbstractClass c = new AbstractClass() { // 这里是正确的写法
      @Override
      public void test() {
      }
    };
    c.test();
  }
}

abstract class AbstractClass {
  public abstract void test();
}

 

11 下面哪个方法可以在任何时候被任何线程调用而不会产生预期的异常?

 

A notify()
B wait()
C notifyAll()
D sleep()
E yield()
F synchronized(this)

 

 ABC 三个如果不是在监控状态(没有拿到同步锁),会抛出IllegalMonitorStateException 的!

 

12 下面的关于字符串和数字混合使用的表达式哪些是正确的?

 

A String s="你好";int i=3; s+=i;
B String s="你好";int i=3; if(i==s){ s+=i};
C String s="你好";int i=3; s=i+s;
D String s="你好";int i=3; s=i++;
E String s=null; int i=(s!=null)&&(s.length>0)?s.length():0;

 

说明 :B 字符串不能和数字直接进行比较
D 数字不能自动转为字符串
E 字符串没有length这个属性,应该使用length()这个方法

 

13 下面的代码如果可以编译并运行,那么将输出哪些结果?
  public void example() {
    try {
      unsafe(); // 一个不安全的方法
      System.out.println("Test 1");
    } catch (SafeException e) { // 截获安全的异常
      System.out.println("Test 2");
    } finally {
      System.out.println("Test 3");
    }
    System.out.println("Test 4");
  }

 

正确答案 acd

 

14 执行下列代码后的结果是什么?
    int x, a = 2, b = 3, c = 4;
    x = ++a+b +++ c ++;
    System.out.println(x);

 

答案 10

 

15  要从文件" file.dat"文件中读出第10个字节到变量c中,下列哪些方法可行?

 

A FileInputStream in=new FileInputStream("file.dat"); in.skip(9); int c=in.read();
 B FileInputStream in=new FileInputStream("file.dat"); in.skip(10); int c=in.read();
 C FileInputStream in=new FileInputStream("file.dat"); int c=in.read();
 D RandomAccessFile in=new RandomAccessFile("file.dat","r"); in.seek(9); int c=in.read();
 E RandomAccessFile in=new RandomAccessFile("file.dat"); in.skip(9); int c=in.readByte();
 F RandomAccessFile in=new RandomAccessFile("file.dat","r"); in.skip(9); int c=in.readByte();
 G RandomAccessFile in=new RandomAccessFile("file.dat","r"); in.seek(9); int c=in.readByte();

 

 ADG

 

B skip 是从忽略的数量,应该是9
C 读取的是第一个数据
E 构造器错误
F RandomAccessFile 没有skip这个方法,而是使用seek定位

 

16 下面关于线程的代码,编译和运行结果是?
public class X extends Thread implements Runnable {
  public void run() {
    System.out.println("this is run()");
  }
  public static void main(String args[]) {
    Thread t = new Thread(new X());
    t.start();
  }
}

 

答案 正确编译和运行

 

17  下面哪些表达式是正确的?

 

A byte=128;
B Boolean=null;
C long l=0xfffL;
D double=0.9239d;

 

答案 c

 

18 编译和执行下例关于继承抽象类的代码会输出什么?
abstract class MineBase {
  abstract void amethod();

  static int i;
}

public class Mine  extends MineBase {
  public static void main(String argv[]) {
    int[] ar = new int[5];
    for (i = 0; i < ar.length; i++)
      System.out.println(ar[i]);
  }
}
备选答案  A a sequence of 5 0’s will be printed
B Error:ar is used before it is initialized
C Error Mine must be declared abstract
D IndexOutOfBoundes Error

 

说明: 抽象方法必须被实现或者类也被声明为抽象类。 答案c。

 

19 下面哪些方法可以防止方法被子类覆盖(Override)?

 

A final void methoda() {}
B void final methoda() {}
C static void methoda() {}
D static final void methoda() {}
E final abstract void methoda() {}

 

说明:B 是语法错误
static 方法不存在override的说法,只有对象的方法才有override和overrload,所以 c,d都是错误的
E是语法错误。

答案 :A

 

20 下面哪些是Java关键字?

 

A if
B elseif
C THEN
D const
E try

 

答案 ADE ,const是保留字

 

21 以下的字符串操作正确的是?

 

给出下列声明:
String s1=new String(“Hello”);
String s2=new String(“there”);
String s3=new String();
以下的字符串操作正确的是?

 

A s3=s1+s2;
B s3=s1-s2;
C s3=s1&s2;
D s3=s1&&s2;

 

答案: A。

 

22 以下程序能输出Hello World吗?

 

public class Hello {
  static public void main(String[] arg) {
    System.out.println("Hello World");
  }
}

 

答案。可以。

 

23 接口是一个纯的抽象类,可以包含私有方法?

 

接口不是抽象类,里面的方法不能是私有的,都是public的。
里面的属性都是public final 的。

 

24 如下的数据经过强制转化后,其a、b数值一般为?

 

  short a = 128;
    byte b = (byte)a;

 

答案 128,-128

 

25  一个汉字在UTF-8编码中占用几个字节?

 

汉字使用UTF-8的占用3个字节
用GBK编码则2个字节就行了。

 

26 对象适配器模式是(  )原则的典型应用

 

A 合成聚合复用原则
B 里式代换原则
C 依赖倒转原则
D 迪米特法则

 

答案 c

 

27下面关于java.lang.Class对象的取得的代码哪些能正常编译?

 

A Class c = int.class;
B Class c = "hello".getClass();
C Class c = String[].class;
D Class c = Integer.getClass();
E Class c = Enum.class;
F Class c = Void.TYPE;

 

答案  ABCEF

 

28 根据前面的数字,下一个数字应该是多少?
4,2,2,3,6,15,?

 

规律为,后面除以前面的商为递增的
2/4 = 0.5
2/2 = 1;
3/2 = 1.5;
6/3 = 2;
15/6 = 2.5;
45/15 = 3;

 

29 下面哪些关于HTML的描述是正确的

 

A HTML中指定页面编码的关键词是charset
B HTML是一种自描述的语言
C div和table都可以用来做页面布局
D html代码必须按照规范才能够在浏览器中显示

 

答案 ac

 

30  下面哪些关于HTTP协议的描述是正确的?

 

A HTTP协议是建立在UDP协议之上的
B HTTP协议不支持 Persistent connection
C HTTP协议是无状态的协议
D 服务器返回的Status Code 在 200到300之间,表示请求被成功处理

 

A http是建立在tcp上的
B http 提供了keep-alive 只要这个时间足够长,依然可以看成是持久性连接
D 200是成功,其它的不是。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值