40 Pertanyaan dan Jawaban Wawancara Terpopuler tentang Linked List (2026)

Pertanyaan dan Jawaban Wawancara Terpopuler di Linked List

Persiapan untuk wawancara struktur data membutuhkan fokus pada tantangan. Pertanyaan wawancara Linked List mengungkapkan kedalaman pemecahan masalah, logika pointer, kesadaran memori, dan bagaimana kandidat bernalar melalui kasus-kasus khusus.

Menguasai linked list membuka peluang karir di berbagai tim produk, platform, dan rekayasa sistem. Paparan praktis membangun keahlian teknis yang kuat, pemikiran analitis, dan kebiasaan pengkodean yang bersih. Dari pemula hingga profesional senior, keterampilan ini mendukung debugging nyata, analisis kinerja, pembimbingan junior, dan kolaborasi dengan manajer dalam solusi yang skalabel menggunakan konsep-konsep canggih dari pengalaman.
Baca lebih banyak…

👉 Unduh PDF Gratis: Pertanyaan & Jawaban Wawancara Linked List

Pertanyaan dan Jawaban Wawancara Terpopuler di Linked List

1) Jelaskan apa itu Linked List dan bagaimana perbedaannya dengan array.

A daftar tertaut Linked list adalah struktur data linier di mana elemen-elemen, yang disebut node, dihubungkan menggunakan pointer atau referensi. Setiap node berisi data dan pointer/referensi ke node berikutnya dalam daftar. Tidak seperti array, linked list tidak menyimpan elemen dalam memori yang berdekatan.

Perbedaan utama antara linked list dan array:

Fitur Daftar Tertaut susunan
Alokasi memori Dinamis Statis
Waktu Akses Elemen O (n) O (1)
Penyisipan/Penghapusan Efisien (di posisi mana pun) Mahal (perlu dipindahkan)
Memori Overhead Ruang tambahan untuk penunjuk Tidak ada biaya tambahan pada pointer.

Singkatnya, linked list mengorbankan kecepatan penyisipan dan ukuran dinamis untuk akses acak yang lebih lambat dan overhead memori tambahan karena adanya pointer.


2) Apa saja berbagai jenis Linked List?

Ada beberapa jenis linked list, dan pewawancara sering meminta Anda untuk membedakan di antara mereka:

  • Daftar Berantai Tunggal: Setiap node hanya menunjuk ke node berikutnya.
  • Daftar Tertaut Ganda: Node memiliki dua poin: satu ke simpul berikutnya dan satu ke simpul sebelumnya.
  • Daftar Bertautan Melingkar: Node terakhir menunjuk kembali ke node pertama, membentuk sebuah lingkaran.
  • Daftar Bertautan Melingkar Ganda: Menggabungkan daftar melingkar dan daftar berantai ganda.

Setiap tipe memiliki kegunaan yang berbeda berdasarkan kebutuhan penelusuran dan memori. Misalnya, linked list ganda memungkinkan penelusuran mundur yang mudah dengan mengorbankan pointer tambahan.


3) Bagaimana cara membalikkan Linked List Tunggal? (Pendekatan Pemrograman)

RevMembalikkan linked list adalah pertanyaan wawancara klasik. Tujuannya adalah untuk mengubah arah pointer sehingga list dibalik di tempatnya tanpa mengalokasikan node baru.

Ide Utama:
Gunakan tiga poin — prev, curr, dan next — dan ulangi proses dalam daftar tersebut. Pada setiap langkah, alihkan. curr.next untuk prev, lalu majukan semua penunjuk.

ListNode reverseList(ListNode head) {
    ListNode prev = null;
    ListNode curr = head;
    while (curr != null) {
        ListNode next = curr.next;
        curr.next = prev;
        prev = curr;
        curr = next;
    }
    return prev; // New head
}

Ini mengubah struktur yang terhubung tanpa spasi tambahan dan berjalan di O (n) waktu.


4) Jelaskan Teknik Dua Pointer untuk Menemukan Titik Tengah dari Linked List.

Cara paling efisien untuk menemukan node tengah dari sebuah linked list adalah dengan menggunakan dua pointer:

  • A penunjuk lambat memindahkan satu node dalam satu waktu.
  • A penunjuk cepat Memindahkan dua node sekaligus.

