技术笔试面试题(上)

这是一本针对Java程序员面试的指南,涵盖了Java语言基础、数据库、Web编程、流行框架等方面的知识点。书中整理了大量来自实际招聘面试的题目,包括运算符、循环结构、异常处理、数组、字符串、集合、IO操作、多线程、网络通信、XML处理、Swing编程、设计模式等内容。每个题目都附带详细解析,帮助求职者巩固和提升Java编程技能,以提高面试成功率。
摘要由CSDN通过智能技术生成

前言
当天社会,随着程序设计、软件开发等工作岗位的增加,java程序开发已经占据程序员求职市场的半壁江山,java程序员求职者们迫切需要自己的笔试面试题集。该书的目的就是帮助更多的有面试需求的java程序员顺利的通过笔试、面试。
本书涵盖了java面试中出现的各个知识点,包括java语言基础、数据库、web编程、框架等。其中每个部分都按小知识点进行笔试面试题整理,每道题都取材于各大公司的实际招聘面试题,并在题后紧跟详细的分析步骤和解答。

目录
前言 2
第一部分:JAVA基础 4
1.1 JAVA语言基础 4
1.2 JAVA面向对象 25
1.3 JAVA核心API-STRING、正则表达式、OBJECT、包装类、日期操作等 63
1.4 JAVA核心API-集合操作 81
1.5 JAVA核心API-IO操作 99
1.6 JAVA核心API-异常处理 100
1.7 JAVA核心API-多线程 104
1.8 JAVA核心API-网络通信 121
1.9 JAVA核心API-XML 129
1.10 SWING编程 129
1.10 设计模式 130
第二部分:数据库、JDBC、PLSQL 133
2.1 数据库 133
2.2 PLSQL 198
2.3 JDBC 216
第三部分 JACA WEB------------------------------------------------------------------------------------------ 223
3.1 WEB基础------------------------------------------------------------------ 223
3.2 SERVLET与JSP------------------------------------------------------------- 229
3.3 AJAX与JQUERY------------------------------------------------------------ 252
3.4 WEB应用------------------------------------------------------------------ 252
第四部分 流行框架
4.1 STRUTS2------------------------------------------------------------------ 261
4.2 HIBERNATE---------------------------------------------------------------- 268
4.3 MYBATIS------------------------------------------------------------------ 275
4.4 SPRING------------------------------------------------------------------- 279
4.5 框架整合----------------------------------------------------------------- 295
4.6 其他框架---------------------------------------------------------------- 303
第一部分:JAVA基础
1.1 JAVA语言基础
【题目编号】 jsd-01-101-1001
【知 识 点】 JAVA基础-JAVA语言基础-运算符-三目运算符
【难易程度】 50
【题目描述】
编译运行以下程序后,关于输出结果的说明正确的是 ( ):
public class Conditional{
public static void main(String args[ ]){
int x=4;
System.out.println(“value is “+ ((x>4) ? 99.9 :9));
}
}
【选项】
A. 输出结果为:value is 99.99
B. 输出结果为:value is 9
C. 输出结果为:value is 9.0
D. 编译错误
【正确答案】 C
【解释】
三目运算符中:第二个表达式和第三个表达式中如果都为基本数据类型,整个表达式的运算结果由容量高的决定。99.9 是 double 类型而9是 int 类型,double 容量高。

【题目编号】 jsd-01-101-1002
【知 识 点】 JAVA基础-JAVA语言基础-运算符和表达式-转义字符
【难易程度】 80
【题目描述】
在字符串前面加上( )符号,则字符串中的转义字符将不被处理。
【选项】
A. @ B. \ C.# D.%
【正确答案】 B
【解释】

【题目编号】 jsd-01-101-1003
【知 识 点】 JAVA基础-JAVA语言基础-循环结构-while
【难易程度】 50
【题目描述】
下列代码哪行会出错:

  1. public void modify() {
  2. int I, j, k;
  3. I = 100;
  4. while ( I > 0 ) {
  5.  j = I * 2;
    
  6.  System.out.println (" The value of j is " + j );
    
  7.  k = k + 1;
    
  8.  I--;
    
  9. }
  10. }
    【选项】
    A. 4
    B. 6
    C. 7
    D. 8
    【正确答案】 C
    【解释】
    k 没有初始化就使用了

【题目编号】 jsd-01-101-1004
【知 识 点】 JAVA基础-JAVA语言基础-排序-插入排序
【难易程度】 70
【题目描述】
对记录序列{314,298,508,123,486,145}按从小到大的顺序进行插入排序,经过两趟排序后的结果为:
【选项】
A. {314,298,508,123,145,486}
B. {298,314,508,123,486,145}
C. {298,123,314,508,486,145}
D. 123、298,314,508,486,145}
【正确答案】 B
【解释】
插入排序算法:

public static void injectionSort(int[] number) {
   
// 第一个元素作为一部分,对后面的部分进行循环
	for (int j = 1; j < number.length; j++) {
   
		int tmp = number[j];
		int i = j - 1;
		while (tmp < number[i]) {
    number[i + 1] = number[i]; i--;
			if (i == -1)
			break;
		}
		number[i + 1] = tmp;
    }
}

【题目编号】 jsd-01-101-1005
【知 识 点】 JAVA基础-JAVA语言基础-Java基本类型
【难易程度】 30
【题目描述】
What is the numerical range of a char?
【选项】
A. 0 … 32767
B. 0 … 65535
C. –256 … 255
D. –32768 … 32767
E. Range is platform dependent.
【正确答案】 B
【解释】
在 Java 中,char 是一个无符号 16 位类型,取值范围为 0 到 65535。

【题目编号】 jsd-01-101-1006
【知 识 点】 JAVA基础-JAVA语言基础-关键字
【难易程度】 50
【题目描述】
Given:
public class Test {
public static void main(String[] args) {
String str = NULL; System.out.println(str);
}
}
What is the result? A. NULL
【选项】
B. Compilation fails.
C. The code runs with no output.
D. An exception is thrown at runtime.
【正确答案】 B
【解释】
null 应该小写

