牛客网Java面试题(二)

将以下哪种方法插入行3是不合法的。

类Test1定义如下:

public class Test1{//1
    public float aMethod(float a,float b){}//2 
    //3
}//4
  1. public int aMethod(int a,int b){}
  2. private float aMethod(int a,int b,int c){}
  3. public float aMethod(float a,float b){}
  4. public float aMethod(float a,float b,float c){}

正确答案C

解析:

方法重载的规范

  1. 方法名必须要相同.
  2. 方法的参数列表一定要不同,以此区分不同的方法体
  3. 放的返回类型,修饰符可以相同,也可以不同

下面代码的输出是?

class Foo {
    final int i;
    int j;
    public void doSomething() {
        System.out.println(++j + i);
    }
}
  1. 0
  2. 1
  3. 2
  4. 不能执行,因为编译有错

正确答案:D

解析:

在Java中final类型的变量必须被初始化,否则无法完成编译

String str1 = “abc”,“abc”分配在内存哪个区域?

  1. 字符串常量区
  2. 寄存器

正确答案:C

解析:

使用new关键字创建的对象存在堆区

函数中的临时变量存在栈区

Java中的字符串存在字符串区

关于异常的编程,以下描述错误的是:( )

  1. 在有除法存在的代码处,抛不抛出异常均可
  2. int i=Integer.parseInt(”123a”);将产生NumberFormatException
  3. int a[]=null; a[0]=1; 将产生ArraylndexOutOfBoundsException
  4. 输入输出流编程中,读和写时都必须抛出IOException

正确答案:C

解析:

  1. 除数为0等算术异常(ArithmeticException)属于运行异常(RuntimeException)的子类.而运行异常是系统运行时由系统自动抛出的,所以不需要throw语句主动抛出.
  2. 正确
  3. 因为数组在初始化的时候分配的空间为null,所以不能给数组添加值
  4. 正确

下列叙述中,错误的是( )

  1. File类能够存储文件属性
  2. File类能够读写文件
  3. File类能够建立文件
  4. File类能够获取文件目录信息

正确答案:B

解析:

读写文件用的是InputStreamOutputStream,File类只是用来操作文件本身.

以下代码片段的结果是什么?

int i = 5;
int j = 10;
System.out.println(i + ~j);
  1. Compilation error because”~”doesn’t operate on integers
  2. -5
  3. -6
  4. 15

正确答案:C

解析:

Java语言是支持补码和反码的,这里使用补码公式-n=~n+1推出~n=-n-1,所以-10-1=-11,得到~j的值为-11,最后5+(-11)=-6

阅读如下代码。 请问,对语句行 test.hello(). 描述正确的有()

package NowCoder;
class Test {
    public static void hello() {
        System.out.println("hello");
    }
}
public class MyApplication {
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Test test=null;
        test.hello();
    }
}
  1. 能编译通过,并正确运行
  2. 因为使用了未初始化的变量,所以不能编译通过
  3. 以错误的方式访问了静态方法
  4. 能编译通过,但因变量为null,不能正常运行

正确答案:A

解析:

  1. 因为Test类的hello方法是静态方法,静态方法是属于类的,当类被实例化的时候,静态方法只会被加载一次,所以不管new没new都不会被影响,只要使用了Test类hello方法就一定会被初始化.
  2. 在其他非静态类的静态方法中是可以调用静态类的静态方法的,所以这里在非静态类的MyApplication静态方法main中调用hello方法是可以的.

对于线程局部存储TLS(Thread local storage),以下表述正确的是

  1. 解决多线程中的对同一变量的访问冲突的一种技术
  2. TLS会为每一个线程维护一个和该线程绑定的变量的副本
  3. 每一个线程都拥有自己的变量副本,从而也就没有必要对该变量进行同步了
  4. Java平台的java.lang.ThreadLocal是TLS技术的一种实现

正确答案:ABD

解析:

C错误的原因,同一全局变量或者静态变量每个线程访问的是同一变量,每个线程同时访问同一变量或者静态变量时会导致冲突,当多个线程同时修改这一变量时,通过TLS机制,为每个使用该全局变量的线程都提供一个变量值的副本,每个线程都能够独立访问和改变自己的副本,而不会和其他的线程的副本产生冲突.

不能用来修饰interface的有( )(仅限外部接口)

  1. private
  2. public
  3. protected
  4. static

正确答案:ACD

解析:

接口是一种特殊的抽象类,接口中的方法全都是抽象方法,但是前面的abstract可以省略,所以抽象类中的抽象方法不能用的访问修饰符接口中也不能用,因为接口可以让所有的类去实现,不只是其子类,但是要用public去修饰,接口可以去继承一个已有的接口.

在java中重写方法应遵循规则的包括()

  1. 访问修饰符的限制一定要大于被重写方法的访问修饰符
  2. 可以有不同的访问修饰符
  3. 参数列表必须完全与被重写的方法相同
  4. 必须具有不同的参数列表

正确答案:BC

解析:

方法重写遵循两同两小一大原则

  1. 两同:方法名必须相同,参数列表必须相同.
  2. 两小:子类返回类型小于等于父类的方法返回类型.
  3. 子类抛出异常小于等于父类方法抛出异常.
  4. 子类访问权限大于等于父类方法访问权限

何为方法重写?

重写是子类对父类的允许访问的方法的实现过程进行重新编写,返回值和形参都不能改变,即外壳不变,核心实现重写.

给出以下代码

第11行的哪个语句构造了一个内部类的实例?

import EnclosingOne.InsideOne

class Enclosingone
{
    public class InsideOne {}
}
public class inertest
{
    public static void main(string[]args)
    {
        EnclosingOne eo = new EnclosingOne();
        //insert code here第11行
    }
}
  1. InsideOne ei=eo.new InsideOne();
  2. eo.InsideOne ei=eo.new InsideOne();
  3. InsideOne ei=EnclosingOne.new InsideOne();
  4. EnclosingOne.InsideOne ei=eo.new InsideOne();

正确答案:AD

例子

package demoTest;

/**
* @program: TestProject
* @description:
* @author: Mr.Wang
* @create: 2019-06-10 13:09
**/
import demoTest.Enclosingone.InsideOne

class Enclosingone {
    public class InsideOne {
    }
}

public class Inertest {

    public static void main(String[] args) {
        Enclosingone eo = new Enclosingone();
        //insert code here第11行
        Enclosingone.InsideOne e = eo.new InsideOne();
        InsideOne insideOne = eo.new InsideOne();
    }
}

 上一篇
牛客网Java面试题(三) 牛客网Java面试题(三)
已知表达式int m[]={0,1,2,3,4,5,6};下面哪个表达式的值与数组下标量最大值相等? m. length() m. length - 1 m. length()+1 m. length+1 正确答案:B 解析:因为数组的下
2019-06-11
下一篇 
牛客网Java面试题(一) 牛客网Java面试题(一)
对接口的描述正确的是() 一个类可以实现多个接口 接口可以有非静态的成员变量 在jdk8之前,接口可以实现方法 实现接口的任何类,都需要实现接口的方法 正确答案:A 解析: 接口中可以有静态方法和成员变量 JDK8之后,接口可以实现静态
2019-06-09
  目录