Ketika penunjuk cepat mencapai ujung, penunjuk lambat akan berada di titik tengah. Teknik ini beroperasi dalam O (n) waktu tanpa ruang tambahan.


5) Bagaimana cara mendeteksi siklus dalam Linked List?

Deteksi siklus adalah masalah klasik lainnya. Solusi standar menggunakan Algoritma Kura-kura dan Kelinci Floyd:

  • Pindah slow pointer satu langkah pada satu waktu.
  • Pindah fast pointer dua langkah sekaligus.
  • Jika daftar tersebut memiliki siklus, kedua penunjuk akan bertemu.

Jika penunjuk cepat mencapai null, daftar tersebut tidak memiliki siklus. Metode ini berjalan dalam O (n) waktu dan O (1) ruang.


6) Apa saja kelebihan dan kekurangan Linked List?

Linked list menawarkan beberapa keuntungan dan kerugian:

Kelebihan Kekurangan
Ukuran dinamis Tidak ada akses acak
Sisipkan/hapus dengan mudah Memori tambahan untuk pointer
Efisien untuk pertumbuhan data. Performa cache yang buruk

Linked list berkinerja baik untuk data dinamis tetapi mungkin lebih lambat daripada array untuk akses elemen karena setiap akses memerlukan penelusuran dari head.


7) Bagaimana cara menggabungkan dua linked list yang sudah diurutkan?

Menggabungkan dua daftar yang sudah diurutkan adalah masalah umum lain yang sering dibahas dalam wawancara. Idenya adalah untuk menelusuri kedua daftar secara bersamaan dan membangun daftar baru yang sudah diurutkan dengan memilih node yang lebih kecil dari salah satu daftar pada setiap langkah.

ListNode mergeTwoLists(ListNode l1, ListNode l2) {
    ListNode dummy = new ListNode(0);
    ListNode tail = dummy;
    while (l1 != null && l2 != null) {
        if (l1.val < l2.val) {
            tail.next = l1;
            l1 = l1.next;
        } else {
            tail.next = l2;
            l2 = l2.next;
        }
        tail = tail.next;
    }
    tail.next = (l1 != null) ? l1 : l2;
    return dummy.next;
}

Metode ini mempertahankan urutan yang telah diurutkan dan berjalan dalam O(n + m) waktu untuk daftar dengan panjang n dan m.


8) Jelaskan cara menghapus node ke-N dari akhir sebuah Linked List.

Teknik yang paling efisien menggunakan dua poin Dipisahkan oleh n node. Majukan pointer pertama sebanyak n langkah, lalu gerakkan kedua pointer hingga pointer pertama mencapai ujung. Pointer kedua kemudian akan berada tepat sebelum node target.

Hal ini menghindari penghitungan panjang daftar secara terpisah dan menyelesaikannya dalam O (n) waktu. Ini juga menangani kasus-kasus khusus seperti menghapus node pertama.


9) Berapakah kompleksitas waktu untuk mengakses elemen ke-k dalam sebuah linked list?

Mengakses kElemen ke- dalam linked list memerlukan penelusuran dari head hingga mencapai elemen tersebut. ksimpul ke-th. Karena linked list tidak menyediakan pengindeksan langsung, ini membutuhkan biaya. O (n) waktu dalam skenario terburuk.

Sebaliknya, array mendukung pengindeksan langsung di O (1) waktu.


10) Mengapa Anda menggunakan Linked List alih-alih Array?

Linked list sangat berguna ketika:

  • Anda mengharapkan penyisipan dan penghapusan yang sering terjadi pada posisi acak.
  • Anda tidak mengetahui ukuran data Anda sebelumnya.
  • Fragmentasi memori mempersulit alokasi memori yang berurutan.

Mereka mendukung alokasi memori dinamis yang efisien dan penyisipan/penghapusan dalam waktu konstan di ujung daftar atau dengan referensi node yang diketahui—keunggulan yang tidak dapat ditandingi oleh array.


11) Apa saja aplikasi Linked List dalam dunia nyata?