【题目编号】 jsd-01-101-1007
【知 识 点】 JAVA基础-JAVA语言基础-普通数组
【难易程度】 40
【题目描述】
Given:
public class Test {
public static void main (String[]args) {
String foo = args[1];
String bar = args[2];
String baz = args[3];
System.out.println(“baz = ” + baz);
}
}
And the output: Baz = 2
Which command line invocation will produce the output?
【选项】
A. java Test 2222
B. java Test 1 2 3 4
C. java Test 4 2 4 2
D. java Test 4 3 2 1
【正确答案】 C
【解释】
数组下标从 0 开始

【题目编号】 jsd-01-101-1008
【知 识 点】 JAVA基础-JAVA语言基础-分支结构-switch
【难易程度】 50
【题目描述】
Exhibit:
public class SwitchTest {
public static void main (String []args) {
System.out.println (“value =” +switchIt(4));
}
public static int switchIt(int x) {
int j = 1;
switch (x) {
case 1: j++;
case 2: j++; case 3: j++; case 4: j++; case 5: j++; default:j++;
}
return j + x;
}
}
What is the output from line 3?
【选项】
A. Value =3
B. Value =4
C. Value =5
D. Value =6
E. Value =7
F. Value =8
【正确答案】 F
【解释】
由于 case 块没有 break 语句,那么从 case 4:向下的代码都会执行。

【题目编号】 jsd-01-101-1009
【知 识 点】 JAVA基础-JAVA语言基础-关键字
【难易程度】 40
【题目描述】
下面关于 import, class 和 package 的声明顺序哪个正确?( )
【选项】
A. package, import, class
B. class, import, package
C. import, package, class
D. package, class, import
【正确答案】 A
【解释】

【题目编号】 jsd-01-101-1010
【知 识 点】 JAVA基础-JAVA语言基础-进制
【难易程度】 60
【题目描述】
题目:

  1. public class test (
  2. public static void main (String args[]) {
  3. int i = 0xFFFFFFF1;
  4. int j = ~i;
  5. }
  6. )
    程序运行到第 5 行时,j 的值为多少?( )
    【选项】
    A. –15
    B. 0
    C. 1
    D. 14
    E. 在第三行的错误导致编译失败
    【正确答案】 D
    【解释】
    int i = 0xFFFFFFF1;相当于 int i=-15 然后对 i 进行取反即取绝对值再减一

【题目编号】 jsd-01-101-1011
【知 识 点】 JAVA基础-JAVA语言基础-循环结构-for
【难易程度】 40
【题目描述】
选择下面代码的运行结果:()。
public class Test{
public void method(){
for(int i = 0; i < 3; i++){
System.out.print(i);
}
System.out.print(i);
}
}
【选项】
A.0122 B.0123
C.编译错误 D.没有任何输出
【正确答案】 C
【解释】
i 变量的作用范围是整个 for 循环。

【题目编号】 jsd-01-101-1012
【知 识 点】 JAVA基础-JAVA语言基础-普通数组
【难易程度】 30
【题目描述】
已知表达式 int m [ ] = {0,1,2,3,4,5,6}; 下面哪个表达式的值与数组下标量总数相等?( )
【选项】
A .m.length() B.m.length C.m.length()+1 D.m.length+1
【正确答案】 B
【解释】
数组下标是从零开始的,但是数据下标的总量和数据长度相同。

【题目编号】 jsd-01-101-1013
【知 识 点】 JAVA基础-JAVA语言基础-运算符和表达式-移位运算符
【难易程度】 30
【题目描述】
关于运算符>>和>>>描述正确的是()
【选项】
A.>>执行移动 B.>>执行翻转
C.>>执行有符号左移,>>>执行无符号左移
D.>>执行无符号左移,>>>执行有符号左移
【正确答案】 C
【解释】

【题目编号】 jsd-01-101-1014
【知 识 点】 JAVA基础-JAVA语言基础-进制
【难易程度】 50
【题目描述】
存储一个24X24点阵的汉字(每个点1bit),需要多少字节( )
【选项】
A. 24 B. 48 C. 72 D. 144
【正确答案】 C
【解释】
解释:2424/8=72。解释下意思:2424的结果是二进制位,而八个二进制位等于一个字节,所以再除以八是所得的字节数。

【题目编号】 jsd-01-101-2001
【知 识 点】 JAVA基础-JAVA语言基础-关键字
【难易程度】 30
【题目描述】
如下哪些不是 java 的关键字?( )
【选项】
A.const B.NULL C.false D.this E.native
【正确答案】 BC
【解释】
虽然 null false 还有 true 不是 java 的关键字,但是都有特殊用途,不建议作为标识符。

【题目编号】 jsd-01-101-2002
【知 识 点】 JAVA基础-JAVA语言基础-循环结构-while
【难易程度】 40
【题目描述】
69.已知如下代码:( )
public class Test{
public static void main(String arg[] ){
int i = 5;
do{ System.out.print(i);
}while(–i>5)
System.out.print(“finished”);
}
}
执行后的输出是什么?
【选项】
A. 5 B. 4 C. 6 D. finished
【正确答案】 AD
【解释】
输出 5finished,do?while 循环中循环体一定会执行一次

【题目编号】 jsd-01-101-2003
【知 识 点】 JAVA基础-JAVA语言基础-Java基本类型
【难易程度】 20
【题目描述】
下面的哪些声明是合法的?( )
A. long 1 = 4990 B. int i = 4L C. float f =1.1 D. double d = 34.4
【选项】
【正确答案】AD
【解释】
B.4L 应该是 long 类型的写法,C.1.1 是 double 类型 ,float f=1.1f 是正确写法

【题目编号】 jsd-01-101-2004
【知 识 点】 JAVA基础-JAVA语言基础-Java基本类型
【难易程度】 10
【题目描述】
选择 Java 语言中的基本数据类型( )
【选项】
A.byte B.Integer C.String D.char E.long
【正确答案】 ADE
【解释】
基本数据类型总共有 8 个:byte,short,int,long,char,boolean,float,double

