Java经典面试题大全带答案Word格式文档下载.docx

上传人:b****4 文档编号:7797294 上传时间:2023-05-09 格式:DOCX 页数:11 大小:18.46KB
下载 相关 举报
Java经典面试题大全带答案Word格式文档下载.docx_第1页
第1页 / 共11页
Java经典面试题大全带答案Word格式文档下载.docx_第2页
第2页 / 共11页
Java经典面试题大全带答案Word格式文档下载.docx_第3页
第3页 / 共11页
Java经典面试题大全带答案Word格式文档下载.docx_第4页
第4页 / 共11页
Java经典面试题大全带答案Word格式文档下载.docx_第5页
第5页 / 共11页
Java经典面试题大全带答案Word格式文档下载.docx_第6页
第6页 / 共11页
Java经典面试题大全带答案Word格式文档下载.docx_第7页
第7页 / 共11页
Java经典面试题大全带答案Word格式文档下载.docx_第8页
第8页 / 共11页
Java经典面试题大全带答案Word格式文档下载.docx_第9页
第9页 / 共11页
Java经典面试题大全带答案Word格式文档下载.docx_第10页
第10页 / 共11页
Java经典面试题大全带答案Word格式文档下载.docx_第11页
第11页 / 共11页
亲,该文档总共11页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

Java经典面试题大全带答案Word格式文档下载.docx

《Java经典面试题大全带答案Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《Java经典面试题大全带答案Word格式文档下载.docx(11页珍藏版)》请在冰点文库上搜索。

Java经典面试题大全带答案Word格式文档下载.docx

  6.执行如下程序代码

  a=0;

c=0;

  do{

  --c;

  a=a-1;

  }while(a>

0);

  后,C的值是()

  A.0

  B.1

  C.-1

  D.死循环

  7.下列哪一种叙述是正确的()

  A.abstract修饰符可修饰字段、方法和类

  B.抽象方法的body部分必须用一对大括号{}包住

  C.声明抽象方法,大括号可有可无

  D.声明抽象方法不可写出大括号

D

  8.下列语句正确的是()

  A.形式参数可被视为localvariable

  B.形式参数可被字段修饰符修饰

  C.形式参数为方法被调用时,真正被传递的参数

  D.形式参数不可以是对象

  9.下列哪种说法是正确的()

  A.实例方法可直接调用超类的实例方法

  B.实例方法可直接调用超类的类方法

  C.实例方法可直接调用其他类的实例方法

  D.实例方法可直接调用本类的类方法

二、多项选择题

  1.Java程序的种类有()

  A.类(Class)

  B.Applet

  C.Application

  D.Servlet

  2.下列说法正确的有()

  A.环境变量可在编译sourcecode时指定

  B.在编译程序时,所能指定的环境变量不包括classpath

  C.javac一次可同时编译数个Java源文件

  D.javac.exe能指定编译结果要置于哪个目录(directory)

BCD

  3.下列标识符不合法的有()

  A.new

  B.$Usdollars

  C.1234

  D.car.taxi

ACD

  4.下列说法错误的有()

  A.数组是一种对象

  B.数组属于一种原生类

  C.intnumber=[]={31,23,33,43,35,63}

  D.数组的大小可以任意改变

  5.不能用来修饰interface的有()

  A.private

  B.public

  C.protected

  D.static

  6.下列正确的有()

  A.callbyvalue不会改变实际参数的数值

  B.callbyreference能改变实际参数的参考地址

  C.callbyreference不能改变实际参数的参考地址

  D.callbyreference能改变实际参数的内容

  7.下列说法错误的有()

  A.在类方法中可用this来调用本类的类方法

  B.在类方法中调用本类的类方法时可直接调用

  C.在类方法中只能调用本类中的类方法

  D.在类方法中绝对不能调用实例方法

  8.下列说法错误的有()

  A.Java面向对象语言容许单独的过程与函数存在

  B.Java面向对象语言容许单独的方法存在

  C.Java语言中的方法属于类中的成员(member)

  D.Java语言中的方法必定隶属于某一类(对象),调用方法与过程或函数相同

ABC

  9.下列说法错误的有()

  A.能被java.exe成功运行的javaclass文件必须有main()方法

  B.J2SDK就是JavaAPI

  C.Appletviewer.exe可利用jar选项运行.jar文件

  D.能被Appletviewer成功运行的javaclass文件必须有main()方法

三、判断题

  1.Java程序中的起始类名称必须与存放该类的文件名相同。

()

正确

  2.Unicode是用16位来表示一个字的。

  3.原生类中的数据类型均可任意转换。

错误

  1.分别写出BOOL,int,float,指针类型的变量a与“零”的比较语句。

  BOOL:

if(!

a)orif(a)

  int:

if(a==0)

  float:

constEXPRESSIONEXP=0.000001

  if(a<

EXP&

a>

-EXP)

  pointer:

if(a!

=NULL)orif(a==NULL)

  2.请说出const与#define相比,有何优点?

1)const常量有数据类型,而宏常量没有数据类型。

编译器可以对前者进行类型安全检查。

而对后者只进行字符替换,没有类型安全检查,并且在字符替换可能会产生意料不到的错误。

  2)有些集成化的调试工具可以对const常量进行调试,但是不能对宏常量进行调试。

  3.简述数组与指针的区别?

  数组要么在静态存储区被创建(如全局数组),要么在栈上被创建。

指针可以随时指向任意类型的内存块。

  

(1)修改内容上的差别

  chara[]=“hello”;

  a[0]=‘X’;

  char*p=“world”;

//注意p指向常量字符串

  p[0]=‘X’;

//编译器不能发现该错误,运行时错误

  

(2)用运算符sizeof可以计算出数组的容量(字节数)。

