>  기사  >  Java  >  자주 발생하는 Java 코드 인터뷰 질문 선택

자주 발생하는 Java 코드 인터뷰 질문 선택

王林
王林원래의
2023-06-15 16:44:48769검색

Java 프로그래머로서 인터뷰에 참여할 때 Java 코드에 대한 몇 가지 질문을 반드시 받게 됩니다. 이러한 질문은 때때로 매우 기본적일 수 있으며 종종 매우 자주 묻는 질문입니다. 이 글에서는 제가 생각하는 흔하고 가치 있는 Java 코딩 면접 질문 몇 가지를 공유하고자 합니다.

  1. 배열에서 최대값과 최소값 찾기

이 문제는 비교적 기본적인 문제입니다. 일반적으로 면접관은 이를 해결하기 위해 간단한 알고리즘을 직접 작성해 달라고 요청할 수 있습니다.

다음은 간단한 방법입니다:

public static void findMinMax(int[] arr) {
    if (arr == null || arr.length == 0) {
        return;
    }
    int min = Integer.MAX_VALUE;
    int max = Integer.MIN_VALUE;
    for (int i = 0; i < arr.length; i++) {
        if (arr[i] < min) {
            min = arr[i];
        }
        if (arr[i] > max) {
            max = arr[i];
        }
    }

    System.out.println("Minimum value: " + min);
    System.out.println("Maximum value: " + max);
}
  1. 문자열을 뒤집는 방법

이것은 일반적으로 Java에서 특정 API를 사용하여 간단한 문자열 작업을 구현할 수 있는지 여부를 테스트하는 고전적인 인터뷰 질문입니다.

다음은 한 가지 방법입니다:

public static String reverseString(String str) {
    if (str == null || str.length() == 0) {
        return "";
    }

    char[] charArray = str.toCharArray();
    int i = 0;
    int j = str.length() - 1;

    while (i < j) {
        char temp = charArray[i];
        charArray[i] = charArray[j];
        charArray[j] = temp;
        i++;
        j--;
    }

    return new String(charArray);
}
  1. 문자열이 회문 문자열인지 확인하세요

이것은 또 다른 일반적인 문자열 인터뷰 질문입니다. 일반적으로 면접관은 문자열이 회문 문자열인지 확인하는 알고리즘을 직접 작성하도록 요청합니다.

다음은 구현 방법입니다.

public static boolean isPalindromeString(String str) {
    if (str == null || str.length() == 0) {
        return true;
    }

    int i = 0;
    int j = str.length() - 1;

    while (i < j) {
        if (str.charAt(i) != str.charAt(j)) {
            return false;
        }
        i++;
        j--;
    }

    return true;
}
  1. 싱글톤 패턴 구현

이것은 매우 일반적인 Java 면접 질문으로, 일반적으로 하나의 인스턴스만 사용할 수 있도록 싱글톤 패턴 구현을 직접 작성해야 합니다. 생성됩니다.

다음은 일반적인 구현 방법입니다.

public class Singleton {
    private static Singleton instance;

    private Singleton() {
        // 私有构造方法
    }

    public static synchronized Singleton getInstance() {
        if (instance == null) {
            instance = new Singleton();
        }

        return instance;
    }
}

이것은 간단한 구현이지만 스레드로부터 안전하지 않습니다. 멀티 스레드 상황에서는 여러 인스턴스가 생성되는 경우가 있습니다. 스레드 안전성을 보장하려면 getInstance 메소드를 동기화 메소드로 설정해야 합니다.

  1. 차단 대기열 구현 방법

이것은 비교적 고급 Java 면접 질문입니다. 일반적으로 대기열이 가득 차거나 비어 있을 때 대기열에서 삽입 및 삭제 작업을 수행하는 스레드가 상태가 줄어들 때까지 차단될 수 있도록 간단한 차단 대기열 구현을 직접 작성해야 합니다.

다음은 간단한 차단 대기열 구현입니다.

public class BlockingQueue<T> {
    private Queue<T> queue = new LinkedList<T>();
    private int capacity;

    public BlockingQueue(int capacity) {
        this.capacity = capacity;
    }

    public synchronized void put(T item) throws InterruptedException {
        while (queue.size() == capacity) {
            wait();
        }
        queue.add(item);
        notifyAll();
    }

    public synchronized T take() throws InterruptedException {
        while (queue.isEmpty()) {
            wait();
        }
        T item = queue.remove();
        notifyAll();
        return item;
    }
}

위 구현은 Java의 wait() 및 informAll() 메서드를 사용하여 스레드 차단 및 깨우기를 구현합니다. 큐가 가득 차거나 비어 있으면 큐에 삽입하거나 삭제하는 스레드는 큐 상태가 변경될 때까지 대기하면서 차단됩니다.

이 기사에서는 일반적으로 매우 자주 묻는 몇 가지 일반적인 Java 인터뷰 질문을 공유하고 깊이 숙지할 가치가 있는 지식 포인트입니다. 자바 면접을 준비하고 계시다면 이 질문들이 도움이 되었으면 좋겠습니다!

위 내용은 자주 발생하는 Java 코드 인터뷰 질문 선택의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.