【题目编号】 jsd-01-101-2005
【知 识 点】 JAVA基础-JAVA语言基础-运算符和表达式
【难易程度】 20
【题目描述】
从下列选项中选择正确的 Java 表达式
【选项】
A.int k=new String(“aa”) B.String str=String(“bb”)
C.char c=74; D.long j=8888;
【正确答案】 BCD
【解释】

【题目编号】 jsd-01-101-2006
【知 识 点】 JAVA基础-JAVA语言基础
【难易程度】 20
【题目描述】
下列描述中,哪些符合 Java 语言的特征
【选项】
A. 支持跨平台(Windows,Linux,Unix等)
B. GC(自动垃圾回收),提高了代码安全性
C. 支持类 C 的指针运算操作
D. 不支持与其它语言书写的程序进行通讯
【正确答案】 AB
【解释】

【题目编号】 jsd-01-101-4001
【知 识 点】 JAVA基础-JAVA语言基础-递归方法-递归方法
【难易程度】 80
【题目描述】
简单说明什么是递归?什么情况会使用?并使用 java 实现一个简单的递归程序。
【正确答案】
1)递归做为一种算法在程序设计语言中广泛应用.是指函数/过程/子程序在运行过程中直接或间接调 用自身而产生的重入现象。
2)递归算法一般用于解决三类问题:
a.数据的定义是按递归定义的。(Fibonacci(斐波那契)函数)
b.问题解法按递归算法实现。(回溯)
c.数据的结构形式是按递归定义的。(树的遍历,图的搜索)
3)这是一个排列的例子,它所做的工作是将输入的一个字符串中的所有元素进行排序并输出,例如: 你给出的参数是"abc" 则程序会输出:abc acb bac bca cab cba
a.算法的出口在于:low=high也就是现在给出的排列元素只有一个时。
b.算法的逼近过程:先确定排列的第一位元素,也就是循环中i所代表的元素, 然后low+1开始减少排列元素,如此下去,直到low=high
public class Foo {
public static void main(String[] args) {
permute(“abc”);
}
public static void permute(String str) {
char[] strArray = str.toCharArray();
permute(strArray, 0, strArray.length - 1);
}
public static void permute(char[] list, int low, int high) {
int i;
if (low == high) {
String cout = “”;
for (i = 0; i <= high; i++)
cout += list[i];
System.out.println(cout);
} else {
for (i = low; i <= high; i++) {
char temp = list[low];
list[low] = list[i];
list[i] = temp;
permute(list, low + 1, high);
temp = list[low]; list[low] = list[i]; list[i] = temp;
}
}
}
}
【解释】无

【题目编号】 jsd-01-101-4002
【知 识 点】 JAVA基础-JAVA语言基础-Java开发环境
【难易程度】 30
【题目描述】
列出自己常用的 jdk 包.
【正确答案】
JDK 常用的 package
java.lang: 这个是系统的基础类,比如 String 等都是这里面的,这个 package 是唯一一个可以不用 import 就可以使用的 Package。
java.io: 这里面是所有输入输出有关的类,比如文件操作等
java.net: 这里面是与网络有关的类,比如 URL,URLConnection 等。
java.util : 这个是系统辅助类,特别是集合类 Collection,List,Map 等。
java.sql: 这个是数据库操作的类,Connection, Statememt,ResultSet 等
【解释】无

【题目编号】 jsd-01-101-4003
【知 识 点】 JAVA基础-JAVA语言基础-Java开发环境
【难易程度】 30
【题目描述】
列出自己常用的 jdk 中的数据结构
【正确答案】
线性表,链表,哈希表是常用的数据结构。
【解释】无

【题目编号】 jsd-01-101-4004
【知 识 点】 JAVA基础-JAVA语言基础-Java基本类型
【难易程度】 40
【题目描述】
char 类型能否存储一个中文字符?为什么
【正确答案】
可以。一个 char 是两个字节,而一个中文也是两个字节。
【解释】无

【题目编号】 jsd-01-101-4005
【知 识 点】 JAVA基础-JAVA语言基础-分支结构-switch
【难易程度】 30
【题目描述】
Switch 选择语句能否作用在 String【字符串】上,也就是能否这么写:Switch(一个字符串变量)?
【正确答案】
不可以,只能处理 int,byte,short,char,(其实是只能处理 int,其它三种是可以 promotion 到 int 型)不能处理 Sring 。
【解释】无

【题目编号】 jsd-01-101-4006
【知 识 点】 JAVA基础-JAVA语言基础-Java基本类型
【难易程度】 20
【题目描述】
在 java 语言中 int 和 Integer 有什么区别
【正确答案】
int 是基本数据类型,Integer 是 int 的包装类,属于引用类型
【解释】无

【题目编号】 jsd-01-101-4007
【知 识 点】 JAVA基础-JAVA语言基础-运算符和表达式-关系运算
【难易程度】 20
【题目描述】
计算下列结果:
25&3 =
25|3=
【正确答案】
25 的二进制是11001,3的二进制是00011,按位与的结果是:00001,按位或的结果是:11010,因此转成10进制分别为:1和27。
【解释】无

【题目编号】 jsd-01-101-4008
【知 识 点】 JAVA基础-JAVA语言基础-循环结构-for
【难易程度】 20
【题目描述】
JDK1.5 中支持的 for 循环的语法
【正确答案】
for(type element : array) {
System.out.println(element)
}
type 集合(不仅仅指 Collection,也包含普通的数组)中元素的数据类型element 遍历到的元素;array集合对象本身(当然不只是 Collection)
【解释】无

【题目编号】 jsd-01-101-4009
【知 识 点】 JAVA基础-JAVA语言基础-Java基本类型
【难易程度】 30
【题目描述】
Bit 和 Byte 是什么意思?它们之间有什么关系?
【正确答案】
bit 中文名称是位,是用以描述电脑数据量的最小单位。
byte(字节)是计算机信息技术用于计量存储容量和传输容量的一种计量单位 1byte=8bit
【解释】无

