java面试题

1. 下列哪一种叙述是正确的(D

A. abstract修饰符可修饰字段、方法和类

B. 抽象方法的body部分必须用一对大括号{ }包住

C. 声明抽象方法,大括号可有可无

D. 声明抽象方法不可写出大括号

Abstract修饰符可用于类,属性,方法,索引器和事件但不能修饰字段。

声明抽象方法不可写出{},抽象方法定义就是没有方法体

2. 如下代码

public class Test {

public int aMethod() {

static int i = 0;

i++;

return i;

}

public static void main (String args[]) {

Test test = new Test();

test.aMethod();

int j = test.aMethod();

System.out.println(j);

}

}

输出结果是什么?  D

A. 0

B. 1

C. 2

D. 编译失败

要把static int i = 0;放到方法外面做全局变量,又不是在抽象或类接口里面不能声明为静态的局部变量

3. 下列哪种说法是正确的(D )

A. 实例方法可直接调用超类的实例方法

B. 实例方法可直接调用超类的类方法

C. 实例方法可直接调用其他类的实例方法

D. 实例方法可直接调用本类的类方法

A:如果超类的实例方法没有在子类中被重写的可以直接调用,但经过子类重写就被覆盖了,需要super关键字来调用

实例方法调用其他类的方法需要引用调用

4. 如下代码:

class Super {

public Integer getLenght() { return new Integer(4); }

}

 

public class Sub extends Super {

public Long getLenght() { return new Long(5); }

public static void main(String[] args) {

Super sooper = new Super();

Sub sub = new Sub();

System.out.println(sooper.getLenght().toString() + "," +

 sub.getLenght().toString() );

}

}

输出是什么?   A

A. 4,4

B. 4,5

C. 5,4

D. 5,5

E. 编译失败.---------重定时不能改变返回类型

5. 在Servlet处理请求的方式为:   C

A.以进程的方式

B.以程序的方式

C.以线程的方式

D.以响应的方式

6. JDBC中,用于表示数据库连接的对象是:   B

A.Statement

B.Connection

C.DriverManager

D.PreparedStatement

.Statement对象用于执行不带参数的sql语句。

DriverManager:作用于用户和驱动之间,并在数据库和相应的驱动之间建立连接。PreparedStatement有预编译功能执行sql语句,相同数量批量数据操作

7. 如下代码:

class Base {

Base() { System.out.print("Base"); }

}

public class Alpha extends Base {

public static void main( String[] args ) {

new Alpha(); -----调用父类无参的构造方法

new Base();

}

}

结果是什么?   b

A. Base

B. BaseBase

C. 编译失败.

D. 代码运行但没有输出.

E. 运行时抛出异常

new Alpha();  调用父类的构造方法,走一遍syso(Base)

new Base();调用子类的main方法,在走一遍父类的构造方法syso(Base),

8. 在J2EE中属于Web层的组件有:   A

A.Servlet

B.EJB

C.Applet

D.HTML

 web 层组件J2EE web层组件可以是JSP 页面或Servlets.按照J2EE规范,静态的HTML页面和Applets不算是web层组件。

9. 在Servlet的生命周期中,容器只调用一次的方法是:   c

A.service

B.getServletConfig

C.init

D.destroy

(init() 和destroy() 即 初始化 和 销毁 只执行一次)

如果服务器不是正常停止的话,destory方法不执行。

10. 以下关于异常的说法正确的是:d

A. 一旦出现异常,程序运行就终止了 

B. 如果一个方法申明将抛出某个异常,它就必须真的抛出那个异常 

C. 在catch子句中匹配异常是一种精确匹配

D. 可能抛出系统异常的方法是不需要申明异常的

//异常的存在和出现是可以预见的:1.严重性:一旦异常发生,程序可能终止或者运行的结果不可预知

B:如果方法申明抛出某个异常,如果没有捕获该异常,则不抛出

C:不精确匹配的原因是:发生异常时,先不区分异常,直接捕获所有异常的父类exception

11.. 如下代码:

public class Foo {

public static void main(String[] args) {

try {

return;

} finally {

System.out.println( "Finally" );

}

}

}

输出结果是什么?   A

A. Finally

B.编译失败

C. 代码正常运行但没有任何输出.

D. 运行时抛出异常

12.  jsp指令中isELIgnored="boolean"的意思是C )

A.决定是否实现Servler的单线程模式,

B.决定改页面是否是一个错误处理页面,

C.决定是否支持EL表示,

<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>时间格式化在Tomcat5.5下不管用,提示:Unable to convert string "${deployTime}" to class "java.util.Date" for attribute "value": Property Editor not registered with the PropertyEditorManager

上网查找资料后得知:主要原因是EL表达式无法被解析到. 
其实从后台取值并传值到前台来根本就没有错,而前台JSP页面EL表达式无效,解析不到EL表达式,引起的原因是web.xml中: 

里面的web-app_2_5.xsd,就是这个引起的,在web-app_2_4.xsd中就不会出现这种问题(这个版本的isELIgnored默认设置为false)。 

