21xrx.com
2024-09-08 11:27:42 Sunday
登录
文章检索 我的文章 写文章
掌握这些Java面试问题问法和技巧,轻松应对笔试面试
2023-06-15 14:32:45 深夜i     --     --
Java面试 问题问法 技巧 代码案例 笔试面试

Java面试是每位Java程序员求职过程中必经的一关,而遇到熟悉题目和提问方式的面试官则是获取offer的最重要机会。在这里给大家提供一些Java面试常见问题的问法和技巧,希望能帮助到正在准备Java面试的同学们。

Java面试常见问题的问法和技巧:

1. 问法:请介绍一下重载和重写的区别?

  技巧:除了简单地说出操作符和方法名称不一样,最好可以结合代码实例给出更加明确的解释。

  示例代码:


  public class A {

    // 重载

    public int add(int a, int b) {

      return a + b;

    }

    // 重载

    public double add(double a, double b) {

      return a + b;

    }

    // 重写

    public void print() {

      System.out.println("This is class A");

    }

  }

  public class B extends A {

    // 重写

    @Override

    public void print() {

      System.out.println("This is class B");

    }

  }

 

2. 问法:请谈谈Java的异常体系?

  技巧:针对Java的异常体系可以先简单分为两类(checked exception和unchecked exception),然后详细说明各种常见的异常分类及其应用场景。

  示例代码:


  // checked exception

  public class FileNotFoundException extends IOException

    // ...

 

  // unchecked exception

  public class NullPointerException extends RuntimeException

    // ...

 

  public void divide(int a, int b) throws ArithmeticException {

    if (b == 0) {

      throw new ArithmeticException("divisor is 0"); // 运行时抛出异常

    }

    return a / b;

  }

 

3. 问法:请介绍一下HashMap的实现原理?

  技巧:最好可以画出hashmap的底层结构图和简述其源码实现。

  示例代码:


  public class MyHashMap {

    private static final int DEFAULT_CAPACITY = 16;

    private static final float DEFAULT_LOAD_FACTOR = 0.75f;

    private Node [] table; // 数组+链表实现

    static class Node >

      int hash;

      K key;

      V value;

      Node

    public MyHashMap() {

      this.table = new Node[DEFAULT_CAPACITY];

    }

    public void put(K key, V value) {

      int hash = hash(key);

      int index = getIndex(hash, table.length);

      Node node = table[index];

      while (node != null) {

        if (node.hash == hash && (node.key == key || node.key.equals(key)))

          node.value = value;

          return;

       

        node = node.next;

      }

      Node newNode = new Node<>();

      newNode.hash = hash;

      newNode.key = key;

      newNode.value = value;

      newNode.next = table[index];

      table[index] = newNode;

    }

    // ...

  }

 

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复
    相似文章