【题目编号】 jsd-01-101-4010
【知 识 点】 JAVA基础-JAVA语言基础
【难易程度】 40
【题目描述】
你认为 java 与其他(你所了解的)语言相比,有什么优点和缺点?
【正确答案】
1). Java 没有预处理指令。(如 C 中的#define , #include , #ifdef 等)。C 中的常量定义在Java 中用 static final 来取代。
2). Java 中没有 C 中的全局变量。
3). Java 中的主类型的 size 是确定的,而 C 中主类型的 size 跟平台相关。
4). Java 中没有了指针,它使用了类似的句柄来取代指针,但是 Java 中不允许对句柄进行加减, 没有取地址操作符之类的东东。
5). Java 有垃圾收集机制,不需要自己释放空间。
6). Java 没有 goto 语句。Java 在 C 提供的控制语句基础上增加了异常处理和标签 break 和continue 语句。这些可以替代 goto 的作用。
7). C 要求一个方法或块中使用的所有局部变量的定义在该方法或块的最开始处定义,而 Java允许这些定义在方法或块的任意地方出现。
8). Java 不要求在调用一个函数以前已经定义了该函数,可以在调用点后面定义。而 C 有这个要 求。
9). Java 不支持 C 中的 strut 和 union 类型。Java 支持方法重载。
10). Java 不支持 C 中的 enum 关键字。
11). Java 不支持 C 中的 bitfields 能力。
12). Java 不支持 C 的 typedef。
13). Java 不支持 C 的方法指针。
14). Java 不支持 C 的可变参数表。
java 和.net 的都不适合做桌面程序,这两个比较适合写 WEB 的程序;
c++比较适合写桌面程序 c++/java 都是强类型的静态预编译型语言。优点是结构性强,程序可读性好, 开发效率高,适合开发大型应用。就本人的经验而言,java 的开发效率优于 c++,实际上 java 大行其道的首要因素就是它够简单。java 尤其不适合开发桌面程序,GUI 的 API 一直都是 java 的弱点;
perl/python 是动态解释型语言。perl 是弱类型的而 python 是强类型的,后者的变量一旦赋值, 就拥有了类型,不能再赋其他类型的值。不象 javascript/perl 可以随便定义。perl 是 unix 下的王牌工具,在缺乏 IDE 的字符界面下,很好地弥补了unix;
shell/utility 的不足,并且部分继承了面向对象语言的灵活性。适合用来搭建大程序。
【解释】无

【题目编号】 jsd-01-101-4011
【知 识 点】 JAVA基础-JAVA语言基础-排序
【难易程度】 50
【题目描述】
排序都有哪几种方法?用伪代码实现一个快速排序
【正确答案】
排序的方法有:插入排序(直接插入排序、希尔排序),交换排序(冒泡排序、快速排序),选择排序(直接选择排序、堆排序),归并排序,分配排序(箱排序、基数排序) 快速排序的伪代码:使用快速排序方法对 a[ 0 :n- 1 ]排序从 a[ 0 :n- 1 ]中选择一个元素作为 middle,该元素为支点;把余下的元素分割为两段left和 right,使得left中的元素都小于等于支点,而right中的元素都大于等于支点;递归地使用快速排序方法对left进行排序;递归地使用快速排序方法对 right 进行排序;所得结果 为 left + middle + right。
【解释】无

【题目编号】 jsd-01-101-4012
【知 识 点】 JAVA基础-JAVA语言基础-运算符和表达式-逻辑运算符
【难易程度】 50
【题目描述】
String a=null; if (a!=null && a.length()>10) {…}
上面面的代码,如果你用“&”替换“&&”将发生什么错误?
【正确答案】
会抛出空指针异常;&&会短路,只要遇到 boolean 值为 false 就不会再往后执行了;而&则是会 把两边的运算都执行完。
【解释】无

【题目编号】 jsd-01-101-5001
【知 识 点】 JAVA基础-JAVA语言基础-方法-递归方法
【难易程度】 50
【题目描述】
用递归方法实现正序显示数组元素。例如 String[] s = {“a”,”b”,”c”,”d”};
方法声明如下:
void print(String[] s,int i){ }
【正确答案】
参数 i 是指打印 string 数组的起始位置,原理是正序打印 s 从第 0 个开始的所有字符串,等价于先打印第 0 个,在打印 s 中从第一个开始的所有字符串,如此递归
void print(String[] s, int i) {
if ((i >= 0) && (i < s.length)) {
System.out.print(s[i]);
i++;
print(s, i);
}
}
【解释】无

【题目编号】 jsd-01-101-5002
【知 识 点】 JAVA基础-JAVA语言基础-分支结构-if else
【难易程度】 60
【题目描述】
请写出求 n!的算法。
【正确答案】
public class Factorial {
public static void main(String[] args) {
long n = 6;
System.out.println(doFactorial(n));
}
public static long doFactorial(long n) {
if (n < 1) {
System.out.println(“ERROR”);
return 0;
} else if (n == 1 || n == 2) {
return n;
} else {
return n * doFactorial(n - 1);
}
}
}
【解释】无

【题目编号】 jsd-01-101-5003
【知 识 点】 JAVA基础-JAVA语言基础-排序-冒泡排序
【难易程度】 60
【题目描述】
编写一个字符界面的 Java Application 程序,接受用户输入的 10 个整数,并输出这 10 个整数的最大值和最小值。
【正确答案】
采用了冒泡进行排序
import java.util.Scanner;
import java.util.Scanner;
public class MaxAndMin {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int[] arr = new int[10];
for (int i = 0; i < arr.length; i++) {
int next = scanner.nextInt();
arr[i] = next;
}
int[] after=Arrays.sort(arr);
System.out.println(“最小值:”+after[0]+",最大值:"+after[arr.length-1]);
}
}
【解释】无

