Java基础面试题目

 

1、编译java程序的命令是___B_____;运行java程序的命令是____A____;产生java文挡的命令是___D____;查询java类型是否是serializable类型的命令是____C___;产生java安全策略文件的命令是____E____;产生类型归档文件.jar的命令是___F_____。

A. java             B. javac             C. serialver

D.javadoc           E.policytool          F.jar

2、在使用super 和this关键字时,以下描述正确的是(A)
A 在子类构造方法中使用super()显示调用父类的构造方法,super()必须写在子类构造方法的第一行,否则编译不通过
B super()和this()不一定要放在构造方法内第一行
C this()和super()可以同时出现在一个构造函数中
D this()和super()可以在static环境中使用,包括static方法和static语句块

3、下面叙述正确的有_______C___D____E__ ___。

A.在一个java原文件中只能定义一个class

B在一个java原文件中只能定义一个interface

C在一个java原文件中可以定义多个class

D在一个java原文件中可以定义多个interface

E在一个java原文件中可以定义多个class和interface

F在一个java原文件中只能定义public class

G java原文件的前缀一定是所包含类型的名字

 

4、java程序中程序运行入口方法main的签名正确的有__A__B____。

A. public static void main(String args[])

B. static public void main(String[] args)

C. public void static main(String[] args)

D. public void main(String args[])

 

  1. public class Test {

            void printValue(int m){

                  do {

System.out.println("The value is"+m);

                  } while( --m > 10 );

}

      public static void main(String args[]) {

                  int i=10;

                  Test t= new Test();

                  t.printValue(i);

            }

  }

  输出将是什么?   (C)

  A. The value is 8

    B. The value is 9

  C. The value is 10

  D. The value is 11

6、以下能作为class, interface, method或variable有效标识符的有____A___D__F_______。

A.For             B.boolean       C.23age

D. _id      E.my name      F. $this_is_a_long_variable_name

7、给出下面的代码:

  1) public void modify() {

  2)      int i, j, k;

  3)      i = 100;

  4)      while ( i > 0 ) {

  5)           j = i * 2;

    6)           System.out.println (" The value of j is " + j );

  7)           k = k + 1;

  8)           i--;

  9)      }

  10)}

哪些行在编译时可能产生错误? ____C____________。

  A. line 4

  B. line 6

  C. line 7

D. line 8

8、以下能作为char类型的字面值的有____B___。

A. “e”           B.’杰’        C. ‘\u12’      D.205

9、 byte变量的取值范围是_____B___。

A. 0 - 65535    B.-128 – 127   C.-256 – 255    D.0 - 32767

10、以下正确的有__A_C____。

A. int i = 32;          B.float f = 45.32;          C. double d=3.2;

11、以下返回true的表达式有___A_C__ _。

A. “briup” == “briup”                B.”briup” = “briup”

C. “briup”.equals(new String(“briup”))   D. “briup” == new String(“briup”)

12、inner class的类型有_A__B _C _____D__ _。

A.member inner class         B.static inner class

C.local inner class            D.anonymous inner class

E.public inner class            F.global inner class

13、以下方法申明正确的有___A_____D______。

A.public static synchronized void writeLog(String msg)

B. synchronized public static writeLog(String msg)

C. public final abstract void writeLog(String msg)

D.final public void writeLog(String msg)

E.abstract synchronized void writeLog(String msg)

14、方法重载(overloading)必须满足_ _C_ __E___。

A. 在不同class中定义的方法     B.在同一类型中定义的方法

C. 方法名必须相同              D.返回类型必须相同

E. 参数一定不同                F.参数可以相同

15、请看以下程序:

class Vehicle {

     public void drive() {

         System.out.println("Vehicle: drive");

     }

 }   

 class Car extends Vehicle {

     public void drive() {

         System.out.println("Car: drive");

     }

 }  

 public class Test {

     public static void main (String args []) {

         Vehicle v;

         Car c;

         v = new Vehicle();

         c = new Car();

         v.drive();

         c.drive();

         v = c;

         v.drive();

     }

 }

以下描述正确的有___C_____。

  1. 对于语句v=c;会导致编译错误 

B.对于语句v=c;会导致运行错误

C.运行输出:

Vehicle: drive

Car: drive

Car: drive

D.运行输出:

Vehicle: drive

Car: drive

Vehicle: drive

16、程序:

  public class StaticTest {

    static {

       System.out.println("Hi there");

    }

    public void print() {

       System.out.println("Hello");

    }

    public static void main(String args []) {

       StaticTest st1 = new StaticTest();

       st1.print();

       StaticTest st2 = new StaticTest();

       st2.print();

    }

 }