sizeof(p),p为指针得到的是一个指针变量的字节数,而不是p所指的内存容量。

C++/C语言没有办法知道指针所指的内存容量,除非在申请内存时记住它。

注意当数组作为函数的参数进行传递时,该数组自动退化为同类型的指针。

  chara[]="

helloworld"

;

  char*p=a;

  cout<

<

sizeof(a)<

endl;

//12字节

sizeof(p)<

//4字节

  计算数组和指针的内存容量

  voidFunc(chara[100])

  {

//4字节而不是100字节

  }

  4.类成员函数的重载、覆盖和隐藏区别?

  a.成员函数被重载的特征:

  

(1)相同的范围(在同一个类中);

  

(2)函数名字相同;

  (3)参数不同;

  (4)virtual关键字可有可无。

  b.覆盖是指派生类函数覆盖基类函数,特征是:

  

(1)不同的范围(分别位于派生类与基类);

  (3)参数相同;

  (4)基类函数必须有virtual关键字。

  c.“隐藏”是指派生类的函数屏蔽了与其同名的基类函数,规则如下:

  

(1)如果派生类的函数与基类的函数同名,但是参数不同。

此时,不论有无virtual关键字,基类的函数将被隐藏(注意别与重载混淆)。

  

(2)如果派生类的函数与基类的函数同名,并且参数也相同,但是基类函数没有virtual关键字。

此时,基类的函数被隐藏(注意别与覆盖混淆)

  5.Therearetwointvariables:

aandb,don’tuse“if”,“?

:

”,“switch”orotherjudgementstatements,findoutthebiggestoneofthetwonumbers.

((a+b)+abs(a-b))/2

6.如何打印出当前源文件的文件名以及源文件的当前行号?

  cout<

__FILE__;

__LINE__;

  __FILE__和__LINE__是系统预定义宏,这种宏并不是在某个文件中定义的,而是由编译器定义的。

  7.main主函数执行完毕后,是否可能会再执行一段代码,给出说明?

可以,可以用_onexit注册一个函数,它会在main之后执行intfn1(void),fn2(void),fn3(void),fn4(void);

  voidmain(void)

  Stringstr("

zhanglin"

);

  _onexit(fn1);

  _onexit(fn2);

  _onexit(fn3);

  _onexit(fn4);

  printf("

Thisisexecutedfirst.\n"

);

  intfn1()

next.\n"

  return0;

  intfn2()

executed"

  intfn3()

is"

  intfn4()

This"

  The_onexitfunctionispassedtheaddressofafunction(func)tobecalledwhentheprogramterminatesnormally.Successivecallsto_onexitcreatearegisteroffunctionsthatareexecutedinLIFO(last-in-first-out)order.Thefunctionspassedto_onexitcannottakeparameters.

  8.如何判断一段程序是由C编译程序还是由C++编译程序编译的?

  #ifdef__cplusplus

"

c++"

  #else

c"

  #endif

  9.文件中有一组整数,要求排序后输出到另一个文件中

  #include

  usingnamespacestd;

  voidOrder(vector&

data)//bubblesort

  intcount=data.size();

  inttag=false;

//设置是否需要继续冒泡的标志位

  for(inti=0;

i<

count;

i++)

  for(intj=0;

j<

count-i-1;

j++)

  if(data[j]>

data[j+1])

  tag=true;

  inttemp=data[j];

  data[j]=data[j+1];

  data[j+1]=temp;

  if(!

tag)

  break;

  vectordata;

  ifstreamin("

c:

\\data.txt"

in)

fileerror!

  exit

(1);

  inttemp;

  while(!

in.eof())

  in>

temp;

  data.push_back(temp);

  in.close();

//关闭输入文件流

  Order(data);

  ofstreamout("

\\result.txt"

out)

fileerror!

  for(i=0;

data.size();

  out<

DATA[I]<

?

  10.链表题:

一个链表的结点结构

  structNode

  intdata;

  Node*next;

  };

  typedefstructNodeNode;

  

(1)已知链表的头结点head,写一个函数把这个链表逆序(Intel)

  Node*ReverseList(Node*head)//链表逆序

  if(head==NULL||head->

next==NULL)

  returnhead;

  Node*p1=head;

  Node*p2=p1->

next;

  Node*p3=p2->

  p1->

next=NULL;

  while(p3!

=NULL)

  p2->

next=p1;

  p1=p2;

  p2=p3;

  p3=p3->

  head=p2;

  returnhead;

2)已知两个链表head1和head2各自有序,请把它们合并成一个链表依然有序。

(保留所有结点,即便大小相同)

  Node*Merge(Node*head1,Node*head2)

  if(head1==NULL)

  returnhead2;

  if(head2==NULL)

  returnhead1;

  Node*head=NULL;

  Node*p1=NULL;

  Node*p2=NULL;

  if(head1->

data<

head2->

data)

  head=head1;

  p1=head1->

next;

  p2=head2;

  else

  head=head2;

  p2=head2->

  p1=head1;

  Node*pcurrent=head;

  while(p1!

=NULL&

p2!

=NULL)

  if(p1->

=p2->

  pcurrent->

next=p1;

  pcurrent=p1;

  p1=p1->

next=p2;

  pcurrent=p2;

  p2=p2->

  if(p1!

  if(p2!

  (3)已知两个链表head1和head2各自有序,请把它们合并成一个链表依然有序,这次要求用递归方法进行。

(Autodesk)

  Node*MergeRecursive(Node*head1,Node*head2)

  if(head1==NULL)

  returnhead2;

  Node*head=NULL;

  head->

next=MergeRecursive(head1->

next,head2);

next=MergeRecursive(head1,head2->

next);

.

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 高等教育 > 其它

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2