Linked list banyak digunakan dalam sistem di mana alokasi memori dinamis, penyisipan yang sering, atau struktur data berukuran variabel Diperlukan. Hal ini diimplementasikan dalam beberapa konsep dan aplikasi inti ilmu komputer seperti:

  • Manajemen memori dinamis (digunakan dalam sistem operasi)
  • Fungsi Undo/Redo di editor teks
  • Rantai tabel hash untuk menyelesaikan tabrakan
  • Navigasi daftar putar musik atau video
  • Representasi kedekatan graf
  • Operasi aritmatika polinomial

Contoh-contoh ini menyoroti bagaimana linked list memberikan fleksibilitas dan manipulasi sequence yang efisien di mana pengubahan ukuran array akan memakan biaya yang mahal.


12) Jelaskan perbedaan antara linked list tunggal dan linked list ganda.

Fitur Daftar Tertaut Tunggal Daftar Tertaut Ganda
pointer 1 (hanya node berikutnya) 2 (sebelumnya dan selanjutnya)
Lintasan Hanya satu arah Kedua arah
Memory Usage Less (hanya satu penunjuk) Selengkapnya (petunjuk tambahan)
penghapusan Lebih sulit (membutuhkan node sebelumnya) Lebih mudah
Contoh Penggunaan Implementasi tumpukan Riwayat penelusuran

A daftar tertaut ganda lebih serbaguna tetapi mengonsumsi memori tambahan. Sebaliknya, daftar tertaut tunggal ringan dan efisien untuk pergerakan satu arah.


13) Bagaimana cara menghapus duplikat dari linked list yang sudah diurutkan?

Ketika sebuah linked list sudah diurutkan, duplikat akan berada berdekatan.

Telusuri daftar dan bandingkan data setiap node dengan node berikutnya. Jika cocok, lewati node berikutnya.

void removeDuplicates(ListNode head) {
    ListNode current = head;
    while (current != null && current.next != null) {
        if (current.val == current.next.val) {
            current.next = current.next.next;
        } else {
            current = current.next;
        }
    }
}

Kompleksitas: Waktu O(n) dan ruang O(1).

Untuk daftar yang tidak terurut, HashSet dapat digunakan untuk melacak nilai yang telah dilihat.


14) Apa perbedaan antara linked list linear dan linked list sirkular?

Fitur Daftar Berantai Linier Daftar Tautan Edaran
Simpul Terakhir Menunjuk ke NULL Menunjuk ke simpul kepala
Lintasan Berakhir ketika next == NULL Penelusuran berkelanjutan
Use Case Tumpukan, Antrian Penjadwalan bergilir
Kompleksitas Lebih sederhana Penanganan yang lebih kompleks

Daftar melingkar sangat bermanfaat dalam aplikasi seperti penjadwalan CPU, di mana proses dieksekusi secara siklik.


15) Bagaimana cara menemukan titik perpotongan dari dua linked list?

Untuk menentukan apakah dua linked list tunggal beririsan:

  1. Carilah panjang kedua daftar tersebut.
  2. Majukan penunjuk pada daftar yang lebih panjang sebanyak selisih panjangnya.
  3. Telusuri kedua daftar secara bersamaan hingga simpul-simpulnya identik.

Atau, a Set Hash dapat digunakan untuk menyimpan node yang telah dikunjungi dengan ruang O(n).

Pendekatan ini efisien dan sering ditanyakan dalam wawancara tingkat senior.


16) Bagaimana cara Anda memeriksa apakah dua linked list identik?

Dua linked list dianggap identik jika:

  • Mereka memiliki jumlah node yang sama.
  • Nilai node yang bersesuaian identik dalam urutannya.

Algoritma:

  1. Telusuri kedua daftar tersebut secara bersamaan.
  2. Bandingkan data setiap node.
  3. Jika semua pasangan cocok dan keduanya mencapai NULL, maka keduanya identik.

Kompleksitas waktu: O (n)

Kompleksitas ruang: O (1)


17) Apa yang dimaksud dengan kebocoran memori dalam konteks linked list?

A kebocoran memori Terjadi ketika node yang dialokasikan secara dinamis tidak dibebaskan setelah digunakan.

Dalam linked list, jika delete or free() Jika fungsi tersebut tidak dipanggil pada node yang dihapus dari daftar, memori tetap terpakai meskipun sudah tidak dapat diakses lagi.