什么时候字符串“Hi there”会输出___C_____。

A.永远都不会输出          B.创建st1和st2时

C.第一次将StaticTest类型装载进内存时 D.显示调用print方法时

17、创建一个tcp服务程序的顺序是_BACDEGF______

  1. 创建一个服务线程处理新的连接
  2. 创建一个服务器socket
  3. 从服务器socket接受客户连接请求
  4. 在服务线程中,从socket中获得I/O
  5. I/O流进行读写操作,完成与客户的交互
  6. 关闭socket
  7. 关闭I/O

18、Java UDP编程主要用到的两个类型是____B____和___D____。发送和接收信息的方法是__B_____。

A.UDPSocket             B.DatagramSocket

C.UDPPacket             D.DatagramPacket

E.read/write              F.send/receive

19、下面的代码段中,执行之后i 和j 的值是什么?B

int i = 1;

int j;

j = i++; 

 A、 1, 1           B、1, 2          C、2, 1        D、2, 2

20、图形编程通常按_________________顺序。

A.设置布局管理器(Layout manager)      B.向容器中增加控件

C.选择容器      D.为控件设置事件处理器

21. 如下程序:

public class ArugmentTest{

      static class IntA{

        private int a;

        public IntA(int a){ this.a = a; }

        public int getA() { return a; }

        public void setA(int a){ this.a = a; }

      }

      static public void change(int a){

        a = 3;

      }

      static public void change(IntA a){

        a.setA(3);

      }

      static public void changeRef(IntA a){

        a = new IntA(9);

      }

      public static void main(String[] args){

         int a = 2; w a= 2

         change(a); A a = 3

         System.out.print(a); w a =2

         IntA ia = new IntA(5);

         change(ia);

         System.out.print(ia.getA());

         ChangeRef(ia);

         System.out.println(ia.getA());

      }

}

在控制台上输出的是___A___。

A. 2 3 3     B.333      C.259       D.339

22.有下面代码

import java.util.*; 

