java面试题及解答1

一.选择题(25 X 2分)

1.下列不可作为java语言修饰符的是()

A) a1               B) $1                 C) _1                    D) 11

 

2.有一段java应用程序,它的主类名是a1,那么保存它的源文件名可以是()

A) a1.java    B) a1.class             C) a1                   D) 都对

 

3.整型数据类型中,需要内存空间最少的是()

A) short     B) long                 C) int                   D) byte

 

4. Java类可以作为()

A)类型定义机制

B)数据封装机制

C)类型定义机制和数据封装机制

D)上述都不对

 

5.在创建对象时必须()

A)先声明对象,然后才能使用对象

B)先声明对象,为对象分配内存空间,然后才能使用对象

C)先声明对象,为对象分配内存空间,对对象初始化,然后才能使用对象

D)上述说法都对

 

6.关于以下application的说明,正确的是(      

class  StaticStuff{

static int  x=10

static { x+=5}

public static  void  mainString args[ ]{

System.out.println(“x=” + x);

}

static { x/=3;}

}

A4行与9行不能通过编译,因为缺少方法名和返回类型

B9行不能通过编译,因为只能有一个静态初始化器

C、编译通过,执行结果为:x=5

D、编译通过,执行结果为:x=3

 

7.关于以下程序代码的说明正确的是(     

class HasStatic{

private static  int  x=100

public static  void  main(String args[  ]){

HasStatic hs1=new  HasStatic(  );

hs1.x++;

HasStatic hs2=new  HasStatic(  );

hs2.x++;

hs1=new HasStatic( );

hs1.x++;

HasStatic.x- -;

System.out.println(“x=”+x);

}

}

A 5行不能通过编译,因为引用了私有静态变量

B 10行不能通过编译,因为x是私有静态变量

C程序通过编译,输出结果为:x=103

D程序通过编译,输出结果为:x=102

 

8.以下选项中循环结构合法的是(       

Awhile (int  i<7)

{    i++;

System.out.println(“i is “+i);

}

B int  j=3;

while(j)

{

System.out.println(“ j is “+j);

}

Cint j=0;

for(int k=0; j + k !=10; j++,k++)

{

System.out.println(“ j is “+ j + “k  is”+ k);

}

D int  j=0;

do{

System.out.println( “j is “+j++);

if (j = = 3) {continue loop;}

}while (j<10);

 

9.Test1定义如下:

public class  Test1{

public float  aMethodfloat afloat b{  }

}

将以下哪种方法插入行3是不合法的。(       

Apublic float  aMethodfloat a float bfloat c{ }

Bpublic float  aMethodfloat cfloat d{ }

Cpublic int  aMethodint a int b{ }

Dprivate float aMethodint aint bint c{ }

 

10.    Test1Test2定义如下:

public class  Test1

{

public float  aMethodfloat afloat b throws IOException {     }

}

public class  Test2  extends Test1{

 

}

将以下哪种方法插入行6是不合法的。(   

Afloat aMethodfloat afloat b{ }

Bpublic int  aMethodint aint bthrows Exception{ }

Cpublic float  aMethodfloat pfloat q{ }

Dpublic int  aMethodint aint bthrows IOException{ }

 

11.Java中,一个类可同时定义许多同名的方法,这些方法的形式参数个数、类型或顺序各不相同,传回的值也可以不相同。这种面向对象程序的特性称为(   )。

A、隐藏    B、覆盖       C、重载        DJava不支持此特性

 

12.以下关于构造函数的描述错误的是(   )。

A、构造函数的返回类型只能是void型。

B、构造函数是类的一种特殊函数,它的方法名必须与类名相同。

C、构造函数的主要作用是完成对类的对象的初始化工作。

D、一般在创建新对象时,系统会自动调用构造函数。

 

13.    下列哪些语句关于Java内存回收的说明是正确的?   

A、程序员必须创建一个线程来释放内存

B、内存回收程序负责释放无用内存

C、内存回收程序允许程序员直接释放内存

D、内存回收程序可以在指定的时间释放内存对象

 

14.    若需要定义一个类域或类方法,应使用哪种修饰符?(    

Astatic         Bpackage         Cprivate            Dpublic

 

15.    有以下方法的定义,请选择该方法的返回类型(   )。

ReturnType method(byte x, double y)                            {

return (short)x/y*2;

}

Abyte      Bshort              Cint                  Ddouble

 

16. 有以下程序片段,下列哪个选项不能插入到行1。(     

public class  Interesting{

//do sth

}

Aimport java.awt.*;          Bpackage mypackage;

Cclass OtherClass{   }     Dpublic class MyClass{ }

 

17. 以下哪项是接口的正确定义?(       

A interface  B

{ void print()  {  } ;}

B abstract  interface  B

{ void print() ;}

C abstract  interface  B extends  A1,A2  //A1A2为已定义的接口

{ abstract void  print(){  };}

D interface  B

{ void  print();}

 

18.        下面哪个函数是public void aMethod(){...}的重载函数?(   

Avoid aMethod( ){...}

Bpublic int  aMethod(){...}

Cpublic void  aMethod ( ){...}

Dpublic int  aMethod ( int m){...}

19.  A派生出子类BB派生出子类C,并且在Java源代码中有如下声明:

A a0=new  A();

A a1 =new  B();

A a2=new  C();

问以下哪个说法是正确的?     

A、只有第1行能通过编译

B、第12行能通过编译,但第3行编译出错

C、第123行能通过编译,但第23行运行时出错

D、第1行、第2行和第3行的声明都是正确的

 

20. 假设A类有如下定义,设aA类的一个实例,下列语句调用哪个是错误的?(   

class A

{    int  i;

static String  s;

void method1() {   }

static void  method2()  {  }

}

ASystem.out.println(a.i)Ba.method1(); CA.method1();  DA.method2()

 

21.    编译并运行以下程序,以下描述哪个选项是正确的(   

class A{

protected boolean  equals(){

return super.equals(); }

}

A、编译通过运行无异常    B、编译通过但运行时出错

C、行2出错,不能成功编译    D、不能成功编译,行3出错

22.    有语句String s=hello world;,以下操作哪个是不合法的?(   

Aint i=s.length();       Bs>>>=3;  CString ts=s.trim();   DString t=s+!;

 

23.    下列关于Java语言的特点,描述错误的是(   

AJava是跨平台的编程语言                  BJava支持分布式计算

CJava是面向过程的编程语言                DJava支持多线程

 

24.    下述概念中不属于面向对象方法的是(  )。

A.对象、消息   B.继承、多态     C.类、封装    D.过程调用

 

25.    结构化程序设计所规定的三种基本控制结构是   

A.输入、处理、输出                    B.树形、网形、环形

C.顺序、选择、循环                    D.主程序、子程序、函数

 

二.   简答题(6 X 5分)

1.   try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,在return前还是后?

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

3.   JSPServlet有哪些相同点和不同点,他们之间的联系是什么?

4.   说一说Servlet的生命周期?

5.   sleep() wait()有什么区别

6.   abstract classinterface有什么区别

 

三.编程题(20分)

1.将一个键盘输入的数字转化成中文输出

(例如:输入:1234567    输出:一百二拾三万四千五百六拾七)

java语言实现,,请编一段程序实现!

 

1选择题

1-25 DADCC CDCBA CABCD DDDDC DBCDC

2.简答题

1. 会执行,在return前执行。

2. request 用户端请求,此请求会包含来自GET/POST请求的参数

response 网页传回用户端的回应

pageContext 网页的属性是在这里管理

session 与请求有关的会话期

application servlet正在执行的内容

out 用来传送回应的输出

config servlet的构架部件

page JSP网页本身

exception 针对错误网页,未捕捉的例外

3. JSPServlet技术的扩展,本质上是Servlet的简易方式,更强调应用的外表表达。JSP编译后是"servlet"ServletJSP最主要的不同点在于,Servlet的应用逻辑是在Java文件中,并且完全从表示层中的HTML里分离开来。而JSP的情况是JavaHTML可以组合成一个扩展名为.jsp的文件。JSP侧重于视图,Servlet主要用于控制逻辑。

4. servlet有良好的生存期的定义,包括加载和实例化、初始化、处理请求以及服务结束。这个生存期由javax.servlet.Servlet接口的init,servicedestroy方法表达。

5. sleep是线程类(Thread)的方法,导致此线程暂停执行指定时间,给执行机会给其他线程,但是监控状态依然保持,到时后会自动恢复。调用sleep不会释放对象锁。

waitObject类的方法,对此对象调用wait方法导致本线程放弃对象锁,进入等待此对象的等待锁定池,只有针对此对象发出notify方法(或notifyAll)后本线程才进入对象锁定池准备获得对象锁进入运行状态。

6. 声明方法的存在而不去实现它的类被叫做抽象类(abstract class),它用于要创建一个体现某些基本行为的类,并为该类声明方法,但不能在该类中实现该类的情况。不能创建abstract类的实例。然而可以创建一个变量,其类型是一个抽象类,并让它指向具体子类的一个实例。不能有抽象构造函数或抽象静态方法。Abstract类的子类为它们父类中的所有抽象方法提供实现,否则它们也是抽象类为。取而代之,在子类中实现该方法。知道其行为的其它类可以在类中实现这些方法。

接口(interface)是抽象类的变体。在接口中,所有方法都是抽象的。多继承性可通过实现这样的接口而获得。接口中的所有方法都是抽象的,没有一个有程序体。接口只可以定义static final成员变量。接口的实现与子类相似,除了该实现类不能从接口定义中继承行为。当类实现特殊接口时,它定义(即将程序体给予)所有这种接口的方法。然后,它可以在实现了该接口的类的任何对象上调用接口的方法。由于有抽象类,它允许使用接口名作为引用变量的类型。通常的动态联编将生效。引用可以转换到接口类型或从接口类型转换,instanceof运算符可以用来决定某对象的类是否实现了接口。

 

 

3.编程题

public class Reader {

 private String strNum;

 private String strNumChFormat;

 private String strNumTemp;

 private int intNumLen;

 private String strBegin;

 public Reader(String strNum) {

   this.strNum = strNum;

 }

 public boolean check(String strNum) {

   boolean valid = false;

   

   if (strNum.substring(0,1).equals("0")){

    this.strNum = strNum.substring(1);

   }

   try {

     new Double(strNum);

     valid = true;

   }

   catch (NumberFormatException ex) {

     System.out.println("Bad number format!");

   }

   return valid;

 }

 public void init() {

   strNumChFormat = "";

   intNumLen = strNum.length();

   strNumTemp = strNum;

   strNumTemp = strNumTemp.replace('1', '');

   strNumTemp = strNumTemp.replace('2', '');

   strNumTemp = strNumTemp.replace('3', '');

   strNumTemp = strNumTemp.replace('4', '');

   strNumTemp = strNumTemp.replace('5', '');

   strNumTemp = strNumTemp.replace('6', '');

   strNumTemp = strNumTemp.replace('7', '');

   strNumTemp = strNumTemp.replace('8', '');

   strNumTemp = strNumTemp.replace('9', '');

   strNumTemp = strNumTemp.replace('0', '');

   strNumTemp = strNumTemp.replace('.', '');

   strBegin = strNumTemp.substring(0, 1);

 }

 public String readNum() {

   if (check(strNum)) {

     init();

     try {

       for (int i = 1, j = 1, k = 1; i < intNumLen; i++) {

         if (strNumTemp.charAt(intNumLen - 1) == '' && i == 1) {

           strNumChFormat = "";

         }

         else if (strNumTemp.charAt(intNumLen - i) == '' && j == 1) {

           strNumChFormat = "" + strNumChFormat;

         }

         else if (strNumTemp.charAt(intNumLen - i) == '') {

           j = 1;

           k = 1;

           strNumChFormat = strNumTemp.charAt(intNumLen - i) + strNumChFormat;

           continue;

         }

         else {

           strNumChFormat = strNumTemp.charAt(intNumLen - i) + strNumChFormat;

         }

         if (strNumTemp.charAt(intNumLen - i - 1) != '' &&

             strNumTemp.charAt(intNumLen - i - 1) != '') {

           if (j == 1 && i < intNumLen) {

             strNumChFormat = '' + strNumChFormat;

           }

           else if (j == 2 && i < intNumLen) {

             strNumChFormat = '' + strNumChFormat;

           }

           else if (j == 3 && i < intNumLen) {

             strNumChFormat = '' + strNumChFormat;

           }

         }

         if (j == 4 && i < intNumLen) {

           j = 0;

         }

         if (k == 4 && i < intNumLen) {

           strNumChFormat = '' + strNumChFormat;

         }

         else if (k == 8 && i < intNumLen) {

           k = 0;

           strNumChFormat = '亿' + strNumChFormat;

         }

         j++;

         k++;

       }

       while (strNumChFormat.indexOf("") != -1) {

         strNumChFormat = strNumChFormat.replaceAll("", " ");

       }

       if (strNumChFormat.substring(0, 2) == "一拾") {

         strNumChFormat = strNumChFormat.substring(1, strNumChFormat.length());

       }

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一些常见的 JVM 面试题及其解答: 1. 什么是 JVM? - JVM(Java 虚拟机)是 Java 程序的运行环境,它负责将 Java 字节码解释或编译为机器码并执行。 2. JVM 的主要组成部分有哪些? - JVM 主要由类加载器、运行时数据区域、执行引擎和本地库接口等组成。 3. 类加载器的作用是什么? - 类加载器负责将字节码文件加载到内存中,并生成对应的 Class 对象。 4. 运行时数据区域包括哪些部分? - 运行时数据区域包括方法区、堆、栈、程序计数器和本地方法栈等。 5. 什么是垃圾回收(Garbage Collection)? - 垃圾回收是指自动回收不再使用的内存资源,以便给其他对象使用,从而减少内存泄漏和提高程序性能。 6. 垃圾回收算法有哪些? - 常见的垃圾回收算法有标记-清除算法、复制算法、标记-整理算法和分代收集算法等。 7. JVM 中的方法区是用来存储什么信息的? - 方法区主要用于存储类的结构信息、常量池、静态变量和常量等。 8. JVM 内存模型中的栈和堆有什么区别? - 栈用于存放局部变量和方法调用,是线程私有的;堆用于存放对象实例和数组,是线程共享的。 9. JVM 的 JIT 编译器是什么? - JIT(Just-In-Time)编译器是一种动态编译器,它将热点代码(频繁执行的代码)编译为本地机器码,以提高程序的执行效率。 以上是一些常见的 JVM 面试题及其解答,希望能对您有所帮助。如果您还有其他问题,请继续提问。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值