`
tntxia
  • 浏览: 1510762 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

构造最全的Java面试题整理(JAVA 代码查错)

阅读更多

1.下面代码有什么错误
abstract class Name {
   private String name;
   public abstract boolean isStupidName(String name) {}
}

答案 : 抽象方法不应该有实现,abstract method 必须以分号结尾,且不带花括号。

2.下面代码有什么错误

public class Something {
   void doSomething () {
       private String s = "";
       int l = s.length();
   }
}

答案 : 

 

局部变量前不能放置任何访问修饰符  (private public ,和 protected) final 可以用来修饰局部变量
(final
如同 abstract strictfp ,都是非访问修饰符, strictfp 只能修饰 class method 而非 variable)

3.下面代码有什么错误

abstract class Something {
   private abstract String doSomething ();
}

答案 : 

 

abstract methods 不能以 private 修饰。 abstract methods 就是让子类 implement( 实现 ) 具体细节的,怎么可以用 private abstract
method
封锁起来呢 ? ( 同理, abstract method 前不能加 final)

 
4.下面代码有什么错误
public class Something {
   public int addOne(final int x) {
       return ++x;
   }
}

答案 : 

 

int x 被修饰成 final ,意味着 x 不能在 addOne method 中被修改。

5.下面代码有什么错误

public class Something {
   public static void main(String[] args) {
       Other o = new Other();
       new Something().addOne(o);
   }
   public void addOne(final Other o) {
       o.i++;
   }
}
class Other {
   public int i;
}
答案 : 

 

正确。在 addOne method 中,参数 o 被修饰成 final 。如果在 addOne method 里我们修改了 o reference
(
比如 : o = new Other();) ,那么如同上例这题也是错的。但这里修改的是 o member vairable
(
成员变量 ) ,而 o reference 并没有改变。

6.下面代码有什么错误
class Something {
    int i;
    public void doSomething() {
        System.out.println("i = " + i);
    }

:  正确。输出的是 "i = 0" int i 属於 instant variable ( 实例变量,或叫成员变量 ) instant variable default value int default value 0

7.下面代码有什么错误
class Something {
    final int i;
    public void doSomething() {
        System.out.println("i = " + i);
    }
}
: 

 

final int i 是个 final instant variable ( 实例变量,或叫成员变量 ) final instant variable 没有 default value ,必须在 constructor ( 构造器 ) 结束之前被赋予一个明确的值。可以修改为 "final int i = 0;"
8.下面代码有什么错误

public class Something {
     public static void main(String[] args) {
        Something s = new Something();
        System.out.println("s.doSomething() returns " + doSomething());
    }
    public String doSomething() {
        return "Do something ...";
    }
}

: 

 

错。看上去在 main call doSomething 没有什么问题,毕竟两个 methods 都在同一个 class 里。但仔细看, main static 的。 static method 不能直接 call non-static methods 。可改成 "System.out.println("s.doSomething() returns " + s.doSomething());" 。同理, static method 不能访问 non-static instant variable

9.此处, Something 类的文件名叫 OtherThing.java

里面的代码,如下:
class Something {
    private static void main(String[] something_to_do) {        
        System.out.println("Do something ...");
    }
}

答案 : 

正确。从来没有人说过 Java Class 名字必须和其文件名相同。但 public class 的名字必须和文件名相同。
10
下面代码有什么错误

interface  A{
   int x = 0;
}
class B{
   int x =1;
}
class C extends B implements A {
   public void pX(){
      System.out.println(x);
   }
   public static void main(String[] args) {
      new C().pX();
   }
}
案:

 

错误。在编译时会发生错误 ( 错误描述不同的 JVM 有不同的信息,意思就是未明确的 x 调用,两个 x 都匹配(就象在同时 import java.util java.sql 两个包时直接声明 Date 一样)。对于父类的变量 , 可以用 super.x 来明确,而接口的属性默认隐含为  public static final. 所以可以通过 A.x 来明确。

11.下面代码有什么错误

interface Playable {
    void play();
}
interface Bounceable {
    void play();
}
interface Rollable extends Playable, Bounceable {
    Ball ball = new Ball("PingPang");
}
class Ball implements Rollable {
    private String name;
    public String getName() {
        return name;
    }
    public Ball(String name) {
        this.name = name;        
    }
   public void play() {
        ball = new Ball("Football");
        System.out.println(ball.getName());
    }
}
 
: 

 

错。 "interface Rollable extends Playable, Bounceable" 没有问题。 interface 可继承多个 interfaces ,所以这里没错。问题出在 interface Rollable 里的 "Ball ball = new Ball("PingPang");" 。任何在 interface 里声明的 interface variable ( 接口变量,也可称成员变量 ) ,默认为 public static final 。也就是说 "Ball ball = new Ball("PingPang");" 实际上是 "public static final Ball ball = new Ball("PingPang");" 。在 Ball 类的 Play() 方法中, "ball = new Ball("Football");" 改变了 ball reference ,而这里的 ball 来自 Rollable interface Rollable interface 里的 ball public static final 的, final object 是不能被改变 reference 的。因此编译器将在 "ball = new Ball("Football");" 这里显示有错。

4
1
分享到:
评论
1 楼 sifangchao 2010-01-07  
哇,不错,非常感谢

相关推荐

    Java面试题以及答案整理.pdf

    为了在Java面试中脱颖而出,了解和掌握常见的面试题及答案至关重要。以下是一些关键知识点的详细解析: 1. **super()与 this()的区别** `super()`用于调用父类的构造器,确保子类实例化时父类的初始化;`this()`则...

    史上最全的Java面试题独家整理.zip

    这份“史上最全的Java面试题独家整理”无疑是准备Java面试者的宝贵资源。 面试题通常涵盖以下几个核心领域: 1. **基础语法**:包括变量、数据类型、运算符、流程控制语句(如if、switch、for、while)、类与对象...

    史上最全Java面试题目大集合

    整理了网上的一些java面试题目,很全很强大 面向对象的特征有哪些方面 1. 抽象:抽象就是忽略一个主题中与当前目标2. 无关的那些方面,3. 以便更充分地注意与当前目标4. 有关的方面。抽象并不5. 打算了解全部问题...

    Java基础面试题整理(附答案)

    ### Java基础面试题知识点解析 #### 一、面向对象的特征 面向对象编程(OOP)是Java编程的核心概念之一,其主要特征包括: - **封装**:将对象的状态信息(属性)隐藏在对象内部,仅对外提供有限的操作接口。封装提高...

    JAVA 面试题整理.doc

    Java 是一种广泛使用的...以上是Java面试中常见的知识点,深入理解和掌握这些内容将有助于你在面试中表现出色。同时,了解Spring框架的核心概念,如依赖注入和AOP,以及Ajax在Web交互中的应用,也会增加你的竞争力。

    最终JAVA面试题目汇总 Java面试题集锦 Java面试题大全 java面试100题目.pdf

    本资料集合了多个面试题库,涵盖了Java的基础、进阶及热门技术,是准备Java面试的宝贵资源。 一、Java基础 1. Java语言特性:了解Java的面向对象特性,如封装、继承、多态,以及异常处理、垃圾回收机制等。 2. ...

    Java面试题整理

    Java面试题整理主要涵盖了许多Java编程的核心概念和实践问题,这些问题可以帮助面试者检验他们的技能和对Java语言的理解程度。以下是一些重点知识点的详细说明: 1. **面向对象**:这是Java的基础,包括封装、继承...

    java中级面试题整理

    Java面试题涵盖广泛,从基础到进阶,再到算法、并发、中间件等方面,以下是根据题目内容整理出的知识点详解: 一、Java基础 1. Java的数据类型:包括基本数据类型(整型、浮点型、字符型、布尔型)和引用数据类型...

    Java企业面试题整理及答案

    ### Java企业面试题知识点梳理 #### 一、Java面向对象基础 **1. super()与this()的区别** - **super()**: 是指父类构造器的引用,用于调用父类的构造方法或访问父类的成员。在子类构造器中使用 `super()` 可以调用...

    Java常见面试题208道.docx

    面试中,Java开发者需要对基础知识、容器、多线程、反射、对象拷贝、Java Web、异常处理、网络编程、设计模式、Spring/Spring MVC、Spring Boot/Spring Cloud、Hibernate、Mybatis、消息中间件如RabbitMQ和Kafka、...

    高级Java经典面试题2019

    本文总结了《高级Java经典面试题2019》中关于并发编程、JVM和Spring框架等方面的重要知识点。通过深入理解这些概念和技术,可以帮助开发者更好地掌握Java核心技术,提高面试竞争力。希望本文能为读者提供有益的帮助...

    2022年最新Java面试题整理.doc

    Java面试题整理 Java是一种面向对象的程序设计语言,具有封装、继承、多态和抽象四大特性。下面是Java面试题整理的详细知识点: 1.1 面向对象特性 * 封装:提供了隐藏内部特性和行为的能力,保护对象内部状态,...

    2018年最全Java面试通关秘籍第四套

    【Java面试核心知识点详解】 Java面试是检验开发者技术实力的重要环节,涵盖的领域广泛,包括基础知识、集合框架、多线程、JVM、设计模式、数据结构和网络/IO等。以下是对这些知识点的详细说明: 1. **基础篇** -...

    2024年java面试题

    Java面试题涵盖了许多核心概念,包括基础语法、JVM、线程、Spring框架以及MySQL数据库的相关知识。以下是对这些知识点的详细解释: 1. **接口与抽象类的区别**: - 接口是完全抽象的,只能包含方法签名,不能有...

    java 面试题(最新最全java面试题汇总)

    Java面试题涵盖了许多核心Java知识点,这些知识点对于理解和掌握Java编程语言至关重要。以下是根据题目内容整理的一些关键知识点: 1. **非静态方法调用**: - Java中,非静态方法需要对象实例才能调用。因此,...

    2010华为java面试题华为java面试题华为java面试题华为java面试题华为java面试题

    根据给定的信息,我们可以整理出以下相关知识点: ### 1. 使用`StringTokenizer`分割字符串 在提供的代码片段中,...这些知识点涵盖了给定标题和描述中提到的面试题涉及的主要内容,希望对准备面试的朋友有所帮助。

    总结各大公司java面试题集

    Java 面试题集是求职者在准备面试时的重要参考资料,涵盖了从基础知识到高级概念的各种问题。这篇摘要主要关注Java的基础部分,包括作用域、集合类的区别、字符编码、多线程实现及同步机制,以及内部类的创建。 1. ...

    java面试题(题库全).zip

    这份"java面试题(题库全)"文档很可能包含了这些关键领域的重点题目,旨在帮助求职者全面准备Java相关的面试。 1. **基础语法**:Java的基础包括变量、数据类型、运算符、流程控制(如if-else、switch、for、while...

    java面试题整理,找工作、软件面试真题

    Java面试题涉及到的内容广泛,涵盖了语言基础、并发处理、内存管理、计算机网络等多个方面。以下是对这些知识点的详细解析: 1. **Java数据类型与JVM**: - Java中的`int`类型的长度是固定的32位,无论是在32位...

Global site tag (gtag.js) - Google Analytics