在不改变web.xml2.5版本的情况下解决办法是:在jsp页面头加:<%@page isELIgnored="false"%>   问题得以解决。

还有就是:<%@page isELIgnored="false"%>的优先级要高于web.xml中的设置,所以在JSP中的设置会盖掉web.xml中的设置.

13. 在WEB-INF目录下,必须存放的文件为:B   

A.class文件

B.web.xml

B.jar文件

D.html文件

14. 下面哪个不是JAVA关键字D  

  A  integer

  B  double

  C  float

  D  default

default:java访问控制关键字,只适用于本类

15. 哪个语句创建了一个数组实例? A

A. int[] ia = new int [15];

B. float fa = new float [20];

C. char[] ca = “Some String”;

D. int ia [][] = {4, 5, 6} {1, 2, 3};

16.. 下列关于构造方法的叙述中,错误的是(c )   

  A. Java语言规定构造方法名与类名必须相同

  B. Java语言规定构造方法没有返回值,但不用vold声明

  C. Java语言规定构造方法不可以重载

  D. Java语言规定构造方法只能通过new自动调用

Java语言规定构造方法可以重载,包括构造方法和非静态方法,只要满足需求即可

重写,覆写:针对具有继承关系的类或者多个类,不包括构造方法,不包括静态方法,不包括final方法,(当然父类的方法都不能是private声明的)

17. 构造函数何时被调用b)   

A.类定义时 B.创建对象时

C.调用对象方法时 D.使用对象的变量时

 

18. Java语言中下面哪个可以用作正确的变量名称b )

A、3D  B、name  C、extends  D、implements

变量名称由下划线,字母,$和数字组成,首字母是英文字母,$和下划线

并且java名不要使用java关键字

 

19. 下面哪一项不是Java类访问控制关键字( c ) 

A. public B. protected

C. this D. private

Java访问控制关键字:Public,protected,default只在包内部被访问,private只在类内部被访问,final初始化之后不能被改变,可提高运行速度,static修饰内部类,方法,变量(节省内存)

20. 以下( B  )是编写Servlet必须导入的包.

A.java.sql.* B.java.servlet.* C.java.util.* D.java.lang.*


java.lang包是Java基础语言包(其中lang是language(语言)的简写),该包中包含

Java语言所需要的基本的功能类、接口等信息,是进行Java语言编程的基础。

由于在进行Java语言编程时,该包的使用特别频繁,所以在Java语言中,该包是被

默认引入的。

java.util.*包:该包提供了包含集合框架、遗留的集合类、事件模型、日期和时间实施、国际化和各种实用工具类(字符串标记生成器、随机数生成器和位数组)

Java.sql*:该包提供了使用java语言访问并处理数据源(通常是一个关系数据库)中的数据api

二:多选题

1. 下列属于jsp中注释的有(   )

A.<%--  与 --%>

 B. /

C. /** 与 **/

 

  1.   

/java注释有三种:1.//  2.注释若干行:/** 与 **/   3。注释若干行/**   

* .........   

* .........   

*/

2. 按照学生平均成绩(avg_grade) 将students表中的数据检索出来,下面SQL语句正确的是( acd  )

A) SELECT * FROM students ORDER BY avg_grade

B) SELECT * FROM students GROUP BY avg_grade ASC  //group  by

C) SELECT * FROM students ORDER BY avg_grade DESC

D) SELECT * FROM students ORDER by avg_grade asc

//b:本题意为将students表中数据检索出来,但是b中以分组形式是错误的

 

3. 下列是jsp作用域的通信对象的有(      ABC   )

A.Session

B.  application

 C.pageContext

D:Cookie

jsp四大作用域: page,session,request,application

九大内置对象: request,response,out   JSP页面向浏览器的输出结果,

Page  jsp页面的servlet实例

pageContext   JSP的运行环境,可以返回jsp访问的对象及属性

Session 会话,会话对象主要用于检索和存储数据

Application 存储了jsp页面的servlet以及在同一应用程序中的web组件的上下文信息

Config存取servlet实例的初始化参数

Exception 某个页面抛出异常时,转发至jsp错误de页面,只有在错误页面才能使用<%@page isErrorPage=true%>

4. 在接口中以下哪条定义是正确的? ( ab  )

A. void methoda();

B. public double methoda();

C. public final double methoda();

D. static void methoda(double d1);

E. protected void methoda(double d1);

/**

public static final接口属性一定是常量

java当中的接口变量都是final修饰的常量,并且保证常量不能被实现类修改

接口只有public,adbstract,default,satatic and strictfp are permitted,

接口方法默认 public abstract 

只有default,static修饰的方法,才能有方法体,也就是方法后面有{}

Default可以被重写覆盖,static只能接口类调用不可覆盖,strictfp不可使用

**/

5.   下面哪个语句正确地声明一个整型的二维数组?cde 

  A. int   a[][]   =   new   int[][];    

  B. int   a[10][10]   =   new   int[][];    

  C. int   a[][]   =   new   int[10][10];    

  D. int   [][]a   =   new   int[10][10];    

  E. int   []a[]   =   new   int[10][10];