Misalnya, gagal melepaskan node yang dihapus di C/C++ Hal ini menyebabkan penipisan memori secara bertahap, yang mengakibatkan perlambatan atau kerusakan sistem.

Pembersihan yang tepat menggunakan destruktor atau deallokasi eksplisit dapat menghindari masalah ini.


18) Jelaskan cara mengimplementasikan stack menggunakan linked list.

Di sebuah tumpukan, elemen-elemen mengikuti urutan LIFO (Last In, First Out).

Linked list sangat ideal karena penyisipan dan penghapusan terjadi secara efisien di bagian kepala.

Operation:

  • Dorong: Sisipkan node baru di bagian kepala.
  • Munculkan: Hapus node dari head.
  • Mengintip: Mengembalikan data kepala.

Keuntungan:
Tidak perlu array dengan ukuran tetap; ukurannya bertambah secara dinamis seiring dengan penambahan elemen.


19) Bagaimana linked list dapat digunakan untuk mengimplementasikan antrian?

Di sebuah antre, elemen-elemen mengikuti urutan FIFO (First In, First Out).

Gunakan linked list di mana:

  • Masukkan ke dalam Antrean (Sisipkan): Tambahkan node di bagian ekor.
  • Keluarkan dari antrean (Hapus): Hapus node dari head.

Hal ini memungkinkan kedua operasi tersebut O (1) waktu dengan dua poin — front dan rear.

Ini umumnya digunakan dalam penjadwalan proses dan sistem antrian printer.


20) Apa perbedaan antara array list dan linked list dalam Java?

Aspek Daftar Array Daftar Tertaut
Storage Susunan dinamis Daftar tertaut ganda
Waktu akses O (1) O (n)
Sisipkan/Hapus Mahal di kelas menengah Efisien di ujung-ujung
Memori Overhead Less Selengkapnya (petunjuk tambahan)
Use Case Akses sering Penyisipan/penghapusan yang sering

Contoh: penggunaan ArrayList untuk operasi yang banyak melibatkan pencarian data, dan LinkedList ketika operasi penyisipan/penghapusan mendominasi.


21) Bagaimana cara meratakan linked list bertingkat?

A daftar berantai bertingkat mungkin berisi node yang memiliki keduanya next dan child pointer (setiap anak mengarah ke linked list lain). Tujuannya adalah untuk meratakan semua node menjadi linked list satu tingkat.

Pendekatan:

  1. Menggunakan tumpukan or fungsi rekursif.
  2. Mulailah dari node kepala.
  3. Jika sebuah node memiliki child, mendorongnya next simpul ke tumpukan, dan buat child as next.
  4. Lanjutkan hingga tumpukan kosong.

Kompleksitas Waktu: O (n)

Kompleksitas Ruang: O(n) untuk rekursi/stack.

Contoh (secara konseptual):

1 - 2 - 3
    |
    4 - 5
Flattened → 1 → 2 → 4 → 5 → 3

Pertanyaan ini mengevaluasi pemahaman Anda tentang rekursi dan manipulasi pointer.


22) Bagaimana cara mengklonakan linked list dengan pointer acak?

Setiap node dalam linked list khusus ini memiliki dua pointer:

  • next → menunjuk ke node berikutnya.
  • random → menunjuk ke node mana pun secara sembarang.

Algoritma (3 langkah):

  1. Sisipkan node hasil kloning di antara node asli.
  2. Tetapkan pointer acak untuk klon (clone.random = original.random.next).
  3. Pisahkan kedua daftar tersebut.

Ini menghindari ruang tambahan untuk hash map dan berjalan dalam O (n) waktu dengan O (1) ruang ekstra.

Gunakan Kasus: Penyalinan mendalam struktur data kompleks (misalnya, grafik atau referensi objek).


23) Apa itu skip list, dan bagaimana hubungannya dengan linked list?

A lewati daftar adalah struktur linked list berlapis yang memungkinkan pencarian, penyisipan, dan penghapusan yang cepat (mirip dengan balanced tree).

Operaproduksi Waktu rata-rata Kasus terburuk
Cari O (log n) O (n)
Sisipkan/Hapus O (log n) O (n)

