常见的Java上机面试题Word格式.docx
《常见的Java上机面试题Word格式.docx》由会员分享,可在线阅读,更多相关《常见的Java上机面试题Word格式.docx(25页珍藏版)》请在冰点文库上搜索。
//要进行截取操作的字符串
5.
int
n;
//截取的字符串的字节数
6.
public
void
main(String[]
args)
7.
System.out.println("
请输入字符串:
"
);
8.
Scanner
scStr
=
new
Scanner(System.in);
//从键盘获取字符串
9.
ss
scStr.next();
//
将Scanner对象中的内容以字符串的形式取出来
10.
请输入字节数:
11.
scByte
12.
n
scByte.nextInt();
//将Scanner对象中的内容以数值的形式取出来
13.
Interception(setValue());
//方法与方法间的套用
14.
}
15.
String[]
setValue()
{
//此方法的作用是将字符串转换成字符串数组
16.
string
String[ss.length()];
//创建一个字符数组string
17.
for
(int
i
0;
<
string.length;
i++)
18.
string[i]
ss.substring(i,
+
1);
19.
//将字符串ss中的
第i个字符取出,放入字符数组中string中
20.
21.
return
string;
//将这个字符数组返回
22.
23.
Interception(String[]
string)
24.
count
25.
m
[\u4e00-\u9fa5]"
;
//汉字的正则表达试
26.
以每"
字节
划分的字符串如下所示:
27.
28.
if
(string[i].matches(m))
29.
//将字符数组中的每一
个元素与表则表达式进行匹配,如果相同则返回true
30.
2;
//如果当前字符是汉字,计数器count就加2
31.
}
else
32.
1;
//如果当前字符不是汉字,计数器count就加1
33.
34.
(count
n)
//如果当前计数器count的值小于n,则输出当前字符
35.
System.out.print(string[i]);
36.
==
//如果当前计数器count的值等于n,则输出当前字符
37.
38.
39.
System.out.println();
//内循环结果,则需要换行,起到控制打印格式的作用
40.
41.
//如果当前计数器count的
值大于n,则计数器count清零,接着执行外部循环
42.
43.
44.
45.
46.}
程序的输出结果如图17.1所示。
Java基础编程试题
(2)
面试题2
怎样实现元素互换
从键盘上输入10个整数,并将其放入一个一维数组中,然后将其前5个元素与后5个元素对换,即:
第1个元素与第10个元素互换,第2个元素与第9个元素互换…第5个元素与第6个元素互换。
分别输出数组原来各元素的值和对换后各元素的值。
由于本题的要求是实现头尾元素互换,所以可以釆用取利用临时变量的方法来进行元素交换。
programe;
2.
3.import
java.io.BufferedReader;
4.import
java.io.IOException;
5.import
java.io.InputStreamReader;
7.public
HuHuanDemo
main(String
args[])
print();
int[]
write()
BufferedReader[]
buf
BufferedReader[10];
/*
申请缓冲数组
*/
开关量
和
中间量
array[]
int[10];
10;
i++)/*
赋值
buf[i]
BufferedReader(new
InputStreamReader(System.in));
给每个缓冲区定义
do/*
判断是否是空串,如是则重新输入
System.out.print("
请输入第"
(i
1)
个整数:
try
建立一个异常捕获
array[i]
Integer.parseInt
(buf[i].readLine());
执行串变整数
/*
*
Integer.parseInt(str)
-
str
转成
int型
buf[i].readLine()
-
从系统输入缓冲区读入字符流给
buf缓冲区并返回字符串
catch
(NumberFormatException
e)/*
捕获异常
数据输入
错误请重新输入"
处理异常
(IOException
e)
e.printStackTrace();
while
(n
0);
array;
print()
46.
ary
write();
47.
s;
48.
\n你输入的数组是:
49.
输出原数组
50.
51.
System.out.print(ary[i]
52.
53.
5;
对换
54.
55.
s
ary[i];
56.
ary[i]
ary[9
i];
57.
i]
58.
59.
60.
\n对换后的数组是:
61.
输出对换后数组
62.
63.
64.
65.
66.
67.
68.}
69.程序输出的结果如图17.2所示。
Java基础编程试题(3)
面试题3
怎样实现元素排序
(1)用Java实现一种排序。
(2)Java类实现序列化的方法是什么?
(3)在COLLECTION框架中,如果实现自然比较方法,则需要实现什么样的接口?
排序是程序员经常遇到的,也是基本的技巧之一,一般的排序方法有插入排序、冒泡排序、选择排序、Shell排序、快速排序、归并排序、堆排序、SortUtil等。
下面详细介绍3种排序方法。
1.冒泡排序(BubbleSort)
最简单的排序方法是冒泡排序法。
这种方法的基本思想是,将待排序的元素看作是竖着排列的"
气泡"
,较小的元素比较轻,从而要往上浮。
在冒泡排序算法中要对这个"
序列处理若干遍。
所谓一遍处理,就是自底向上检查一遍这个序列,并时刻注意两个相邻元素的顺序是否正确。
如果发现两个相邻元素的顺序不对,即"
轻"
的元素在下面,就交换它们的位置。
显然,处理一遍之后,"
最轻"
的元素就浮到了最高位置;
处理两遍之后,"
次轻"
的元素就浮到了次高位置。
在进行第二遍处理时,由于最高位置上的元素已是"
元素,所以不必检查。
一般地,第i遍处理时,不必检查第i高位置以上的元素,因为经过前面i-1遍的处理,它们已正确地排序。
2.选择排序(SelectionSort)
选择排序的基本思想是,对待排序的记录序列进行n-1遍的处理,第1遍处理是将L[1..n]中最小者与L[1]交换位置,第2遍处理是将L[2..n]中最小者与L[2]交换位置,……,第i遍处理是将L[i..n]中最小者与L[i]交换位置。
这样,经过i遍处理之后,前i个记录的位置就已经按从小到大的顺序排列好了。
当然,在实际操作时,也可以根据需要,通过从待排序的记录中选择最大者与其首记录交换位置,按从大到小的顺序进行排序处理。
3.插入排序(InsertionSort)
插入排序的基本思想是,经过i-1遍处理后,L[1..i-1]已排好序。
第i遍处理仅将L[i]插入L[1..i-1]的适当位置,使得L[1..i]还是排好序的序列。
要达到这个目的,可以用顺序比较的方法。
首先比较L[i]和L[i-1],如果L[i-1]≤L[i],则L[1..i]已排好序,第i遍处理就结束了;
否则交换L[i]与L[i-1]的位置,继续比较L[i-1]和L[i-2],直到找到某一个位置j(1≤j≤i-1),使得L[j]≤L[j+1]时为止。
简言之,插入排序就是每一步都将一个待排数据按其大小插入到已经排序的数据中的适当位置,直到全部插入完毕。
(1)具体代码实现如下:
java.util.*;
3.class
InsertionSort
ArrayList
list;
//
num指的是数据的个数,mod指的是可以
产生随机数的范围在1~mod之间
InsertionSort(int
num,
mod)
list
ArrayList(num);
Random
dom
Random();
排序之前的数组:
num;
list.add(new
Integer(Math.abs
(dom.nextInt())
%
mod
1));
list["
]="
list.get(i));
SortIt()
Integer
tempInt;
MaxSize
list.size();
tempInt
(Integer)
list.remove(i);
(tempInt.intValue()
>
((Integer)
list.get(MaxSize
1))
.intValue())
list.add(MaxSize,
tempInt);
MaxSize++;
j
MaxSize;
j++)
(((Integer)
list.get(j))
.intValue()
tempInt
list.add(j,
break;
排序之后的数组:
is
InsertionSort(10,
100);
is.SortIt();
44.}
程序的输出结果如图17.3所示。
Java基础编程试题(4)
面试题4
怎样实现Singleton模式编程
请编写一个Singleton模式的程序。
Singleton模式的主要作用是保证在Java应用程序中,一个类Class只有一个实例存在。
在很多操作中,比如建立目录数据库连接都需要这样的单线程操作。
使用Singleton的好处还在于可以节省内存,因为它限制了实例的个数,有利于Java垃圾回收。
一般Singleton模式通常的形式为:
定义一个类,它的构造函数为private的,它有一个static的private变量,在类初始化时实例化,通过一个public的getInstance方法获取对它的引用,继而调用其中的方法。
(两种实现方法,取一即可)
Singleton
private
Singleton()
注意这是private
只供内部调用
final
instance
Singleton();
这里提供了一个供外部访问本class的静态方法,可以直接访问
getInstance()
instance;
或者:
null;
synchronized
使用时生成实例,提高了效率!
(instance
null)
12.}
面试题5
哥德巴赫猜想的近似证明
哥德巴赫猜想是说任何一个大于2的偶数都能表示为两个素数之和。
请编写一个Java程序,验证1~100内哥德巴赫猜想的正确性,也就是近似证明哥德巴赫猜想。
可以应用枚举的方法列出1~100内的所有偶数。
然后逐一验证每个偶数是否满足哥德巴赫猜想的论证。
如果有一个不符合,就意味着哥德巴赫猜想不成立。
一个正偶数m可以表示成m=1+(m-1),m=2+(m-2),m=3+(m-3),……,m=m/2+m/2。
由于m/2的后半部分和前半部分的结果是一样的,只是加数顺序不同,所以可以忽略。
Guess
在1~100范围内,
现在开始证实哥德巴赫猜想:
(Testify_Guess(1,
100))
在
1~100范围内,
哥德巴赫猜想是正确的。
哥德巴赫猜想是错误的"
}