面试程序部分Word格式文档下载.docx
《面试程序部分Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《面试程序部分Word格式文档下载.docx(32页珍藏版)》请在冰点文库上搜索。
![面试程序部分Word格式文档下载.docx](https://file1.bingdoc.com/fileroot1/2023-4/28/41e8e19f-dff7-436a-ae89-60dae9a0fb38/41e8e19f-dff7-436a-ae89-60dae9a0fb381.gif)
voidshow(){
System.out.println("
ClassA:
a="
+a+"
\td="
+d);
}
classBextendsA{
floata=3.0f;
Stringd="
Javaprogram."
;
super.show();
ClassB:
(1)若在应用程序的main方法中有以下语句:
Aa=newA();
a.show();
则输出的结果如何?
(2)若在应用程序的main方法中定义类B的对象b:
Ab=newB();
b.show();
输出结果为:
1)ClassA:
a=1d=2.0;
2)ClassA:
a=1d=2.0
a=3.0d=Javaprogram。
49、指出下面程序的运行结果:
classA{
static{
System.out.print("
1"
);
publicA(){
2"
a"
publicB(){
b"
publicclassHello{
publicstaticvoidmain(String[]ars){
Aab=newB();
//执行到此处,结果:
1a2b
ab=newB();
1a2b2b
输出结果为1a2b2b;
类的static代码段,可以看作是类首次加载(虚拟机加
载)执行的代码,而对于类加载,首先要执行其基类的构造,再执行其本身的构造。
50、继承时候类的执行顺序问题,一般都是选择题,问你将会打印出什么?
父类:
packagetest;
publicclassFatherClass{
publicFatherClass(){
FatherClassCreate"
子类:
importtest.FatherClass;
publicclassChildClassextendsFatherClass{
publicChildClass(){
ChildClassCreate"
publicstaticvoidmain(String[]args){
FatherClassfc=newFatherClass();
ChildClasscc=newChildClass();
FatherClassCreate
ChildClassCreate
51、内部类的实现方式?
示例代码如下:
publicclassOuterClass{
privateclassInterClass{
publicInterClass(){
InterClassCreate"
publicOuterClass(){
InterClassic=newInterClass();
OuterClassCreate"
OuterClassoc=newOuterClass();
输出结果为:
InterClassCreate
OuterClassCreate
52、关于内部类:
privatedoubled1=1.0;
//insertcodehere
Youneedtoinsertaninnerclassdeclarationatline3,Whichtwo
innerclassdeclarationsarevalid?
(Choosetwo.)
A.classInnerOne{
publicstaticdoublemethoda(){returnd1;
B.publicclassInnerOne{
staticdoublemethoda(){returnd1;
C.privateclassInnerOne{
doublemethoda(){returnd1;
D.staticclassInnerOne{
protecteddoublemethoda(){returnd1;
E.abstractclassInnerOne{
publicabstractdoublemethoda();
答案为C、E;
说明如下:
1)静态内部类可以有静态成员,而非静态内部类则不能有静态成员;
故A、B
错;
2)静态内部类的非静态成员可以访问外部类的静态变量,而不可访问外部类
的非静态变量;
故D错;
3)非静态内部类的非静态成员可以访问外部类的非静态变量;
故C正确。
53、数据类型之间的转换:
1)如何将数值型字符转换为数字?
2)如何将数字转换为字符?
3)如何取小数点前两位并四舍五入?
1)调用数值类型相应包装类中的方法parse***(String)或valueOf(String)
即可返回相应基本类型或包装类型数值;
2)将数字与空字符串相加即可获得其所对应的字符串;
另外对于基本类型
数字还可调用String类中的valueOf(…)方法返回相应字符串,而对于包装类型
数字则可调用其toString()方法获得相应字符串;
3)可用该数字构造一java.math.BigDecimal对象,再利用其round()方法
进行四舍五入到保留小数点后两位,再将其转换为字符串截取最后两位。
54、字符串操作:
如何实现字符串的反转及替换?
可用字符串构造一StringBuffer对象,然后调用StringBuffer中的reverse
方法即可实现字符串的反转,调用replace方法即可实现字符串的替换。
55、编码转换:
怎样将GB2312编码的字符串转换为ISO-8859-1编码的字符串?
示例代码如下:
Strings1="
你好"
Strings2=newString(s1.getBytes("
GB2312"
),"
ISO-8859-1"
56、写一个函数,要求输入一个字符串和一个字符长度,对该字符串进行分
隔。
函数代码如下:
publicString[]split(Stringstr,intchars){
intn=(str.length()+chars-1)/chars;
Stringret[]=newString[n];
for(inti=0;
i<
n;
i++){
if(i<
n-1){
ret[i]=str.substring(i*chars,(i+1)*chars);
}else{
ret[i]=str.substring(i*chars);
returnret;
57、写一个函数,2个参数,1个字符串,1个字节数,返回截取的字符串,要
求字符串中的中文不能出现乱码:
如(“我ABC”,4)应该截为“我AB”,输入(“我
ABC汉DEF”,6)应该输出为“我ABC”而不是“我ABC+汉的半个”。
代码如下:
publicStringsubString(Stringstr,intsubBytes){
intbytes=0;
//用来存储字符串的总字节数
for(inti=0;
i<
str.length();
i++){
if(bytes==subBytes){
returnstr.substring(0,i);
charc=str.charAt(i);
if(c<
256){
bytes+=1;
//英文字符的字节数看作1
}else{
bytes+=2;
//中文字符的字节数看作2
if(bytes-subBytes==1){
returnstr;
58、日期和时间:
1)如何取得年月日、小时分秒?
2)如何取得从1970年到现在的毫秒数?
3)如何取得某个日期是当月的最后一天?
4)如何格式化日期?
1)创建java.util.Calendar实例(Calendar.getInstance()),调用其get()
方法传入不同的参数即可获得参数所对应的值,如:
calendar.get(Calendar.YEAR);
//获得年
2)以下方法均可获得该毫秒数:
Calendar.getInstance().getTimeInMillis();
System.currentTimeMillis();
3)示例代码如下:
Calendartime=Calendar.getInstance();
time.set(Calendar.DAY_OF_MONTH,
time.getActualMaximum(Calendar.DAY_OF_MONTH));
4)利用java.text.DataFormat类中的format()方法可将日期格式化。
59、Java编程,打印昨天的当前时刻。
publicclassYesterdayCurrent{
publicstaticvoidmain(String[]args){
Calendarcal=Calendar.getInstance();
cal.add(Calendar.DATE,-1);
System.out.println(cal.getTime());
\69、类ExampleA继承Exception,类ExampleB继承ExampleA;
有如下代码片断:
try{
thrownewExampleB(“b”);
}catch(ExampleAe){
System.out.printfln(“ExampleA”);
}catch(Exceptione){
System.out.printfln(“Exception”);
输出的内容应该是:
ExampleAB:
ExceptionC:
bD:
无
输出为A。
79、用程序给出随便大小的10个数,序号为1-10,按从小到大顺序输出,并输
出相应的序号。
importjava.util.ArrayList;
importjava.util.Collections;
importjava.util.Iterator;
importjava.util.List;
importjava.util.Random;
publicclassRandomSort{
publicstaticvoidprintRandomBySort(){
Randomrandom=newRandom();
//创建随机数生成器
Listlist=newArrayList();
//生成10个随机数,并放在集合list中
10;
list.add(random.nextInt(1000));
Collections.sort(list);
//对集合中的元素进行排序
Iteratorit=list.iterator();
intcount=0;
while(it.hasNext()){//顺序输出排序后集合中的元素
System.out.println(++count+"
:
"
+it.next());
printRandomBySort();
80、用JAVA实现一种排序,JAVA类实现序列化的方法?
在COLLECTION框架中,
实现比较要实现什么样的接口?
用插入法进行排序代码如下:
importjava.util.*;
classInsertSort{
ArrayListal;
publicInsertSort(intnum,intmod){
al=newArrayList(num);
Randomrand=newRandom();
TheArrayListSortBefore:
"
for(inti=0;
i<
num;
i++){
al.add(newInteger(Math.abs(rand.nextInt())%mod+
1));
al["
+i+"
]="
+al.get(i));
publicvoidSortIt(){
tempInt;
intMaxSize=1;
for(inti=1;
al.size();
i++){
tempInt=(Integer)al.remove(i);
if(tempInt.intValue()>
=
((Integer)al.get(MaxSize-1)).intValue()){
al.add(MaxSize,tempInt);
MaxSize++;
System.out.println(al.toString());
for(intj=0;
j<
MaxSize;
j++){
if(((Integer)al.get(j)).intValue()
>
=tempInt.intValue()){
al.add(j,tempInt);
break;
TheArrayListSortAfter:
InsertSortis=newInsertSort(10,100);
is.SortIt();
JAVA类实现序例化的方法是实现java.io.Serializable接口;
Collection框架中实现比较要实现Comparable接口和Comparator接口。
90、设计4个线程,其中两个线程每次对j增加1,另两个线程对j每次减少1;
写出程序。
【中等难度】
以下程序使用内部类实现线程,对j增减的时候没有考虑顺序问题:
publicclassTestThread{
privateintj;
publicTestThread(intj){this.j=j;
privatesynchronizedvoidinc(){
j++;
System.out.println(j+"
--Inc--"
+
Thread.currentThread().getName());
privatesynchronizedvoiddec(){
j--;
--Dec--"
publicvoidrun(){
(newDec()).start();
newThread(newInc()).start();
classDecextendsThread{
100;
dec();
classIncimplementsRunnable{
inc();
(newTestThread(5)).run();
94、写一个方法,输入一个文件名和一个字符串,统计这个字符串在这个文件中出
现的次数。
publicintcountWords(Stringfile,Stringfind)throwsException
{
Readerin=newFileReader(file);
intc;
while((c=in.read())!
=-1){
while(c==find.charAt(0)){
for(inti=1;
find.length();
c=in.read();
if(c!
=find.charAt(i))break;
if(i==find.length()-1)count++;
returncount;
95、Java的通信编程,编程题(或问答),用JAVASOCKET编程,读服务器几个
字符,再写入本地显示?
Server端程序:
import.*;
importjava.io.*;
publicclassServer{
privateServerSocketss;
privateSocketsocket;
privateBufferedReaderin;
privatePrintWriterout;
publicServer(){
try{
ss=newServerSocket(10000);
while(true){
socket=ss.accept();
StringRemoteIP=
socket.getInetAddress().getHostAddress();
StringRemotePort="
+socket.getLocalPort();
Aclientcomein!
IP:
+RemoteIP+RemotePort);
in=newBufferedReader(new
InputStreamReader(socket.getInputStream()));
Stringline=in.readLine();
Cleintsendis:
+line);
out=
newPrintWriter(socket.getOutputStream(),true);
out.println("
YourMessageReceived!
out.close();
in.close();
socket.close();
}catch(IOExceptione){
wrong"
newServer();
Client端程序:
publicclassClient{
Socketsocket;
BufferedReaderin;
PrintWriterout;
publicClient(){
TrytoConnectto
127.0.0.1:
10000"
socket=newSocket("
127.0.0.1"
10000);
TheServerConnected!
PleaseentersomeCharacter:
BufferedReaderline=