Struktur ini memiliki beberapa level, di mana level yang lebih tinggi "melewati" beberapa node, sehingga meningkatkan efisiensi pencarian.

Contoh: Digunakan dalam basis data seperti Redis dan implementasi peta konkuren.


24) Bagaimana cara mendeteksi palindrom dalam linked list?

Sebuah linked list disebut palindrom jika dibaca sama baik dari depan maupun dari belakang.

Algoritma:

  1. Temukan titik tengah daftar tersebut.
  2. Revbalikkan babak kedua.
  3. Bandingkan kedua bagian tersebut simpul demi simpul.

Jika semua simpul yang bersesuaian cocok, maka itu adalah sebuah palindrom.

Contoh:

1 → 2 → 3 → 2 → 1 → ✅ Palindrom

1 → 2 → 3 → 4 → ❌ Bukan sebuah palindrom

Kompleksitas Waktu: O (n)

Kompleksitas Ruang: O (1)


25) Bagaimana cara menghapus loop pada linked list?

Jika terdapat perulangan (menggunakan deteksi siklus Floyd), hilangkan perulangan tersebut dengan langkah-langkah berikut:

  1. Deteksi titik temu antara penunjuk lambat dan cepat.
  2. Gerakkan salah satu penunjuk ke bagian kepala.
  3. Gerakkan kedua penunjuk satu langkah demi satu langkah hingga bertemu di titik tersebut. simpul awal loop.
  4. Atur node sebelumnya next untuk null.

Pendekatan ini memastikan tidak ada penggunaan memori tambahan saat menyelesaikan siklus.


26) Apa saja berbagai cara untuk merepresentasikan linked list di memori?

Daftar berantai dapat direpresentasikan dalam tiga cara utama:

Tipe Representasi Uraian Teknis Contoh Penggunaan
Node dinamis Setiap node dialokasikan dan dihubungkan secara dinamis. C, C++
Representasi array statis Menggunakan indeks array sebagai pengganti pointer. Sistem tertanam
Objek yang terhubung Representasi berorientasi objek dengan kelas. Java, Python

Setiap pendekatan cocok untuk lingkungan yang berbeda — misalnya, daftar berbasis array digunakan ketika manipulasi pointer dibatasi.


27) Bagaimana cara menemukan panjang linked list (secara iteratif dan rekursif)?

Pendekatan Iteratif:

int getLength(ListNode head) {
    int count = 0;
    while (head != null) {
        count++;
        head = head.next;
    }
    return count;
}

Pendekatan Rekursif:

int getLength(ListNode head) {
    if (head == null) return 0;
    return 1 + getLength(head.next);
}

Kedua pendekatan tersebut memiliki O (n) kompleksitas waktu; rekursi menambahkan O (n) Overhead ruang penyimpanan karena tumpukan panggilan.


28) Jelaskan konsep linked list ganda melingkar dengan sebuah contoh.

Di sebuah daftar berantai ganda melingkarSetiap node memiliki dua tautan — satu ke node berikutnya dan satu ke node sebelumnya — dan node terakhir next menunjuk ke kepala, sementara kepala prev menunjuk ke node terakhir.

Contoh Kasus Penggunaan:

  • Sistem operasi waktu nyata (penjadwalan round-robin)
  • Daftar putar musik berulang
  • Navigasi antar tab atau slide

Keuntungan:

  • Penelusuran dua arah.
  • Tidak ada referensi null.
  • Penyisipan dan penghapusan yang efisien.

29) Bagaimana cara menghapus node alternatif dalam linked list?

Algoritma:

  1. Mulailah dari kepala.
  2. Hapus setiap node kedua dengan menyesuaikan pointer.
  3. Lanjutkan hingga daftar berakhir.

Contoh:

Input: 1 → 2 → 3 → 4 → 5  
Output: 1 → 3 → 5

Kompleksitas:

  • Waktu: O(n)
  • Ruang: O(1)

Ini untuk memeriksa pemahaman tentang penelusuran pointer dan keamanan penghapusan.


30) Bagaimana Anda dapat menemukan node ke-n dari awal dan dari akhir sebuah linked list?

Dari awal: Telusuri daftar hingga jumlah sama dengan n.