//二维数组本质是以数组作为数组元素的数组,及“数组的数组”

Int a[5][3]={ {80,75,92}, {61,65,71}, {59,63,70}, {85,87,90}, {76,77,85} };五行,三列

二维数组定义:1.int[][] arr=new int[3][4]

  1. Int [][] arr=new int[3][];
  2. Int [][] arr={{1,2},{3,4,5},{5,6,7S}}

6. 下面哪些不是java的简单数据类型?    bc

A. short  B. Boolean  C. Double  D. float

八种基本类型及其封装类

byte

short

int

long

float

double

char

boolean

Byte

Short

Integer

Long

Float

Double

Character

Boolean

 

7. 下面哪些语句能够正确地生成5个空字符串?    AB     

  A.String   a[]=new   String[5];for(int   i=0;i<5;a[i++]=“”);    

  B.String   a[]={“”,“”,“”,“”,“”};    

  C.String   a[5];    

  D.String[5]a;    

  E.String   []a=new   String[5];for(int   i=0;i<5;a[i++]=null);

C,D:并未初始化值,所以五个字符串并未生成

E:a[i++]=null,null指的是0,将0的值赋给a[i++],是不能对a[i++]所引用的,所以报空指针

A:””意味讲一个空的字符串付给a[i++],此时a[i++]不为空,可以对a[i++]解引用的

8. 下列说法错误的有( bcd

A. 数组是一种对象

B. 数组属于一种原生类

C. int number=[]={31,23,33,43,35,63}

D. 数组的大小可以任意改变

C:int []number={31,23,33,43,35,63}

B:数组是属于引用数据对象类型,因为数组需要分配堆栈空间

D:静态数组在定义的时候就确定了数组大小,无论在运行中对其做改变

 

9. 不能用来修饰interface的有( ACD

A.private  B.public  C.protected  D.Static

接口是给别人实现的,所以不能用static,和final

因为static和final修饰的不能被继承,只能用public

对其成员变量只能用public static final类型,并且需要赋值

 

10. 下列说法错误的有ACD )

A. 在类方法中可用this来调用本类的类方法

B. 在类方法中调用本类的类方法时可直接调用

C. 在类方法中只能调用本类中的类方法

A  该题不严谨     错误:(类方法中不能用this,调用实例方法时,用对象调用即可,如果是main方法,不能用this调用)

D. 在类方法中绝对不能调用实例方法

C:在类方法中既能调用本类方法,用能实例化调用其他方法

D:只要实例化对象,就能调用实例方法

11. 如下代码

class A {

A() { }

}

 

class B extends A {

}

哪两个说明是正确的?BD 

A. B类的构造器应该是 public.

B. B类的构造器应该是没有参数

C. B类的构造器应该调用this().

D. B类的构造器应该调用super().子类初始化的时候必须调用父类的构造方法,即使没有显示,仍然会调用父类的构造方法

13. 以下哪四个能使用throw抛出?   ADEF

A. Error

B. Event

C. Object

D. Throwable:是java.lang包中专门处理异常的类,他有两个子类Error和Exception

E. Exception

F. RuntimeException

14. javax.Servlet的包中,属于类的是:   bc

A.Servlet

B.GenericServlet

C.ServletException

D.ServletContext

ServletContext和ServletRequest是包下的接口

类GenericServlet继承了Servlet接口,

   class ServletInputStream

    //定义了一个输入流,用于由Servlet从中读取客户请求的二进制数据。

    class ServletOutputStream

    //定义了一个输出流,用于由Servlet向客户发送二进制数据。

    class ServletException

    //定义了一个当Servlet遇到问题时可以抛出的异常。

    class UnavailableException

    //定义了一种异常,用于由Servlet指明它永远或暂时不可用。

15.. 哪二种声明防止方法覆盖? BC  

A、final void methoda() {}

B、void final methoda() {}

C、static void methoda() {}

D、static final void methoda() {}

  1. final abstract void methoda() {}

final修饰的类不能被继承,修饰的方法不能被重写,修饰的变量值不能被修改

D:有final就不能有abstract,抽象方法就要子类进行重写,并且有抽象方法,就不应该有{}

static final用来修饰成员变量和成员方法,可简单理解为“全局常量”!
对于变量,表示一旦给值就不可修改,并且通过类名可以访问。
对于方法,表示不可覆盖,并且可以通过类名直接访问。

简答题:

Collection框架中实现比较要实现什么接口

comparable接口、comparator接口

.写一个算法对1,8,5,2,4,9,7进行顺序排列。(建议冒泡)

 public class OrderbyArray {

//冒泡排序 Bubble Sort 最简单的排序方法是冒泡排序方法

    public int[] orderArray(int[] array){

    for(int i=0;i

    for(int j=i;j

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

    int s = array[i];

    array[i] = array[j];

    array[j] = s;

    }

    }

    }

    return array;

    }

public static void main(String[] args) {

int [] array = {1,8,5,2,4,9,7};

OrderbyArray order = new OrderbyArray();

array = order.orderArray(array);          

}

}

你可能感兴趣的:(java面试题)