【题目编号】 jsd-01-101-5004
【知 识 点】 JAVA基础-JAVA语言基础-排序-选择排序
【难易程度】 50
【题目描述】
写一个排序算法 1-100 随机数字,进行排序,要求效率。
【正确答案】
public class Sort {
// 选择排序方法
public static void selectionSort(int[] number) {
for (int i = 0; i < number.length - 1; i++) {
int m = i;
for (int j = i + 1; j < number.length; j++) {
if (number[j] < number[m])
m = j;
}
if (i != m)
swap(number, i, m);
}
}
// 用于交换数组中的索引为 i、j 的元素
private static void swap(int[] number, int i, int j) {
int t;
t = number[i]; number[i] = number[j]; number[j] = t;
}
public static void main(String[] args) {
// 定义一个数组
int[] num = new int[100];
for(int i=0;i<num.length;i++){
num[i]=(int)(Math.random()*100)+1;
}
// 排序
selectionSort(num);
for (int i = 0; i < num.length; i++) {
System.out.println(num[i]);
}
}
}
【解释】无

【题目编号】 jsd-01-101-5005
【知 识 点】 JAVA基础-JAVA语言基础-排序-冒泡排序
【难易程度】 50
【题目描述】
冒泡排序:依次比较相邻的两个数,将大数放在前面,小数放在后面。第一趟结束,在最后的数必是 所有数中的最小数。重复以上过程,直至最终完成排序。由于在排序过程中总是大数往前放,小数往后 放,相当于气泡往上升,所以称作冒泡排序。请用 JAVA 语言编写一个完成冒泡排序算法的程序。
【正确答案】
解答:
int[] bubbleSort(int before[]) {
int t;
for (int i = 0; i < before.length; i++) {
for (int j = 0; j < before.length - i - 1; j++) {
if (before[j] > before[j + 1]) {
t = before[j];
before[j] = before[j + 1];
before[j + 1] = t;
}
}
}
return before;
}
【解释】无

【题目编号】 jsd-01-101-5006
【知 识 点】 JAVA基础-JAVA语言基础-分支结构、循环结构
【难易程度】 70
【题目描述】
下面是一个由*号组成的 4 行倒三角形图案。要求:1、输入倒三角形的行数,行数的取值 3-21 之 间,对于非法的行数,要求抛出提示“非法行数!”;2、在屏幕上打印这个指定了行数的倒三角形。




【正确答案】
import java.util.Scanner;
public class Lines {
public static void main(String args[]) {
Scanner scanner = new Scanner(System.in);
int lines = scanner.nextInt();
if (lines > 3 && lines < 21) {
for (int i = lines-1; i >= 0; i–) {
for (int z = 0; z <= i * 2; z++) {
System.out.print("*");
}
System.out.print("\n");
}
}else{
System.out.println(“非法行数!”);
}
}
}
【解释】无

【题目编号】 jsd-01-101-5007
【知 识 点】 JAVA基础-JAVA语言基础-循环结构-for
【难易程度】 50
【题目描述】
编写一个程序,用来计算 1 到 100 间所有整数的和是多少?
【正确答案】
public static void GetSum(){
int sum = 0;
for(int i=1;i<=100;i++){
sum+=i;
}
System.out.println(“和为:”+sum);
}
【解释】无

【题目编号】 jsd-01-101-5008
【知 识 点】 JAVA基础-JAVA语言基础-循环结构-for
【难易程度】 80
【题目描述】
打印出杨辉三角形(编程题)
【正确答案】
public class printYang {
public static void main(String[] args) {
int[][] a = new int[10][10];
for(int i=0; i<10; i++) {
a[i][i] = 1;
a[i][0] = 1;
}
for(int i=2; i<10; i++) {
for(int j=1; j<i; j++) {
a[i][j] = a[i-1][j-1] + a[i-1][j];
}
}
for(int i=0; i<10; i++) {
for(int k=0; k<2*(10-i)-1; k++) {
System.out.print(" ");
}
for(int j=0; j<=i; j++) {
System.out.print(a[i][j] + " ");
}
System.out.println();
}
}
}
【解释】无

【题目编号】 jsd-01-101-5009
【知 识 点】 JAVA基础-JAVA语言基础-循环结构
【难易程度】 60
【题目描述】
下列代码的输出结果是什么?
public class MyFor {
public static void main (String argv[]){
int i; int j;
outer:for(i=1;i<3;i++)
inner:for(j=1;j<3;j++){
if (j==2) continue outer;
System.out .println(“Value for i=”+i+" Value for j=" +j);
}
}
}
【正确答案】
Value for i=1 Value for j=1
Value for i=2 Value for j=1
【解释】无