class Student { 

int age; 

String name; 

public Student(){} 

public Student(String name, int age){ 

this.name = name; 

this.age = age; 

public int hashCode(){ 

return name.hashCode() + age; 

public boolean equals(Object o){ 

if (o == null) return false; 

if (o == this) return true; 

if (o.getClass() != this.getClass()) return false; 

Student stu = (Student) o; 

if (stu.name.equals(name) && stu.age == age) 

return true; 

else return false; 

} } 

public class TestHashSet{ 

public static void main(String args[]){ 

Set set = new HashSet(); 

Student stu1 = new Student(); 

Student stu2 = new Student(“Tom”, 18); 

Student stu3 = new Student(“Tom”, 18); 

set.add(stu1); 

set.add(stu2); 

set.add(stu3); 

System.out.println(set.size()); 

} } 

B

下列说法正确的是:

A. 编译错误

B. 编译正确,运行时异常

C. 编译运行都正确,输出结果为3 

D. 编译运行都正确,输出结果为2

23.有下面代码

import java.util.*;
public class TestListSet{
public static void main(String args[]){
List list = new ArrayList();
list.add(“Hello”);
list.add(“Learn”);
list.add(“Hello”);
list.add(“Welcome”);
Set set = new HashSet();
set.addAll(list);
System.out.println(set.size());
}
}
选择正确答案( C )
A. 编译不通过
B. 编译通过,运行时异常
C. 编译运行都正常,输出3
D. 编译运行都正常,输出4

  • 填空题(每空0.5分,总分19分)
  1. Java方法的参数传递对于基本数据类型如int, byte等,参数传递是___按值传递_____;对自定义数据类型,参数传递是____按址传递___。

2、当声明一个数组int arr[] = new int[5]; 时,这代表这个数组所保存的变量类型是___int_____,数组名是____arr____,数组的大小为____5_____,数组元素下标的使用范围是__0-4______。

3、创建线程(Thread)的方式有两种,一种是继承类___Thread_____,另一种是实现接口____Runable____。启动线程的方法是____start____。线程启动后运行的是___run_____方法里的代码,线程的四种状态分别是___新建状态______、____就绪状态_____、_____运行状态______、_阻塞状态_、____死亡状态_____。

4、并发控制是多线程编程的难点。一个线程要等待某个条件的满足而阻塞调用方法__wait______;通知某一个处于等待状态线程的方法是____notify____;代码临界区的方法或程序块用关键字__synchronized______来限制达到互斥效果。

5、对原始数据的读写,采用____ InputStream ___接口和____ OutputStream ___接口的相关实现类,为了提高性能增加缓存区采用流________和________;对各种基本数据类型的读写,采用流________和________;读写文字字节流采用________接口和________接口的相关实现类, 方便读写字符串到字节流的转换采用流________和________;对象读写采用流________和_______。

6、一个File对象是文件或目录在内存中的表示,File类型中定义了方法___exits___来判断一个文件是否存在,定义方法____renameTo___改变文件名,定义方法____mkdirs____同时创建一个目录层次。对文件可以从任意位置进行写操作用文件流__RandomAccessFile_____。

7、事件处理方式采用了observer(观察者)设计模式,事件编程模式三要素是Event source  、 Event listener和Event object  。其中, Event object通常继承java.util.EventObject, Event listener通常继承java.util.EventListener。

  • 简答题(每题3分,总分15分)
  1. 运算符”==”与equals比较对象的区别是什么?

 

== 对基本数据类型比较数值,对引用类型比较引用地址

equals 基本数据类型比较内容,对引用数据类型比较内容(这是在String Integer 等重写Object的equals方法后)

 

 

 

  1. 说出ArrayList,Vector, LinkedList的存储性能和特性?

ArrayList存储

答案:ArrayList和Vector都是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,它们都允许直接按序号索引元素,但是插入元素要涉及数组元素移动等内存操作,所以索引数据快而插入数据慢,Vector由于使用了synchronized方法(线程安全),通常性能上较ArrayList差,而LinkedList使用双向链表实现存储,按序号索引数据需要进行前向或后向遍历,但是插入数据时只需要记录本项的前后项即可,所以插入速度较快。

 

 

 

  1. 简述Java中异常处理的机制?

throw 在方法中抛出

throws在方法名后抛出

try catch捕获答案:首先Java的异常是面向对象的。一个Java的Exception是一个描述异常情况的对象.当出现异常情况时,一个Exception对象就产生了,并放到异常的成员函数里。

Java的异常处理是通过5个关键词来实现的:try,catch,throw,throws和finally。

1.异常处理:在Java语言的错误处理结构由try,catch,finally三个块组成。其中try块存放将可能发生异常的Java语言,并管理相关的异常指针;catch块紧跟在try块后面,用来激发被捕获的异常;finally块包含清除程序没有释放的资源,句柄等。不管try块中的代码如何退出,都将执行 finally块。

2.抛出异常:Java语言可以不在方法中直接捕获,而用throw语句将异常抛给上层的调用者。Throw语句就是来明确地抛出一个异常;首先你必需得到一个Throwable的实例句柄,通过参数传到catch中,或者采用new操作符来创建一个。

 

 

 

 

  1. 请简述重载和重写的区别?

 

重写:发生在类的继承中,

返回值,方法名,参数必须相同

且访问权限不能比父类小

抛出异常不能多于父类

 

重载:发生在本类中

方法名必须相同,参数列表,返回值不同

 

 

 

  1. String是最基本的数据类型吗? String 和StringBuffer的区别?

 

不是,

String是引用数据类型,保存字符串常量,是不可变的

StringBuffer的长度是可变的,用toString可以将StringBuffer转化为String

 

 

 

 

  • 编程题(第12小题每题5分,第310分,总分20分)

1、李白街上走,提壶去买酒,遇店加一倍,见花喝一斗,五遇店和花,喝光壶中酒,壶中原有多少酒?请编程计算李白的壶中原有多少斗酒。

  int x = 0;

for(int i = 5 ; i> 0 ; i - -){

x = x +1;

x = x / 2;

}

 

 

 

  1. 常用的排序算法有哪些,请列举?

使用java实现选择排序,对数组int[] array = {2,5,-5,98,198,43};进行排序。

(在要排序的一组数中,选出最小的一个数与第一个位置的数交换;然后在剩下的数当中再找最小的与第二个位置的数交换,如此循环到倒数第二个数和最后一个数比较为止。)

选择 插入 冒泡

int temp = 0;

for(int i = 0 ; i < arr.length-1 ; i ++){

for(int j = i+1 ; j < arr.length;j++){

if(arr[i] > arr[j]){

temp = arr[i];

arr[i] = arr[j];

arr[j] = temp;

}

}

 

}

 

 

 

 

 

3、(1).使用Socket实现文本文件test.txt在客户端和服务器端之间的传输(使用Socket创建客户端和服务器端,将文件testA.txt通过客户端传递到服务器端,再保存在本地文件testB.txt中)

(2).把上边的代码修改成多线程实现。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值