Rumah  >  Artikel  >  Java  >  Pemilihan soalan wawancara kod Java frekuensi tinggi

Pemilihan soalan wawancara kod Java frekuensi tinggi

王林
王林asal
2023-06-15 16:44:48775semak imbas

Sebagai pengaturcara Java, kami pasti akan ditanya beberapa soalan tentang kod Java apabila mengambil bahagian dalam temu duga. Soalan-soalan ini kadangkala boleh menjadi sangat asas dan sering ditanya dengan sangat kerap. Dalam artikel ini, saya berharap untuk berkongsi beberapa soalan wawancara pengekodan Java frekuensi tinggi yang biasa dan berharga yang saya fikirkan.

  1. Mencari nilai maksimum dan minimum dalam tatasusunan

Masalah ini agak asas, dan biasanya penemuduga mungkin meminta anda menulis algoritma ringkas dengan tangan untuk menyelesaikannya.

Berikut ialah kaedah mudah:

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. Cara untuk membalikkan rentetan

Ini ialah soalan temu bual klasik yang biasanya menguji anda Adakah mungkin untuk melaksanakan operasi rentetan mudah menggunakan beberapa API dalam Java.

Berikut ialah kaedah pelaksanaan:

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. Tentukan sama ada rentetan ialah rentetan palindrom

Ini ialah satu lagi rentetan soalan Temu bual biasa. Biasanya penemuduga akan meminta anda menulis tangan algoritma untuk menentukan sama ada rentetan adalah rentetan palindrom.

Berikut ialah kaedah pelaksanaan:

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. Melaksanakan corak tunggal

Ini ialah soalan temu duga Java yang lazimnya memerlukan anda Tangan- tulis pelaksanaan corak tunggal untuk memastikan bahawa hanya satu contoh boleh dibuat.

Berikut ialah kaedah pelaksanaan biasa:

public class Singleton {
    private static Singleton instance;

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

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

        return instance;
    }
}

Ini adalah pelaksanaan yang mudah, tetapi ia tidak selamat untuk benang. Dalam situasi berbilang benang, mungkin berlaku berbilang kejadian dibuat. Perlu diingatkan bahawa untuk memastikan keselamatan benang, kita perlu menetapkan kaedah getInstance sebagai kaedah yang disegerakkan.

  1. Cara melaksanakan baris gilir menyekat

Ini ialah soalan temuduga Java yang agak maju. Anda biasanya dikehendaki menulis tangan pelaksanaan baris gilir menyekat yang mudah untuk memastikan bahawa apabila baris gilir penuh atau kosong, utas yang melakukan operasi sisipan dan pemadaman pada baris gilir boleh disekat menunggu keadaan dikurangkan.

Berikut ialah pelaksanaan baris gilir menyekat yang mudah:

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;
    }
}

Pelaksanaan di atas menggunakan kaedah wait() dan notifyAll() dalam Java untuk melaksanakan penyekatan dan kebangkitan benang. Apabila baris gilir penuh atau kosong, benang yang menjalankan operasi sisipan atau pemadaman pada baris gilir akan disekat menunggu status baris gilir berubah.

Dalam artikel ini, saya berkongsi beberapa soalan temu bual Java biasa, yang biasanya ditanya dengan sangat kerap dan merupakan mata pengetahuan yang patut dikuasai secara mendalam. Jika anda sedang bersedia untuk temuduga Java, saya harap soalan-soalan ini dapat membantu anda!

Atas ialah kandungan terperinci Pemilihan soalan wawancara kod Java frekuensi tinggi. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn