面试程序部分.docx
《面试程序部分.docx》由会员分享,可在线阅读,更多相关《面试程序部分.docx(32页珍藏版)》请在冰豆网上搜索。
面试程序部分
4、float型floatf=3.4是否正确?
【基础】
答:
不正确;精度不准确,应该用强制类型转换,如下所示:
floatf=(float)3.4。
5、语句floatf=1.3;编译能否通过?
【基础】
答:
不能;应该用强制类型转换,如下所示:
floatf=(float)1.3;。
6、shorts1=1;s1=s1+1;有什么错?
shorts1=1;s1+=1;有什么错?
【基础】
答:
shorts1=1;s1=s1+1;s1+1运算结果是int型,需要强制转换类型;
shorts1=1;s1+=1;可以正确编译,自12、Math.round(11.5)等于多少?
Math.round(-11.5)等于多少?
【基础】
答:
Math.round(11.5)==12Math.round(-11.5)==-11round方法返回与参数
最接近的长整数,参数加1/2后求其floor。
动类型提升。
14、编程题:
用最有效率的方法算出2乘以8等於几?
【基础】
答:
2<<3。
20、以下二条语句返回值为true的有:
A:
“beijing”==“beijing”;
B:
“beijing”.equalsIgnoreCase(newString(“beijing”));【基础】
答:
A和B。
26、定义类A和类B如下:
【基础】
classA{
inta=1;
doubled=2.0;
voidshow(){
System.out.println("ClassA:
a="+a+"\td="+d);
}
}
classBextendsA{
floata=3.0f;
Stringd="Javaprogram.";
voidshow(){
super.show();
System.out.println("ClassB:
a="+a+"\td="+d);
}
}
(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
ClassB:
a=3.0d=Javaprogram。
49、指出下面程序的运行结果:
【基础】
classA{
static{
System.out.print("1");
}
publicA(){
System.out.print("2");
}
}
classBextendsA{
static{
System.out.print("a");
}
publicB(){
System.out.print("b");
}
}
publicclassHello{
publicstaticvoidmain(String[]ars){
Aab=newB();//执行到此处,结果:
1a2b
ab=newB();//执行到此处,结果:
1a2b2b
}
}
答:
输出结果为1a2b2b;类的static代码段,可以看作是类首次加载(虚拟机加
载)执行的代码,而对于类加载,首先要执行其基类的构造,再执行其本身的构造。
50、继承时候类的执行顺序问题,一般都是选择题,问你将会打印出什么?
【基础】
父类:
packagetest;
publicclassFatherClass{
publicFatherClass(){
System.out.println("FatherClassCreate");
}
}
子类:
packagetest;
importtest.FatherClass;
publicclassChildClassextendsFatherClass{
publicChildClass(){
System.out.println("ChildClassCreate");
}
publicstaticvoidmain(String[]args){
FatherClassfc=newFatherClass();
ChildClasscc=newChildClass();
}
}
答:
输出结果为:
FatherClassCreate
FatherClassCreate
ChildClassCreate
51、内部类的实现方式?
【基础】
答:
示例代码如下:
packagetest;
publicclassOuterClass{
privateclassInterClass{
publicInterClass(){
System.out.println("InterClassCreate");
}
}
publicOuterClass(){
InterClassic=newInterClass();
System.out.println("OuterClassCreate");
}
publicstaticvoidmain(String[]args){
OuterClassoc=newOuterClass();
}
}
输出结果为:
InterClassCreate
OuterClassCreate
52、关于内部类:
【基础】
publicclassOuterClass{
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;iif(iret[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;iif(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.substring(0,i);
}
}
}
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”);
}
输出的内容应该是:
A:
ExampleAB:
ExceptionC:
bD:
无
答:
输出为A。
79、用程序给出随便大小的10个数,序号为1-10,按从小到大顺序输出,并输
出相应的序号。
【基础】
答:
代码如下:
packagetest;
importjava.util.ArrayList;
importjava.util.Collections;
importjava.util.Iterator;
importjava.util.List;
importjava.util.Random;
publicclassRandomSort{
publicstaticvoidprintRandomBySort(){
Randomrandom=newRandom();//创建随机数生成器
Listlist=newArrayList();
//生成10个随机数,并放在集合list中
for(inti=0;i<10;i++){
list.add(random.nextInt(1000));
}
Collections.sort(list);//对集合中的元素进行排序
Iteratorit=list.iterator();
intcount=0;
while(it.hasNext()){//顺序输出排序后集合中的元素
System.out.println(++count+":
"+it.next());
}
}
publicstaticvoidmain(String[]args){
printRandomBySort();
}
}
80、用JAVA实现一种排序,JAVA类实现序列化的方法?
在COLLECTION框架中,
实现比较要实现什么样的接口?
【基础】
答:
用插入法进行排序代码如下:
packagetest;
importjava.util.*;
classInsertSort{
ArrayListal;
publicInsertSort(intnum,intmod){
al=newArrayList(num);
Randomrand=newRandom();
System.out.println("TheArrayListSortBefore:
");
for(inti=0;ial.add(newInteger(Math.abs(rand.nextInt())%mod+
1));
System.out.println("al["+i+"]="+al.get(i));
}
}
publicvoidSortIt(){
tempInt;
intMaxSize=1;
for(inti=1;itempInt=(Integer)al.remove(i);
if(tempInt.intValue()>=
((Integer)al.get(MaxSize-1)).intValue()){
al.add(MaxSize,tempInt);
MaxSize++;
System.out.println(al.toString());
}else{
for(intj=0;jif(((Integer)al.get(j)).intValue()
>=tempInt.intValue()){
al.add(j,tempInt);
MaxSize++;
System.out.println(al.toString());
break;
}
}
}
}
System.out.println("TheArrayListSortAfter:
");
for(inti=0;iSystem.out.println("al["+i+"]="+al.get(i));
}
}
publicstaticvoidmain(String[]args){
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--;
System.out.println(j+"--Dec--"+
Thread.currentThread().getName());
}
publicvoidrun(){
(newDec()).start();
newThread(newInc()).start();
(newDec()).start();
newThread(newInc()).start();
}
classDecextendsThread{
publicvoidrun(){
for(inti=0;i<100;i++){
dec();
}
}
}
classIncimplementsRunnable{
publicvoidrun(){
for(inti=0;i<100;i++){
inc();
}
}
}
publicstaticvoidmain(String[]args){
(newTestThread(5)).run();
}
}
94、写一个方法,输入一个文件名和一个字符串,统计这个字符串在这个文件中出
现的次数。
【基础】
答:
代码如下:
publicintcountWords(Stringfile,Stringfind)throwsException
{
intcount=0;
Readerin=newFileReader(file);
intc;
while((c=in.read())!
=-1){
while(c==find.charAt(0)){
for(inti=1;ic=in.read();
if(c!
=find.charAt(i))break;
if(i==find.length()-1)count++;
}
}
}
returncount;
}
95、Java的通信编程,编程题(或问答),用JAVASOCKET编程,读服务器几个
字符,再写入本地显示?
【基础】
答:
Server端程序:
packagetest;
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();
System.out.println("Aclientcomein!
IP:
"
+RemoteIP+RemotePort);
in=newBufferedReader(new
InputStreamReader(socket.getInputStream()));
Stringline=in.readLine();
System.out.println("Cleintsendis:
"+line);
out=
newPrintWriter(socket.getOutputStream(),true);
out.println("YourMessageReceived!
");
out.close();
in.close();
socket.close();
}
}catch(IOExceptione){
out.println("wrong");
}
}
publicstaticvoidmain(String[]args){
newServer();
}
}
Client端程序:
packagetest;
importjava.io.*;
import.*;
publicclassClient{
Socketsocket;
BufferedReaderin;
PrintWriterout;
publicClient(){
try{
System.out.println("TrytoConnectto
127.0.0.1:
10000");
socket=newSocket("127.0.0.1",10000);
System.out.println("TheServerConnected!
");
System.out.println("PleaseentersomeCharacter:
");
BufferedReaderline=