Dari ujung: Gunakan dua penunjuk.

  1. Gerakkan penunjuk pertama n langkah ke depan.
  2. Gerakkan keduanya secara bersamaan hingga yang pertama mencapai titik nol.
  3. Pointer kedua sekarang menunjuk ke node ke-n dari ujung.

Kompleksitas Waktu: O (n)

Kompleksitas Ruang: O (1)

Pendekatan ini menghindari penghitungan panjang secara terpisah, sehingga meningkatkan efisiensi.


31) Bagaimana cara menyusun ulang linked list?

Masalahnya: Diberikan sebuah daftar L0 → L1 → … → Ln-1 → Ln, susun ulang sebagai L0 → Ln → L1 → Ln-1 → L2 → Ln-2 → …

Tangga:

  1. Temukan titik tengah daftar tersebut.
  2. Revbalikkan babak kedua.
  3. Gabungkan kedua bagian secara bergantian.

Contoh:

Input: 1 → 2 → 3 → 4 → 5  
Output: 1 → 5 → 2 → 4 → 3

Kompleksitas: O(n) waktu, O(1) ruang.

Soal ini menguji beberapa operasi linked list dalam satu pertanyaan.


32) Bagaimana cara mempartisi linked list di sekitar nilai x yang diberikan?

Tujuan:
Susun ulang node sehingga semua node yang kurang dari x berada sebelum node yang lebih besar dari atau sama dengan x.

Pendekatan:

  • Buatlah dua daftar contoh: before dan after.
  • Telusuri daftar asli dan tambahkan node ke daftar masing-masing.
  • Gabungkan semuanya di akhir.

Contoh:

Input: 3 → 5 → 8 → 5 → 10 → 2 → 1, x = 5  
Output: 3 → 2 → 1 → 5 → 8 → 5 → 10

Pertanyaan ini sering diajukan untuk mengevaluasi kemampuan penataan ulang data.


33) Bagaimana cara mengurutkan linked list?

Karena linked list tidak mendukung akses acak, Gabungkan Sortir adalah pilihan terbaik

Tangga:

  1. Pisahkan daftar menjadi dua bagian menggunakan pointer lambat/cepat.
  2. Urutkan setiap bagian secara rekursif.
  3. Gabungkan kedua bagian yang telah diurutkan.

Keuntungan:

  • Waktu O(n log n).
  • Ruang tambahan O(1) (untuk versi iteratif).

Berbeda dengan array, QuickSort tidak efisien untuk linked list karena kompleksitas penataan ulang pointer.


34) Apa perbedaan antara linked list tunggal, linked list ganda, dan linked list melingkar?

Fitur Sendiri Dua kali lipat Bundar
Link Satu (selanjutnya) Dua (sebelumnya & selanjutnya) Node terakhir terhubung ke kepala.
Lintasan Maju saja Maju & mundur Kemungkinan penelusuran tak terbatas
Penyisipan/Penghapusan Moderat Lebih mudah di kedua ujungnya Penanganan kasus khusus
Use Case Tumpukan, Antrian Batalkan operasi Penjadwalan bergilir

Pertanyaan perbandingan ini sering muncul untuk memeriksa kejelasan konsep.


35) Bagaimana cara menemukan titik persimpangan dari dua linked list melingkar?

Ini merupakan perluasan dari masalah perpotongan.

Algoritma:

  1. Deteksi apakah setiap daftar memiliki perulangan.
  2. Jika keduanya tidak memiliki siklus → gunakan algoritma irisan standar.
  3. Jika keduanya bersifat siklik → temukan awal loop untuk masing-masing dan periksa apakah keduanya sama atau terhubung.

Masalah ini menggabungkan deteksi siklus dan logika persimpangan, menguji penalaran multi-konsep.


36) Jelaskan cara memasukkan node ke dalam linked list yang sudah diurutkan.

Tangga:

  1. Buat node baru dengan nilai yang diberikan.
  2. Telusuri hingga Anda menemukan posisi yang tepat.
  3. Menyesuaikan next petunjuk yang sesuai.

Contoh:

Input: 1 → 3 → 5 → 7, Insert 4  
Output: 1 → 3 → 4 → 5 → 7

Ini adalah soal manipulasi dasar untuk menguji pemahaman tentang penyesuaian penunjuk.


