前言
大家好,我是程序员manor ,上次货拉拉面试太打击心情,于是我决定找些小boss打打让自己愉悦起来,于是就有了下面👇这篇Java基础面试笔试题, 文章末尾给出答案
JAVA基础笔试题目
一、单选题( 共8题,每题2分 )
1、下列语句哪一个正确( )
A. Java程序经编译后会产生machine code
B. Java程序经编译后会产生byte code
C. Java程序经编译后会产生DLL
D. 以上都不正确
2、下列说法正确的有( )
A. class中的constructor不可省略
B. constructor必须与class同名,但方法不能与class同名
C. constructor在一个对象被new时执行
D. 一个class只能定义一个constructor
3、提供Java存取数据库能力的包是( )
A.java.sql
B.java.awt
C.java.lang
D.java.swing
4、下列运算符合法的是( )
A.&&
B.<>
C.if
D.:=
5、执行如下程序代码
a=0;c=0; do{
–c;
a=a-1;
}
while(a>0);
后,c的值是( )
A.0
B.1
C.-1
D.死循环
6、下列哪一种叙述是正确的( )
A.abstract修饰符可修饰字段、方法和类
B.抽象方法的body部分必须用一对大括号{ }包住
C.声明抽象方法,大括号可有可无
D.声明抽象方法不可写出大括号
7、在Java中,表示换行符的转义字符是( )
A \n
B \f
C ?n?6?8
D \dd
8、HttpServletRequest对象的( )方法能够获取一个表单参数的值:
A. getQuaryString()
B. getPathInfo()
C. getParameter()
D. getAttribute()
二、多选题( 共7题,每题4分 )
1、下列标识符不合法的有( )
A.new
B.$Usdollars
C.1234
D.car.taxi
2、下列说法错误的有( )
A.数组是一种对象
B.数组属于一种原生类
C.int number=[]={31,23,33,43,35,63}
D.数组的大小可以任意改变
3、不能用来修饰interface的有( )
A.private
B.public
C.protected
D.static
4、下列说法错误的有( )
A. 在类方法中可用this来调用本类的类方法
B. 在类方法中调用本类的类方法时可直接调用
C. 在类方法中只能调用本类中的类方法
D. 在类方法中绝对不能调用实例方法
5、下列说法错误的有( )
A. Java面向对象语言容许单独的过程与函数存在
B. Java面向对象语言容许单独的方法存在
C. Java语言中的方法属于类中的成员(member)
D. Java语言中的方法必定隶属于某一类(对象),调用方法与过程或函数相同
6、Servlet API 由哪两个包组成?( )
A. javax.servlet
B. javax.servlet.jsp
C. javax.servlet.http
D. java.servlet
7、 关于异常处理机制的叙述哪些正确 ( )
A. catch部分捕捉到异常情况时,才会执行finally部分
B. 当try区段的程序发生异常时,才会执行catch区段的程序
C. 不论程序是否发生错误及捕捉到异常情况,都会执行finally部分
D. 以上都是
三、简答题( 共4题,每题10分 )
1、简单分析Java语言中的final, finally, finalize三者的区别。
2、Overload(方法重载)和Override(方法重写)的区别。Overloaded的方法是否可以改变返回值的类型?
3、abstract class(抽象类)和interface(接口)有什么区别?
4、ArrayList Vector LinkedList 的存储性能好特性,HashMap和Hashtable的区别。
四、综合题( 共1题,共16分 )
1、编写程序,计算任意两个日期之间间隔的天数。
看看你能得多少分? ------------------------------------------我是答案分割线-----------------------------------------------------------------------
JAVA基础笔试题目
一、单选题( 共8题,每题2分 )
1、下列语句哪一个正确(B ) A. Java程序经编译后会产生machine code B. Java程序经编译后会产生byte code C. Java程序经编译后会产生DLL D. 以上都不正确
2、下列说法正确的有( B ) A. class中的constructor不可省略 B. constructor必须与class同名,但方法不能与class同名 C. constructor在一个对象被new时执行 D. 一个class只能定义一个constructor
3、提供Java存取数据库能力的包是( A ) A.java.sql B.java.awt C.java.lang D.java.swing
4、下列运算符合法的是( A ) A.&& B.<> C.if D.:=
5、执行如下程序代码 a=0;c=0; do{ –c; a=a-1; } while(a>0); 后,c的值是(C ) A.0 B.1 C.-1 D.死循环
6、下列哪一种叙述是正确的( D ) A.abstract修饰符可修饰字段、方法和类 B.抽象方法的body部分必须用一对大括号{ }包住 C.声明抽象方法,大括号可有可无 D.声明抽象方法不可写出大括号
7、在Java中,表示换行符的转义字符是(A ) A \n B \f C ?n? D \dd
8、HttpServletRequest对象的( C )方法能够获取一个表单参数的值: A. getQuaryString() B. getPathInfo() C. getParameter() D. getAttribute()
二、多选题( 共7题,每题4分 ) 1、下列标识符不合法的有(ACD ) A.new B.$Usdollars C.1234 D.car.taxi
2、下列说法错误的有( BCD ) A.数组是一种对象 B.数组属于一种原生类 C.int number=[]={31,23,33,43,35,63} D.数组的大小可以任意改变
3、不能用来修饰interface的有(ACD ) A.private B.public C.protected D.static
4、下列说法错误的有( ACD ) A. 在类方法中可用this来调用本类的类方法 B. 在类方法中调用本类的类方法时可直接调用 C. 在类方法中只能调用本类中的类方法 D. 在类方法中绝对不能调用实例方法
5、下列说法错误的有( ABC ) A. Java面向对象语言容许单独的过程与函数存在 B. Java面向对象语言容许单独的方法存在 C. Java语言中的方法属于类中的成员(member) D. Java语言中的方法必定隶属于某一类(对象),调用方法与过程或函数相同
6、Servlet API 由哪两个包组成?(AC ) A. javax.servlet B. javax.servlet.jsp C. javax.servlet.http D. java.servlet
7、 关于异常处理机制的叙述哪些正确 ( AB ) A. catch部分捕捉到异常情况时,才会执行finally部分 B. 当try区段的程序发生异常时,才会执行catch区段的程序 C. 不论程序是否发生错误及捕捉到异常情况,都会执行finally部分 D. 以上都是
三、简答题( 共4题,每题10分 )
1、简单分析Java语言中的final, finally, finalize三者的区别。 final:修饰符(关键字)有三种用法:修饰类、变量和方法。 修饰类时,意味着它不能再派生出新的子类,即不能被继承,因此它和 abstract 是反义词。修饰变量时,该变量使用中不被改变,必须在声明时给定初值,在引用中只能读取不可修改,即为常量。 修饰方法时,也同样 只能使用,不能在子类中被重写。
finally:通常放在 try…catch 的后面构造最终执行代码块,这就意味着程序无论正常执行 还是发生异常,这里的代码只要 JVM 不关闭都能执行,可以将释放外部资源的代码写在 finally 块中。
finalize:Object 类中定义的方法,Java 中允许使用 finalize() 方法在垃圾收集器将对象从内存中清除出去之前做必要的清理工作。这个方法是由垃圾收集器在销毁对象时调用的,通过重写 finalize() 方法可以整理系统资源或者执行其他清理工作。
2、Overload(方法重载)和Override(方法重写)的区别。Overloaded的方法是否可以改变返回值的类型? Overload是重载的意思, Override是覆盖的意思,也就是重写。
Override覆盖要注意以下的几点: 1.覆盖的方法的标志必须要和被覆盖的方法的标志完全匹配,才能达到覆盖的效果;
2.覆盖的方法的返回值必须和被覆盖的方法的返回值一致;
3.被覆盖的方法不能为private, 否则在其子类中只是新定义了一个方法,并没有对其进行覆盖。
4.子类覆盖父类方法,方法访问权限必须大于等于父类
5.覆盖的方法所抛出的异常必须和被覆盖方法的所抛出的异常一致,或者是其子类;
overload要注意以下的几点: 1.重载只和参数列表有关。例如,不同的参数类型,不同的参数个数,不同的参数顺序 2.不能通过访问权限、返回类型、抛出的异常进行重载; 3.方法的异常类型和数目不会对重载造成影响; 4.对于继承来说,如果某一方法在父类中是访问权限是priavte,那么就不能在子类对其进行重载,如果定义的话,也只是定义了一个新方法,而不会达到重载的效果。
3、abstract class(抽象类)和interface(接口)有什么区别? 主要有以下6点区别: 1.抽象类可以有构造方法,接口中不能有构造方法。 2.抽象类中可以有普通成员变量,接口中没有普通成员变量 3.抽象类中可以包含非抽象的普通方法,接口中的所有方法必须都是抽象的,不能有非抽象的普通方法。 抽象类中的抽象方法的访问类型可以是public,protected和默认类型,但接口中的抽象方法只能是public类型的,并且默认即为public abstract类型。 5.抽象类和接口中都可以包含静态成员变量,抽象类中的静态成员变量的访问类型可以任意,但接口中定义的变量只能是public static final类型,并且默认即为public static final类型。 6. 一个类可以实现多个接口,但只能继承一个抽象类
4、ArrayList Vector LinkedList 的存储性能好特性,HashMap和Hashtable的区别。 ArrayList Vector:以数组的方式存储,增、删慢,查、改快 ArrayList:线程不安全,速度快 Vector:线程安全,速度慢(synchoronized) LikedList: 以单链表的方式存储,增、删快,查、改慢 HashMap与Hashtable都实现的Map接口, HashTable线程安全,HashMap线程不安全。
四、综合题( 共1题,共16分 )
1、编写程序,计算任意两个日期之间间隔的天数。 package com.ct;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;
public class demo {
public static void main(String[] args) {
System.out.println("请输入第一个日期:");
String date = new Scanner(System.in).next();
System.out.println("请输入第二个日期:");
String date2 = new Scanner(System.in).next();
count(date,date2);
}
private static void count(String date, String date2) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
try {
Date d1 = sdf.parse(date);
Date d2 = sdf.parse(date2);
long time = d1.getTime();
long time2 = d2.getTime();
long day = (time - time2) / 1000 / 60 / 60 / 24;
System.out.println(day);
} catch (ParseException e) {
System.err.println("日期错误!!");
}
}
}
总结
我是manor 一个默默努力的菜鸟程序员,我们下期再见~
|