Java经典笔试题和面试题答案

更新时间:2018-11-22 15:53作者:王华老师

      这些题目对我的笔试帮助很大,有需要的朋友都可以来看看,在笔试中能遇到的题目基本上下面都会出现,虽然形式不同,当考察的基本的知识点还是相同的。

      Simulated Test of SCJP for JAVA2 PlatFORM (only for training))

      网上可以找到很多,因为我是转载ICXO网站的,但是上面的有很多可能有由于页面原因,每个题目我都做了测试,出现错误的我就稍微做了下修正,希望和大家一起研究和探讨,在分析中肯定有不足和谬误的地方还请大虾们能够给予及时的纠正,特此感谢。

      1.

      public class ReturnIt{

      returnType methodA(byte x, double y){ //line 2

      return (short)x/y*2;

      }

      }

      what is valid returnType for methodA in line 2?

      答案:返回double类型,因为(short)x将byte类型强制转换为short类型,与double类型运算,将会提升为double类型.

      2.

      1) class Super{

      2) public float getNum(){return 3.0f;}

      3) }

      4)

      5) public class Sub extends Super{

      6)

      7) }

      which method, placed at line 6, will cause a compiler error?

      A. public float getNum(){return 4.0f;}

      B. public void getNum(){}

      C. public void getNum(double d){}

      D. public double getNum(float d){return 4.0d;}

      Answer:B

      A属于方法的重写(重写只存在于继承关系中),因为修饰符和参数列表都一样.B出现编译错误,如下:

      Sub.java:6: Sub 中的 getNum() 无法覆盖 Super 中的 getNum();正在尝试使用不

      兼容的返回类型

      找到: void

      需要: float

      public void getNum(){}

      ^

      1 错误

      B既不是重写也不是重载,重写需要一样的返回值类型和参数列表,访问修饰符的限制一定要大于被重写方法的访问修饰符(public>protected>default>private);

      重载:必须具有不同的参数列表;

      可以有不同的返回类型,只要参数列表不同就可以了;

      可以有不同的访问修饰符;

      把其看做是重载,那么在java中是不能以返回值来区分重载方法的,所以b不对.

      3.

      public class IfTest{

      public static void main(String args[]){

      int x=3;

      int y=1;

      if(x=y)

      System.out.println("Not equal");

      else

      System.out.println("Equal");

      }

      }

      what is the result?

      Answer:compile error 错误在与if(x=y) 中,应该是x==y; =是赋值符号,==是比较操作符

      4. public class Foo{

      public static void main(String args[]){

      try{return;}

      finally{ System.out.println("Finally");}

      }

      }

      what is the result?

      A. print out nothing

      B. print out "Finally"

      C. compile error

      Answer:B java的finally块会在return之前执行,无论是否抛出异常且一定执行.

      5.public class Test{

      public static String output="";

      public static void foo(int i){

      try {

      if(i==1){

      throw new Exception();

      }

      output +="1";

      }

      catch(Exception e){

      output+="2";

      return;

      }

      finally{

      output+="3";

      }

      output+="4";

      }

      public static void main(String args[]){

      foo(0);

      foo(1);

      24)

      }

      }

      what is the value of output at line 24? Answer:13423 如果你想出的答案是134234,那么说明对return的理解有了混淆,return是强制函数返回,本题就是针对foo(),那么当执行到return的话,output+="4"; 就不再执行拉,这个函数就算结束拉.

      6. public class IfElse{

      public static void main(String args[]){

      if(odd(5))

      System.out.println("odd");

      else

      System.out.println("even");

      }

      public static int odd(int x){return x%2;}

      }

      what is output?

      Answer:Compile Error

      7. class ExceptionTest{

      public static void main(String args[]){

      try{

      methodA();

      }

      catch(IOException e){

      System.out.println("caught IOException");

      }

      catch(Exception e){

      System.out.println("caught Exception");

      }

      }

      }

      If methodA() throws a IOException, what is the result? (其实还应该加上:import java.io.*;)

      Answer:caught IOException 异常的匹配问题,如果2个catch语句换个位置,那就会报错,catch只能是越来越大,意思就是说:catch的从上到下的顺序应该是:孙子异常->孩子异常->父亲异常->老祖先异常.这么个顺序.

      8. int i=1,j=10;

      do{

      if(i++>--j) continue;

      }while(i<5); (注意不要丢了这个分号呦)

      After Execution, what are the value for i and j?

      A. i=6 j=5

      B. i=5 j=5

      C. i=6 j=4

      D. i=5 j=6

      E. i=6 j=6

      Answer:D

      9. 1)public class X{

      2) public Object m(){

      3) Object o=new Float(3.14F);

      4) Object[] oa=new Object[1];

      5) oa[0]=o;

      6) o=null;

      7) oa[0]=null;

      8) System.out.println(oa[0]);

      9) }

      10) }

      which line is the earliest point the object a refered is definitely elibile

      to be garbage collectioned?

      A.After line 4 B. After line 5 C.After line 6

      D.After line 7 E.After line 9(that is,as the method returns)

      Answer:D

      如果 6) o=null 变成 o=9f ,并且把7)去掉,那么8)将会输出什么呢?

      10. 1) interface Foo{

      2) int k=0;

      3) }

      4) public class Test implements Foo{

      5) public static void main(String args[]){

      6) int i;

      7) Test test = new Test();

      8) i = test.k;

      9) i = Test.k;

      10) i = Foo.k;

      11) }

      12) }

      what is the result? Answer:compile successed and i=0 接口中的int k=0虽然没有访问修饰符,但在接口中默认是static和final的

      11. what is reserved words in java?

      A. run

      B. default

      C. implement

      D. import

      Answer:B,D

      12. public class Test{

      public static void main(String[] args){

      String foo=args[1];

      Sring bar=args[2];

      String baz=args[3];

      }

      }

      java Test Red Green Blue

      what is the value of baz?

      A. baz has value of ""

      B. baz has value of null

      C. baz has value of Red

      D. baz has value of Blue

      E. baz has value of Green

      F. the code does not compile

      G. the program throw an exception

      Answer:G

      分析:感觉原应该多一些语句吧,至少应该有红绿蓝的赋值语句之类的,才能叫java Test Red Green Blue 才能有后面的选项,所以现在感觉很奇怪,不过就这个样子吧.这个问题在于:数组参数的理解,编译程序没有问题,但是运行这个程序就会出现问题,因为参数args没有给他分配空间那么他的长度应该是0,下面却用拉args[1]........等等的语句,那么定会出现越界错误.

      错误如下:Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 1

      at Test.main(Test.java:4)

      13. int index=1;

      int foo[]=new int[3];

      int bar=foo[index];

      int baz=bar+index;

      what is the result?

      A. baz has a value of 0

      B. baz has value of 1

      C. baz has value of 2

      D. an exception is thrown

      E. the code will not compile

      Answer:B

      分析:《thinking in java》中的原话:若类的某个成员是基本数据类型,即使没有进行初始化,java也会确保它获得一个默认值,如下表所示:

    基本类型默认值
    booleanfalse
    char'/u0000'(null)
    byte(byte)0
    short(short)0
    int0
    long0L
    float0.0f
    double0.0d

      千万要小心:当变量作为类的成员使用时,java才确保给定其默认值,。。。。。(后面还有很多话,也很重要,大家一定要看完成,要不然还是不清楚)

      14. which three are valid declaraction of a float?

      A. float foo=-1;

      B. float foo=1.0;

      C. float foo=42e1;

      D. float foo=2.02f;

      E. float foo=3.03d;

      F. float foo=0x0123;

      Answer:A,D,F 分析:B错误,因为1.0在java中是double类型的,C,E错误同样道理,都是double类型的

      15. public class Foo{

      public static void main(String args[]){

      String s;

      System.out.println("s="+s);

      }

      }

      what is the result?

      Answer:compile error 分析:需要对s进行初始化,和13题是不是矛盾呢:不矛盾,因为它不是基本类型,也不是类的成员,所以不能套用上述的确保初始化的方法。

    为您推荐

    2019年两会《政府工作报告》养老金新政策,要提高养老保障水平

    《关于2018年中央和地方预算执行情况与2019年中央和地方预算草案的报告》要求,提高养老保障水平。从2019年1月1日起,按平均约5%的幅度提高企业和机关事业单位退休人员基本养老金标准。

    2019-06-13 04:57

    如何在另类面试问题中胜出

    在面试中,有些考官会先提一个不甚友好的问题,或者劈头浇你一盆冷水,让你在委屈和激愤中露出本色。在他看来,击溃你的心理防线,才能筛选出有心理承受能力的智者,找到能面对压力的新鲜血液。要想在压力面试中胜出,只能学会绕开陷阱,奋战到底。

    2019-06-08 03:00

    面试紧张时应该怎么办

    面试是进入公职机关的最后一道主要的门槛,因此可以说每一位进入面试的人,心里就像绷住一根弦一样,也就是说每位考生,都会以高度的精神状态去抓住这次进入角色的机会。出现紧张、焦虑的心情也是不可避免的,只有认识了解,才能完全的克服。

    2019-06-08 02:58

    面对变故 学会自我解嘲

    面对降级、减薪、甚至解雇、离婚、丧子等变故,许多人反应过度,很长时间缓不过劲儿来。而有的人却能很快度过,重返正常的生活轨道。其决定因素是一种特殊的心理素质:心理复原力。有了它,人们不怕挫折;而缺少它,会特别害怕受伤害,不敢付出行动。

    2019-06-06 03:12

    办公室里该与不该谈论的话题

    办公室是一个充满原则、纪律,讲求策略的场合,更是一个充满利益冲突的是非之所。既如此,办公室里谈个人私事是否妥当呢?网上调查显示,尽管九成以上的人认为“办公室里隐私不宜说”,但是她/他们又同时承认有在办公室里谈论涉及私人感情、家庭关系、同事喜恶和上下级关系等隐私性内容的行为。

    2019-06-06 03:10

    面试自我介绍的几大原则

    应聘到外企或其他用人单位时,求职者往往最先被问及的问题就是“请先介绍介绍你自己”。这个问题看似简单,但求职者一定要慎重对待,它是你突出优势和特长,展现综合素质的好机会。回答得好,会给人留下良好的第一印象。

    2019-06-01 03:19

    外企面试必须要注意的五“必要”

    到外企面试前,仅仅准备好一份简历是不够的,还要提前做好面试前的“功课”,这样面试通过的几率就会大大增加。

    2019-06-01 03:16

    加载中...