【题目编号】 jsd-01-101-5010
【知 识 点】 JAVA基础-JAVA面向对象-普通数组、进制
【难易程度】 80
【题目描述】
现有一个 32 位的整型变量 value 和一个有 32 个元素的数组 a[32],
要求:1、对 value 随机赋值;2、让数组 a[n]的值等于 value“位 n”的值,0<=n<=31。举例:如果 value 的“位 0”(Bit0)=0,那么 a[0]=0;如果 value 的“位 10”(Bit10)=1,那么 a[10]=1。
【正确答案】
public class Foo {
public static void main(String[] args) {
//产生随机数
int random = (int) (Math.random() * Integer.MAX_VALUE + 1);
//转成二进制字符串
String str=Integer.toBinaryString(random);
//转成二进制时最前面的零被省略,补上省略的 0
if(str.length()<32){
for(int j=0;j<=32-str.length();j++){
str=“0”+str;
}
}
//给数组赋值
int[] a=new int[32];
for(int i=0;i<str.length();i++){
a[i]=Integer.parseInt(String.valueOf(str.charAt(i)));
System.out.println(“a[”+i+"]="+a[i]);
}
}
}
【解释】无
1.2 JAVA面向对象
【题目编号】 jsd-01-102-1001
【知 识 点】 JAVA基础-JAVA面向对象-static、抽象类-抽象方法
【难易程度】 30
【题目描述】
Abstract method cannot be static. True or False ?
【选项】
A. True
B. False
【正确答案】 A
【解释】
抽象方法可以在子类中被重写,但是静态方法不能在子类中被重写,静态方法和静态属性与对象是无关的,只与类有关,这与abstract 是矛盾的,所以abstract 是不能被修饰为 static,否则就失去了abstract的意义了。

【题目编号】 jsd-01-102-1002
【知 识 点】 JAVA基础-JAVA面向对象-重写、父子类
【难易程度】 60
【题目描述】
What will be the output when you compile and execute the following program.
class Base
{
void test() {
System.out.println(“Base.test()”);
}
}
public class Child extends Base {
void test() { System.out.println(“Child.test()”);}
static public void main(String[] a) {
Child anObj = new Child();
Base baseObj = (Base)anObj;
baseObj.test();
}
}
Select most appropriate answer.
【选项】
A. Child.test() Base.test()
B. Base.test() Child.test()
C. Base.test()
D. Child.test()
【正确答案】 D
【解释】
测试代码相当于:Base baseObj = new Child();父类的引用指向子类的实例,子类又重写了父类 的 test 方法,因此调用子类的 test 方法。

【题目编号】 jsd-01-102-1003
【知 识 点】 JAVA基础-JAVA面向对象-static、、父子类
【难易程度】 60
【题目描述】
What will be the output when you compile and execute the following program.
class Base{
static void test() { System.out.println(“Base.test()”); }
}

public class Child extends Base {
void test() {
System.out.println(“Child.test()”);
Base.test(); //Call the parent method
}
static public void main(String[] a) {
new Child().test();
}
}
Select most appropriate answer.
【选项】
A. Child.test() Base.test()
B. Child.test() Child.test()
C. Compilation error. Cannot override a static method by an instance method
D. Runtime error. Cannot override a static method by an instance method
【正确答案】 C
【解释】
静态方法不能在子类中被重写。

【题目编号】 jsd-01-102-1004
【知 识 点】 JAVA基础-JAVA面向对象-引用类型数组
【难易程度】 30
【题目描述】
执行完以下代码 int [ ] x = new int[25];后,以下哪项说明是正确的( ):
【选项】
A. x[24]为 0
B. x[24]未定义
C. x[25]为 0
D. x[0]为空
【正确答案】 A
【解释】
x 属于引用类型,该引用类型的每一个成员是 int 类型,默认值为:0

【题目编号】 jsd-01-102-1005
【知 识 点】 JAVA基础-JAVA面向对象-static-static块
【难易程度】 60
【题目描述】
关于以下 application 的说明,正确的是( ):
1. class StaticStuff
2. {
3. static int x=10;
4. static { x+=5;}
5. public static void main(String args[ ])
6. {
7. System.out.println(“x=” + x);
8. }
9. static { x/=3;}
10. }
【选项】
A. 4 行与 9 行不能通过编译,因为缺少方法名和返回类型
B. 9 行不能通过编译,因为只能有一个静态初始化器
C. 编译通过,执行结果为:x=5
D. 编译通过,执行结果为:x=3
【正确答案】 C
【解释】
自由块是类加载的时候就会被执行到的,自由块的执行顺序是按照在类中出现的先后顺序执行。

【题目编号】 jsd-01-102-1006
【知 识 点】 JAVA基础-JAVA面向对象-static
【难易程度】 60
【题目描述】
关于以下程序代码的说明正确的是( ):
1.class HasStatic{
2. private static int x=100;
3. public static void main(String args[ ]){
4. HasStatic hs1=new HasStatic( );
5. hs1.x++;
6. HasStatic hs2=new HasStatic( );
7. hs2.x++;
8. hs1=new HasStatic( );
9. hs1.x++;
10. HasStatic.x–;
11. System.out.println(“x=”+x);
12. }
13.}
【选项】
A. 5 行不能通过编译,因为引用了私有静态变量
B. 10 行不能通过编译,因为 x 是私有静态变量
C. 程序通过编译,输出结果为:x=103
D. 程序通过编译,输出结果为:x=102
【正确答案】 D
【解释】
静态变量是所有对象所共享的,所以上述代码中的几个对象操作是同一静态变量 x, 静态变量可以通过类名调用。

【题目编号】 jsd-01-102-1007
【知 识 点】 JAVA基础-JAVA面向对象-对象和类-构造方法
【难易程度】 40
【题目描述】
下列说法正确的有()
【选项】
A. class 中的 constructor 不可省略
B. constructor 必须与 class 同名,但方法不能与 class 同名
C. constructor 在一个对象被 new 时执行
D.一个 class 只能定义一个 constructor
【正确答案】 C
【解释】
构造方法的作用是在实例化对象的时候给数据成员进行初始化 A.类中如果没有显示的给出构造方法,系统会提供一个无参构造方法 B.构造方法与类同名,类中可以有和类名相同的方法 D.构造方法可以重载

【题目编号】 jsd-01-102-1008
【知 识 点】 JAVA基础-JAVA面向对象-对象和类-实例方法
【难易程度】 40
【题目描述】
下列哪种说法是正确的()
【选项】
A.实例方法可直接调用超类的实例方法
B.实例方法可直接调用超类的类方法
C.实例方法可直接调用其他类的实例方法
D.实例方法可直接调用本类的类方法
【正确答案】 D
【解释】
A. 实例方法不可直接调用超类的私有实例方法
B. 实例方法不可直接调用超类的私有的类方法
C.要看访问权限

【题目编号】 jsd-01-102-1009
【知 识 点】 JAVA基础-JAVA面向对象-抽象类-抽象方法
【难易程度】 60
【题目描述】
下列哪一种叙述是正确的( )
【选项】
A. abstract 修饰符可修饰字段、方法和类
B. 抽象方法的 body 部分必须用一对大括号{ }包住
C. 声明抽象方法,大括号可有可无
D. 声明抽象方法不可写出大括号
【正确答案】 D
【解释】
abstract 可以修饰方法和类,不能修饰属性。抽象方法没有方法体,即没有大括号{}

【题目编号】 jsd-01-102-1010
【知 识 点】 JAVA基础-JAVA面向对象-面向对象概念
【难易程度】 30
【题目描述】
以下关于面向对象概念的描述中,不正确的一项是()。
【选项】
A.在现实生活中,对象是指客观世界的实体
B.程序中的对象就是现实生活中的对象
C.在程序中,对象是通过一种抽象数据类型来描述的,这种抽象数据类型称为类(class)
D.在程序中,对象是一组变量和相关方法的集合
【正确答案】 B
【解释】

【题目编号】 jsd-01-102-1011
【知 识 点】 JAVA基础-JAVA面向对象-对象内存管理-堆栈
【难易程度】 30
【题目描述】
栈是一种( )
【选项】
A. 存取受限的线性结构
B. 存取不受限的线性结构
C. 存取受限的非线性结构
D. 存取不受限的非线性结构
【正确答案】 A
【解释】
栈(stack)在计算机科学中是限定仅在表尾进行插入或删除操作的线性表。

【题目编号】 jsd-01-102-1012
【知 识 点】 JAVA基础-JAVA面向对象-对象内存管理-垃圾回收
【难易程度】 30
【题目描述】
下列哪些语句关于内存回收的说明是正确的。
【选项】
A. 程序员必须创建一个线程来释放内存
B. 内存回收程序负责释放无用内存
C. 内存回收程序允许程序员直接释放内存
D. 内存回收程序可以在指定的时间释放内存对象
【正确答案】 B
【解释】
垃圾收集器在一个 Java 程序中的执行是自动的,不能强制执行,即使程序员能明确地判断出有一块内存已经无用了,是应该回收的,程序员也不能强制垃圾收集器回收该内存块。程序员唯一能做的就是通过调用 System. gc 方法来"建议"执行垃圾收集器,但其是否可以执行,什么时候执行却都是不可知的。

【题目编号】 jsd-01-102-1013
【知 识 点】 JAVA基础-JAVA面向对象-接口、抽象类-抽象方法
【难易程度】 40
【题目描述】
Which method must be defined by a class implementing the java.lang.Runnable interface?
【选项】
A. void run()
B. public void run()
C. public void start()
D. void run(int priority)
E. public void run(int priority)
F. public void start(int priority)
【正确答案】 B
【解释】
实现 Runnable 接口,接口中有一个抽象方法 run,实现类中实现该方法。

【题目编号】 jsd-01-102-1014
【知 识 点】 JAVA基础-JAVA面向对象-内部类-匿名内部类
【难易程度】 60
【题目描述】
Given:
public static void main(String[] args) {
Object obj = new Object() {
public int hashCode() {
return 42;
}
}; System.out.println(obj.hashCode());
}
What is the result?
【选项】
A. 42
B. An exception is thrown at runtime.
C. Compilation fails because of an error on line 12.
D. Compilation fails because of an error on line 16.
E. Compilation fails because of an error on line 17.
【正确答案】 A
【解释】
匿名内部类覆盖 hashCode 方法。

【题目编号】 jsd-01-102-1016
【知 识 点】 JAVA基础-JAVA面向对象-访问控制
【难易程度】 70
【题目描述】
Exhibit:
1.package foo;
2.import java.util.Vector;
3.private class MyVector extends Vector {
4. int i = 1;
5. public MyVector() {
6. i = 2;
7. }
8.}
9.public class MyNewVector extends MyVector {
10. public MyNewVector () {
11. i = 4;
12. }
13. public static void main (String args []) {
14. MyVector v = new MyNewVector();
15. }
16.}
The file MyNewVector.java is shown in the exhibit. What is the result?
【选项】
A. Compilation will succeed.
B. Compilation will fail at line 3.
C. Compilation will fail at line 6.
D. Compilation will fail at line 9. E. Compilation will fail at line 14.
【正确答案】 B
【解释】
类 MyVector 不能是私有的

【题目编号】 jsd-01-102-1016
【知 识 点】 JAVA基础-JAVA面向对象-继承
【难易程度】 60
【题目描述】
在下面程序的第 6 行补充上下列哪个方法,会导致在编译过程中发生错误?

