JAVA基础面试题(经典)
第一阶段题库
基础知识部分:
1. JDK是什么?JRE是什么?
a) 答:JDK:java开发工具包。JRE:java运行时环境。
2. 什么是java的平台无关性?
a) 答:Java源文件被编译成字节码的形式,无论在什么系统环境下,只要有java虚
拟机就能运行这个字节码文件。也就是一处编写,处处运行。这就是java的跨平台性。
3. 在一台电脑上配置java环境,path起什么作用?如何配置?
a) 答:path的作用是在DOS环境下,能在任意位置使用JDK目录中bin文件夹中的
可执行程序,来编译执行java程序。
b) 在环境变量中找到path变量,把bin文件夹的绝对路径加上即可。
4. 什么样的标识符是合法的?
a) 由字母、数字、_和$组成,长度不限。其中字母可以是大写或小写的英文字母,数
字为0到9。
b) 标识符的第一个字符不能是数字。
c) 标识符区分大小写。
d) 标识符不能包含空格。
5. Java有几种基本数据类型?
a) byte,short,int,long,char,boolean,float,double
6. 什么是隐式类型转换?什么是显示类型转换?
a) 当将占位数少的类型赋值给占位数多的类型时,Java自动使用隐式类型转换。 b) 当把在级别高的变量的值赋给级别底变量时,必须使用显示类型转换运算。
7. &&和&区别,||和|区别?
a) &&和||是短路与,短路或,当左边的表达式能判断当前结果,则不判断右边的表
达式。
b) 而& 和|则将两边的表达式都运算完毕后,再算结果。
8. break,continue区别?
a) break结束最近的一个循环,continue结束当次循环,进入下次循环。
9. 类的命名规则是什么?
a) 如果类名使用拉丁字母,那么名字的首写字母使用大写字母。
b) 类名最好见名得意,当类名由几个单词复合而成时,每个单词的首写字母使用大写。
10. 类体的内容由两部分构成,哪两部分?
a) 一部分是变量的定义,用来刻画属性。
b) 另一部分是方法的定义,用来刻画功能。
11. 解释什么是类的成员变量,局部变量,实例成员变量,类成员变量?
a) 变量定义部分所定义的变量被称为类的成员变量。
b) 在方法体中定义的变量和方法的参数被称为局部变量。
c) 成员变量又分为实例成员变量和类成员变量(static修饰)。
12. 简述this关键字用法。
a) this关键字使用在实例方法中,代表调用该方法的当前对象。
13. 如何确定方法的返回类型?
_____________________________________________________________________
a) 方法返回的值的类型就是方法的返回类型,如果无返回值,则返回类型为void。
14. 返回值为void的方法,可否有return?
a) 可以。但return后没有任何值。
15. 解释什么是类方法,什么是实例方法?
a) static修饰的方法是类方法,无static修饰的方法是实例方法。
16. 简述方法和变量的命名规则?
a) 首写字母使用小写,如果由多个单词组成,从第2个单词开始首字母使用大写。
17. 什么是方法重载?
a) 方法重载是指一个类中可以有多个方法具有相同的名字,但这些方法的参数必须不
同,即或者是参数的个数不同,或者是参数的类型不同。
18. 什么是构造方法?
a) 构造方法是一种特殊方法,它的名字必须与它所在的类的名字完全相同,并且不返
回任何数据类型。
19. 如何创建一个对象?
a) 使用new 运算符和类的构造方法为对象分配内存,如果类中没有构造方法,系统
会调用默认的构造方法。
20. 系统什么情况下会为类提供构造方法,提供什么样的构造方法?
a) 如果类中没有构造方法,系统会提供一个默认的构造方法,默认的构造方法是无参
的。
21. 对象如何调用自己的成员变量和方法?
a) 使用运算符” . ”来调用自己的成员变量和方法。
22. 为什么可以直接用类名来访问类成员变量和类方法?
a) 因为当类被加载到虚拟机的时候,类成员变量就被分配内存,类方法被分配入口地
址,所以不用创建对象,可以直接通过类名调用。
23. 类变量有什么特点?
a) 一个类的所有对象共享同一个类变量。
24. 类方法有什么特点?
a) 类方法只能调用类变量和类方法。(同一类中)
25. package关键字有什么作用,使用中注意什么问题?
a) package指定一个类所在的包,该语句为源代码第一行。
26. import关键字有什么作用?
a) 引入程序中所用到的类。
27. 类有几种访问权限?变量和方法有几种访问权限?分别是什么?
a) 类有两种访问权限:public,友好的。
b) 方法和变量的访问权限:public,protected,友好的,private。
28. 简述java的访问权限。
a) public:公有的,任何类都可以访问。
b) protected:受保护的,同一个包的类可以访问。不同包的子类可以访问。 c) 友好的:同一个包的类可以访问。
d) private:私有的,在同一个类中才能访问。
29. 子类能继承父类的哪些变量和方法?
a) 如果子类和父类在同一个包中,那么,子类自然地继承了其父类中不是private 的
成员变量作为自己的成员变量,并且也自然地继承了父类中不是private 的方法作为自己的方法。
_____________________________________________________________________
b) 如果子类和父类不在同一个包中,那么,子类继承了父类的protected,public 成
员变量做为子类的成员变量,并且继承了父类的protected,public 方法为子类的方法。
30. 子类重写父类的方法,可否降低访问权限?
a) 不可以降低。
31. final关键字可以用来修饰什么?分别起什么作用?
a) final可以修饰类,这样的类不能被继承。
b) final可以修饰方法,这样的方法不能被重写。
c) final可以修饰变量,这样的变量的值不能被修改,是常量。
32. 简述super关键字作用?
a) 使用super调用父类的构造方法。
b) 使用super操作被隐藏的成员变量和方法。
33. 简述什么是对象上转型?
a) 假设,A 类是B 类的父类,当我们用子类创建一个对象,并把这个对象的引用放
到父类的对象中时,我们称这个父类对象是子类对象的上转型对象。
34. 上转型对象可以操作什么?不可以操作什么?
a) 上转对象不能操作子类新增的成员变量,失掉了这部分属性,不能使用子类新增的
方法,失掉了一些功能 。
b) 上转型对象可以操作子类继承或重写的成员变量,也可以使用子类继承的或重写的
方法。
35. 什么是抽象类?什么是抽象方法?有什么特点?
a) 用关键字abstract修饰类称为抽象类,abstract类不能用new运算创建对象,必须
产生其子类,由子类创建对象。
b) 用关键字abstract修饰方法称为抽象方法,abstract方法,只允许声明,而不允许
实现。
36. 一个类声明实现一个接口,那么这个类需要做什么工作?
a) 实现接口里所有的方法,并且这些方法的访问权限必须是public。
37. 简述什么是数组?
a) 数组是相同类型的数据按顺序组成的一种复合数据类型。通过数组名加数组下标,
来使用数组中的数据。下标从 0 开始排序。
38. 创建数组是否需要指定数组长度,如何求数组长度?
a) 必须指定数组长度,数组调用 .length来获取数组长度。
39. char数组和byte数组如何转化成字符串?如何求字符串长度?
a) 利用String类本身的构造方法,String (char a[]),String (byte a[]),””.length()。
以下方法均为字符串中方法
40. equals equalsIgnoreCase startsWith endsWith
a) 字符串比较 。
b) 忽略大小写比较。
c) 判断是否以指定字符串开头、结尾。
41. regionMatches
a) 判断一个字符串的子串是否和另一个字符串的子串匹配。
42. compareTo compareToIgnoreCase indexOf
a) 按字典顺序比较字符串。
b) 忽略大小写的按字典顺序比较字符串。
c) 字符串检索。
43. substring replace trim()
a) 字符串截取
b) 字符串替换
c) 去掉字符串前后空格。
44. 字符串如何转化为int型,double型?
a) Integer.parseInt(“1”);
b) Double.parseDouble(“25。45”);
45. 简述StringTokenizer作用?
a) 按照指定的分隔符,将字符串解析成若干语言符号。
46. 如何判断一个字符是不是数字,是不是大写?
a) Character.isDigit(‘a’)
b) Character.isUpperCase(‘U’)
47. 已知一个java.util.Date对象,如何格式化成如下格式 YYYY-MM-dd hh:mm:ss
a) SimpleDateFormat formate = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
formate.format(new Date()));
48. 如何生成一个0-100的随即整数?
a) (int)(Math.random()*100)
49. 简述java异常处理的机制?
a) 当所调用的方法出现异常时,调用者可以捕获异常使之得到处理;也可以回避异常。
50. 简述如下关键字用途try、catch、throw、throws、finally
a) try:保护代码,如果try中某行代码出现异常,则try中代码不再继续执行。 b) catch:捕获异常,当try中出现异常,则catch负责捕获异常,并处理。
c) throw:抛出异常。
d) throws:声明异常。
e) finally:无论try中是否出现异常,finally一定执行。
51. LinkedList和ArrayList区别?
a) LinkedList底层通过链式存储结构实现。
b) ArrayList底层通过数组实现。
52. 什么是I/O流,有什么作用?
a) 指数据输入输出的流, I/O 流提供一条通道程序,可以使用这条通道把源中的字
节序列送给目的地。
53. 如何查看一个文件的大小,绝对路径,是否可读?
a) File file = new File(“e://a.txt”);
b) file.length();
c) file.getAbsolutePath();
d) file.canRead();
54. 已知如下代码
File f = new File("myfile.dat");
FileInputStream istream = new FileInputStream(f); 如何从流中读取数据。
a) byte[] buff = new byte[100];
b) istream.read(buff);
55. 实现多线程的两种方法?
a) 从Java.lang.Thread类派生一个新的线程类,重写它的run()方法。
b) 实现Runnable接口,重写Runable接口中的run()方法。
56. 简述一个线程的生命周期?
a) 新建---运行---中断---死亡
57. 如何让一个准备就绪的线程运行?
a) 调用线程的start方法让一个处于准备就绪的状态的线程运行。
58. 如何让一个线程休眠1000毫秒?
a) 调用线程的sleep方法,参数为1000。
59. 如何使线程同步?
a) 使用同步方法
synchronized void methodA() { }
b) 使用同步块
synchronized(object) {
//要同步的语句
}
60. 什么是GC?为什么有GC?
a) GC是垃圾收集器。Java 程序员不用担心内存管理,因为垃圾收集器会自动进行管
理。
61. 构造方法能否被重写?为什么?
a) 不能,因为构造方法不能被继承,所以不能重写。
62. 是否可以继承String类,为什么?
a) 因为String类是final类,final修饰的类不能被继承。
63. java关键字区分大小写吗?
a) java关键字一律小写。所以无所谓区分大小写,大写的不是关键字。
64. java采用什么字符集?该字符集有多少字符
a) Java 使用 unicode 字符集,所以常量共有 65535 个
65. 列举算术运算符?
a) +,-,*,/,%
66. 算术混合运算结果精度如何确定?
a) Java按照运算符两边的操作元的最高精度保留结果的精度。
67. &是位运算符,与运算的规则是什么?
a) 全1则1,否则为0
68. | 是位运算符,或运算的规则是什么?
a) 全0则0,否则是1
69. ^是位运算符,异或运算的规则是什么?
a) 相同0,不同1
70. ~是位运算符,非运算的规则是什么?
a) 遇1则0,遇0则1
71. if语句后边有个括号,该括号里表达式为什么类型?
a) boolean类型
72. switch语句后括号里的表达式是什么类型?case后类型如何确定?
a) char,int,byte,short,枚举类型。
b) case后面是一个常量,该常量类型由switch后括号内表达式来确定。
73. switch语句后,default关键字起什么作用?break起什么作用?
a) default:当用户指定的表达式与任何case都不匹配的时候,执行default后的语句。 b) break:退出当前case。
74. for循环后括号里三个表达式分别起什么作用?
a) 1:循环初始化的时候执行,只执行一次。
b) 2:循环成立的条件。
c) 3:循环每次执行都会调用该表达式,一般做变量自增。
75. while 和do。。while区别?
a) while先判断条件,再执行。
b) do……while先执行,再判断条件
c) do……while至少执行一次。
76. 什么是编译执行的语言?什么是解释执行的语言?
a) 编译方式:Compilation:针对当前的机器处理器芯片,将源程序全部翻译成机器指令,
称做目标程序,再将目标程序交给计算机执行.
b) 解释方式:Interpretation:这种方式不产生整个的目标程序,而是根据当前的机器处
理器芯片,边翻译边执行,翻译一句执行一句.
77. 简述一个java程序执行的过程?
a) 首先编写java源文件(扩展名为.java的文本文档)。
b) 用javac命令把源文件编译成字节码文件(.class文件)
c) 用java命令执行字节码文件。
78. 成员变量的作用范围?局部变量的作用范围?
a) 成员变量在整个类内都有效
b) 局部变量只在定义它的类内有效。
79. 构造方法有什么作用?
a) 在创建对象的时候,java虚拟机会调用类的构造方法来创建对象。一般对象的初始
化工作可以放在构造方法里。
80. java三大特性?
a) 封装,继承,多态。
数据库部分
81. 简述什么是关系型数据库?
a) 所谓关系型数据库,是指采用了关系模型来组织数据的数据库。关系模型指的就是
二维表格模型,而一个关系型数据库就是由二维表及其之间的联系组成的一个数据组织。
b) 关系型数据库是由许多数据表(Table)所组成,表又是由许多记录(Row 或Record)
所组成,而纪录又是由许多的字段(Column 或Filed)所组成。
82. 什么是主键?
a) 设置一个表中的某个字段为主键,这个字段能够唯一的确定该表中某条记录,这样
的字段我们称为主键。
83. 什么是外键?
a) 外部键约束用于强制参照完整性,提供单个字段或者多个字段的参照完整性。
84. 主外键关联的作用?
a) 保证数据完整性。
b) 消除冗余数据。
85. SQL语句中文含义是?
a) Structured Query Language,结构化查询语言。
86. 什么是数据库?
a) 数据库是长期存储在计算机内的、有组织的、可共享的数据集合。
87. 什么数据库管理系统?
a) DBMS就是实现把用户意义下的抽象的逻辑数据转换成计算机中的具体的物理数
据的处理软件。
JDBC部分
88. JDBC含义?
a) JDBC(Java DataBase Connectivity) java数据库连接,是java连接数据库的AIP。
89. JDBC连接数据库步骤?
a) 加载驱动
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
b) 建立连接
Connection conn = DriverManager.getConnection(dbURL,username,password);
c) 创建语句对象
Statement stmt = conn.createStatement()
90. 如何使用sql语句操作数据库?
a) 得到语句对象之后,使用语句对象调用executeUpdate(sql)方法和executeQuery(sql)
方法分别执行更新语句和查询语句。
91. executeUpdate(sql)方法的返回值表示什么含义?
a) 表示该更新方法影响了几行记录。
92. executeQuery(sql)方法的返回值如何使用?
a) 该方法的返回值为一个结果集,即ResultSet类型的对象。
b) ResultSet类型的对象有一个游标,指向当前操作的行。该游标默认指向第一行记录
之前,如果我们想操作结果集,需要先将游标下移,我们调用ResultSet接口的next()方法将游标下移,如果结果集里有数据,则游标下移,指向第一行,如果结果集里没有记录,则下移失败。当游标指向具体的某一行时,我们就可以从结果集里边获取值了。获取的值为当前游标指向行的值。
93. 如何获取游标所指的行的数据?
a) 当游标指向某一行时,我们可以使用ResultSet接口的getString(列名)方法来获取某
一列的值,列名作为方法的参数。
94. 创建语句对象时,createStatement(参数1,参数2),两个参数分别表示什么含义?
a) 第一个参数指定该语句对象生成的结果集是否可滚动以及是否敏感,
b) 第二个参数指定该语句对象生成的结果集是否可以更新数据库。