37) Bagaimana cara membagi linked list menjadi dua bagian?

Algoritma:

  • Gunakan metode penunjuk lambat dan cepat.
  • Ketika fast mencapai akhir, slow akan berada di titik tengah.
  • Pisahkan di simpul tersebut.

Contoh:

Input: 1 → 2 → 3 → 4 → 5  
Output: 1 → 2 → 3  and  4 → 5

Operasi ini seringkali menjadi langkah pertama dari pengurutan gabungan daftar tertaut (linked list merge sort).


38) Bagaimana cara menemukan kemunculan terakhir suatu nilai dalam linked list?

Telusuri daftar sambil melacak node terakhir tempat nilai target ditemukan.

Kode semu:

ListNode findLastOccurrence(ListNode head, int val) {
    ListNode result = null;
    while (head != null) {
        if (head.val == val) result = head;
        head = head.next;
    }
    return result;
}

Kompleksitas: O (n)

Ini menguji pemahaman tentang penelusuran linier dan pengecekan kondisi.


39) Bagaimana cara menghapus semua kemunculan kunci tertentu dari sebuah linked list?

Algoritma:

  1. Tangani node kepala terlebih dahulu jika node tersebut berisi kunci target.
  2. Kemudian, telusuri dan hapus node-node berikutnya yang berisi kunci tersebut.

Contoh:

Input: 1 → 2 → 6 → 3 → 4 → 5 → 6, Key = 6  
Output: 1 → 2 → 3 → 4 → 5

Kompleksitas: O (n)

Ini menunjukkan pengetahuan tentang kasus-kasus khusus (terutama penghapusan bagian kepala).


40) Apa perbedaan utama antara struktur data stack dan linked list?

Fitur Tumpukan Daftar Tertaut
Jenis Akses LIFO (Masuk Terakhir, Keluar Pertama) Sequential
Organisasi Array atau Daftar Tertaut Berbasis node
Operations Tekan/Pop Sisipkan/Hapus/Telusuri
keluwesan Pembatasan akses Akses fleksibel
Use Case Manajemen panggilan fungsi Penanganan data dinamis

Tumpukan dapat diimplementasikan menggunakan linked listNamun, keduanya berbeda dalam konsep — stack memiliki akses terbatas sedangkan linked list adalah struktur serbaguna.


🔍 Pertanyaan Wawancara LinkedIn Teratas dengan Skenario Dunia Nyata & Jawaban Strategis

1) Apa itu linked list, dan apa perbedaannya dengan array?

Diharapkan dari kandidat: Pewawancara ingin menilai pemahaman Anda tentang struktur data fundamental dan kemampuan Anda untuk membandingkan berbagai pertimbangan yang ada.

Contoh jawaban: Linked list adalah struktur data linier di mana elemen-elemen, yang disebut node, dihubungkan menggunakan pointer. Setiap node berisi data dan referensi ke node berikutnya. Tidak seperti array, linked list tidak memerlukan memori yang berurutan dan memungkinkan pengubahan ukuran secara dinamis, tetapi memiliki waktu akses yang lebih lambat karena elemen-elemennya tidak diindeks.


2) Kapan Anda akan memilih linked list daripada array dalam aplikasi dunia nyata?

Diharapkan dari kandidat: Mereka sedang mengevaluasi penilaian praktis Anda dalam memilih struktur data yang tepat.

Contoh jawaban: Saya akan memilih linked list ketika diperlukan penyisipan dan penghapusan yang sering, terutama di tengah-tengah kumpulan data. Dalam peran saya sebelumnya, saya mengerjakan fitur penjadwalan tugas di mana tugas sering ditambahkan dan dihapus, dan linked list memberikan kinerja yang lebih baik daripada array.


3) Bisakah Anda menjelaskan perbedaan antara linked list tunggal dan linked list ganda?

Diharapkan dari kandidat: Pewawancara ingin memverifikasi kejelasan konsep Anda dan kemampuan untuk menjelaskan perbedaan teknis dengan jelas.

Contoh jawaban: Sebuah linked list tunggal memiliki node yang hanya menunjuk ke node berikutnya, sedangkan linked list ganda memiliki node yang menunjuk ke node berikutnya dan node sebelumnya. Linked list ganda memungkinkan penelusuran mundur yang lebih mudah tetapi membutuhkan lebih banyak memori karena adanya pointer tambahan.