  1. class Super{
  2.  public float getNum(){
    
  3.  	return 3.0f;
    
  4.  }
    
  5. }
  6. pubhc class Sub extends Super{
  7. }
    【选项】
    A,public float getNum(){retun 4.0f;}
    B.public void getNum(){}
    C.public void getNum(double d){}
    D.public double getNum(float d){ retun 4.0f ;}
    【正确答案】 B
    【解释】
    方法重写的问题。子类中有和父类的方法名相同,但是参数不同,不会出编译错误,认为是子类 的特有的方法,但是如果子类中方法和父类的方法名,参数,访问权限,异常都相同,只有返回值类型不同会编译不通过。

【题目编号】 jsd-01-102-1017
【知 识 点】 JAVA基础-JAVA面向对象-对象和类-实例方法
【难易程度】 50
【题目描述】
关于实例方法和类方法,以下描述正确的是:( )
【选项】
A. 实例方法只能访问实例变量
B. 类方法既可以访问类变量,也可以访问实例变量
C. 类方法只能通过类名来调用
D. 实例方法只能通过对象来调用
【正确答案】 D
【解释】
A 实例方法可以访问类变量;B 类方法只能访问类变量;C 类方法可以通过对象调用

【题目编号】 jsd-01-102-1018
【知 识 点】 JAVA基础-JAVA面向对象-接口
【难易程度】 20
【题目描述】
接口是 Java 面向对象的实现机制之一,以下说法正确的是:( )
【选项】
A. Java 支持多重继承,一个类可以实现多个接口;
B. Java 只支持单重继承,一个类可以实现多个接口;
C. Java 只支持单重继承,一个类只可以实现一个接口;
D. Java 支持多重继承,但一个类只可以实现一个接口。
【正确答案】 B
【解释】
Java 支持单重继承,一个类只能继承自另外的一个类,但是一个类可以实现多个接口。

【题目编号】 jsd-01-102-1019
【知 识 点】 JAVA基础-JAVA面向对象-接口
【难易程度】 40
【题目描述】
下列关于 interface 的说法正确的是:( )
【选项】
A. interface 中可以有 private 方法
B. interface 中可以有 final 方法
C. interface 中可以有 function 实现
D. interface 可以继承其他 interface
【正确答案】 D
【解释】
A. 接口中不可以有 private 的方法
B.接口中不可以有 final 的方法 接口中的方法默认是 public abstract 的
C.接口中的方法不可以有实现

【题目编号】 jsd-01-102-1020
【知 识 点】 JAVA基础-JAVA面向对象-访问控制-访问修饰符
【难易程度】 50
【题目描述】
已知 A 类被打包在 packageA, B 类被打包在 packageB,且B类被声明为 public,且有一个成员变量 x 被声明为, protected 控制方式 。C 类也位于 packageA 包,且继承了 B 类。则以下说话正确的是( )
【选项】
A. A 类的实例不能访问到 B 类的实例
B. A 类的实例能够访问到 B 类一个实例的 x 成员
C. C 类的实例可以访问到 B 类一个实例的 x 成员
D. C 类的实例不能访问到 B 类的实例
【正确答案】 C
【解释】
不同包子类的关系, 可以访问到父类 B 的 protected 成员

【题目编号】 jsd-01-102-1021
【知 识 点】 JAVA基础-JAVA面向对象-继承-父子类
【难易程度】 70
【题目描述】
以下程序正确的输出是( )
package test;
public class FatherClass {
public FatherClass() {
System.out.println(“FatherClass Create”);
}
}
package test;
import test.FatherClass;
public class ChildClass extends FatherClass {
public ChildClass() {
System.out.println(“ChildClass Create”);
}
public static void main(String[] args) {
FatherClass fc = new FatherClass();
ChildClass cc = new ChildClass();
}
}
【选项】
A. FatherClass Create
FatherClass Create
ChildClass Create
B. FatherClass Create
ChildClass Create
FatherClass Create
C. ChildClass Create
ChildClass Create
FatherClass Create
D. ChildClass Create
FatherClass Create
FatherClass Create
【正确答案】 A
【解释】
在子类构造方法的开始默认情况下有一句 super();来调用父类的构造方法

【题目编号】 jsd-01-102-1022
【知 识 点】 JAVA基础-JAVA面向对象-对象和类-构造方法
【难易程度】 40
【题目描述】
给定如下代码,下面哪个可以作为该类的构造函数 ( )
public class Test {
?
}
【选项】
A. public void Test() {?}
B. public Test() {?}
C. public static Test() {?}
D. public static void Test() {?}
【正确答案】 B
【解释】
构造方法:与类同名没有返回类型

【题目编号】 jsd-01-102-1023
【知 识 点】 JAVA基础-JAVA面向对象-抽象类-抽象方法、访问控制-访问修饰符
【难易程度】 60
【题目描述】
从下面四段(A,B,C,D)代码中选择出正确的代码段()
【选项】
A.abstract class Name {
private String name;
public abstract boolean isStupidName(String name) {}
}
B.public class Something {
void doSomething () {
private String s = “”; int l = s.length();
}
}
C.public class Something {
public static void main(String[] args) {
Other o = new Other(); new Something().addOne(o);
}
public void addOne(final Other o) {
o.i++;
}
}
class Other {
public int i;
}
D.public class Something { public int addOne(final int x) { return ++x; }
}
【正确答案】 C
【解释】
A. 抽象方法不能有方法体
B.方法中定义的是局部变量,不能用类成员变量修饰符 private
D.final 修饰为常量,常量的值不能被改变

【题目编号】 jsd-01-102-1024
【知 识 点】 JAVA基础-JAVA面向对象-继承-重载和重写
【难易程度】 30
【题目描述】
下面那几个函数是 public void method(){…}的重载函数?()
【选项】
A.public void method( int m){…}
B.public int method(){…}
C.public void method2(){…}
D.public int method(int m,float f ){…}
【正确答案】 A
【解释】
重载:方法名相同,参数列表不同

【题目编号】 jsd-01-102-1025
【知 识 点】 JAVA基础-JAVA面向对象-继承-instanceof
【难易程度】 70
【题目描述】
类 Teacher 和 Student 是类 Person 的子类; Teacher t;
Student s;
// t and s are all non-null.
if (t instanceof Person ){ s=(Student)t; }
最后一条语句的结果是:
【选项】
A.将构造一个 Student 对象; B.表达式是合法的;
C.表达式是错误的; D.编译时正确, 但运行时错误。
【正确答案】 D
【解释】
instanceof 是 Java 的一个二元操作符,它的作用是测试它左边的对象是否是它右边的类的实例,返 回 boolean 类型的数据。Teahcer 和 Student 之间没有继承关系不能做强制类型转换。

【题目编号】 jsd-01-102-1026
【知 识 点】 JAVA基础-JAVA面向对象-抽象类、static、final
【难易程度】 50
【题目描述】
下列关于修饰符混用的说法,错误的是( ):
【选项】
A. abstract 不能与 final 并列修饰同一个类
B. abstract 类中可以有 private 的成员
C. abstract 方法必须在 abstract 类中
D. static 方法中能处理非 static 的属性
【正确答案】 D
【解释】
静态方法中不能引用非静态的成员

【题目编号】 jsd-01-102-1027
【知 识 点】 JAVA基础-JAVA面向对象-访问控制-访问修饰符
【难易程度】 40
【题目描述】
给出如下代码:( )
class Test{
private int m;
public static void fun() {
//some code?
}
}
如何使成员变量 m 被函数 fun()直接访问?()
【选项】
A.将 private int m 改为 protected int m
B.将 private int m 改为 public int m
C.将 private int m 改为 static int m
D.将 private int m 改为 int m
【正确答案】 C
【解释】
静态的方法中可以直接调用静态数据成员

【题目编号】 jsd-01-102-1028
【知 识 点】 JAVA基础-JAVA面向对象-final
【难易程度】 40
【题目描述】
MAX_LENGTH 是 int 型 public 成员变量,变量值保持为常量 100,用简短语句定义这个变量。
【选项】
A .public int MAX_LENGTH=100; B. final int MAX_LENGTH=100;
C. final public int MAX_LENGTH=100; D. public final int MAX_LENGTH&#

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值