前言
大家好,我是程序员
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、下列说法正确的有( C )
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、 关于异常处理机制的叙述哪些正确 ( BC )
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; /** * @author ChinaManor * #Description demo * #Date: 10/8/2021 22:56 */ 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
一个默默努力的菜鸟程序员,我们下期再见~