4) Bagaimana Anda mendeteksi siklus dalam daftar tertaut?

Diharapkan dari kandidat: Tes ini menguji kemampuan pemecahan masalah dan pemahaman Anda tentang pola algoritma umum.

Contoh jawaban: Pendekatan umum adalah menggunakan dua pointer yang bergerak dengan kecepatan berbeda, yang sering disebut teknik pointer lambat dan cepat. Jika terjadi siklus, kedua pointer tersebut pada akhirnya akan bertemu. Pada posisi sebelumnya, saya menggunakan pendekatan ini untuk mencegah perulangan tak terbatas dalam alur pemrosesan data.


5) Apa saja beberapa operasi umum yang dilakukan pada linked list?

Diharapkan dari kandidat: Pewawancara ingin melihat apakah Anda memahami operasi standar dan implikasinya.

Contoh jawaban: Operasi umum meliputi penyisipan, penghapusan, penelusuran, pencarian, dan pembalikan daftar. Setiap operasi memiliki kompleksitas waktu yang berbeda tergantung pada di mana operasi tersebut dilakukan, yang penting dalam merancang sistem yang efisien.


6) Bagaimana cara Anda menangani penyisipan node di tengah linked list?

Diharapkan dari kandidat: Mereka sedang memeriksa pemahaman Anda tentang manipulasi pointer dan perhatian Anda terhadap detail.

Contoh jawaban: Untuk menyisipkan node di tengah, pertama-tama saya menelusuri daftar untuk menemukan posisi target, kemudian menyesuaikan pointer sehingga node baru menunjuk ke node berikutnya dan node sebelumnya menunjuk ke node baru. Pembaruan pointer yang cermat sangat penting untuk menghindari kerusakan pada daftar.


7) Jelaskan situasi di mana linked list menyebabkan masalah performa dan bagaimana Anda mengatasinya.

Diharapkan dari kandidat: Pertanyaan perilaku ini mengevaluasi kemampuan Anda untuk merefleksikan dan mengoptimalkan.

Contoh jawaban: Di pekerjaan saya sebelumnya, linked list digunakan untuk operasi pencarian yang sering dilakukan, yang menyebabkan kinerja lambat. Saya mengidentifikasi masalah tersebut dan merekomendasikan untuk beralih ke struktur berbasis hash, yang secara signifikan meningkatkan waktu pencarian.


8) Bagaimana cara membalikkan linked list?

Diharapkan dari kandidat: Pewawancara sedang menguji kemampuan berpikir logis dan pemahaman Anda tentang pendekatan iteratif atau rekursif.

Contoh jawaban: Saya akan membalikkan linked list dengan mengulanginya dan mengubah pointer next setiap node agar menunjuk ke node sebelumnya. Proses ini berlanjut hingga semua pointer dibalik dan head diperbarui.


9) Apa saja kelebihan dan kekurangan menggunakan linked list?

Diharapkan dari kandidat: Mereka menginginkan perspektif yang seimbang dan kesadaran akan adanya pertimbangan untung rugi.

Contoh jawaban: Keuntungannya meliputi ukuran dinamis dan penyisipan serta penghapusan yang efisien. Kerugiannya meliputi penggunaan memori yang lebih tinggi dan waktu akses yang lebih lambat dibandingkan dengan array. Dalam peran saya sebelumnya, pemahaman tentang pertimbangan-pertimbangan ini membantu dalam memilih struktur yang tepat untuk berbagai komponen.


10) Bagaimana Anda memutuskan jenis linked list mana yang akan digunakan dalam desain sistem?

Diharapkan dari kandidat: Pertanyaan situasional ini menilai pengambilan keputusan dalam konteks arsitektur.

Contoh jawaban: Saya mempertimbangkan faktor-faktor seperti kebutuhan penelusuran, batasan memori, dan frekuensi operasi. Misalnya, jika penelusuran mundur diperlukan, daftar berantai ganda lebih cocok, sedangkan daftar berantai tunggal sudah cukup untuk implementasi yang lebih sederhana dan hemat memori.

Ringkaslah postingan ini dengan: