50 Pertanyaan dan Jawaban Wawancara Array Teratas (2026)
Bersiap untuk wawancara Array? Saatnya fokus pada pertanyaan apa yang mungkin muncul. Memahami {{kata kunci}} membantu kandidat menunjukkan kemampuan berpikir analitis, logika, dan pemecahan masalah secara efektif.
Array merupakan dasar dari pengalaman teknis dan profesional bagi para programmer. Mulai dari pemula hingga profesional senior, penguasaan array menunjukkan keahlian teknis yang kuat dan pengalaman mendalam dalam manipulasi data. Para pemberi kerja menghargai keterampilan tersebut selama sesi tanya jawab, dan lain sebagainya.ping Para kandidat berhasil melewati tahap ujian umum, lanjutan, atau wawancara dengan analisis yang percaya diri dan keterampilan praktis.
Berdasarkan wawasan dari lebih dari 85 pemimpin teknis, manajer, dan profesional, koleksi ini mencakup beragam perspektif di seluruh industri, memastikan setiap topik mencerminkan harapan perekrutan yang autentik dan standar evaluasi pengodean dunia nyata.

Pertanyaan dan Jawaban Wawancara Array Teratas
1) Jelaskan apa itu array dan bagaimana perbedaannya dengan struktur data lainnya.
Larik adalah blok memori bersebelahan yang menyimpan beberapa elemen dengan tipe data yang sama. Larik memungkinkan akses waktu konstan ke elemen apa pun menggunakan indeksnya, menjadikannya salah satu struktur paling efisien untuk akses acak. Tidak seperti daftar tertaut, larik memiliki ukuran tetap dan tidak ada overhead untuk menyimpan pointer. Larik lebih disukai ketika jumlah elemen telah diketahui sebelumnya, sedangkan struktur dinamis seperti daftar atau vektor digunakan ketika perubahan ukuran sering terjadi.
| Fitur | susunan | Daftar Tertaut |
|---|---|---|
| Alokasi memori | Berdekatan | Tidak bersebelahan |
| Waktu akses | O (1) | O (n) |
| Penyisipan/Penghapusan | Mahal sekali | Efisien |
| Memori Overhead | Rendah | Tinggi (penunjuk) |
👉 Unduh PDF Gratis: Pertanyaan & Jawaban Wawancara Array
2) Apa saja jenis-jenis array? Berikan contohnya.
Array dikategorikan berdasarkan dimensi dan penggunaannya. Jenis-jenis utamanya meliputi:
- Array satu dimensi: Menyimpan elemen secara linier, misalnya,
int arr[5] = {1,2,3,4,5}. - Array dua dimensi: Mewakili data tabular, misalnya matriks.
- Array multidimensi: Dimensi yang lebih tinggi, sering digunakan dalam simulasi atau pemrosesan gambar.
- Susunan dinamis: Secara otomatis mengubah ukuran ketika elemen ditambahkan, misalnya,
ArrayListin Java,vectorin C++.
| Tipe | Structure | Example |
|---|---|---|
| 1D | Linear | [1, 2, 3] |
| 2D | Matriks | [[1, 2], [3, 4]] |
| Dinamis | Dapat diubah | std::vector<int> |
3) Bagaimana Anda menemukan elemen terbesar dan terkecil dalam suatu array?
Masalah ini sering diselesaikan menggunakan traversal linear. Anda menyimpan dua variabel — satu untuk minimum dan satu untuk maksimum — dan memperbaruinya selama iterasi.
Algoritma:
- Inisialisasi
minkemaxdengan elemen pertama. - Telusuri susunan dan bandingkan setiap elemen.
- Memperbarui
minormaxdemikian.
Contoh (C++):
int arr[] = {5, 2, 9, 1, 7};
int min = arr[0], max = arr[0];
for (int i : arr) {
if (i < min) min = i;
if (i > max) max = i;
}
Kompleksitas Waktu: Pada).
4) Apa keuntungan dan kerugian array?
Array memberikan kinerja tinggi untuk akses acak tetapi memiliki ukuran tetap dan memerlukan biaya pengubahan ukuran yang mahal.
| Aspek | Kelebihan | Kekurangan |
|---|---|---|
| Performance | Pengindeksan cepat (O(1)) | Penyisipan/penghapusan lambat (O(n)) |
| Memori | Penyimpanan kompak | Alokasi ukuran statis |
| Organisasi | Sintaks sederhana | Tidak ada pemeriksaan batas dalam beberapa bahasa |
| Use Case | Cocok untuk kumpulan data tetap | Tidak efisien untuk modifikasi yang sering |
5) Jelaskan perbedaan antara array statis dan dinamis.
A array statis memiliki ukuran tetap yang ditentukan pada waktu kompilasi, sementara larik dinamis dapat bertambah atau berkurang selama runtime. Array statis efisien dalam memori tetapi kaku, sedangkan array dinamis memberikan fleksibilitas dengan sedikit biaya overhead selama pengubahan ukuran.
| Fitur | Susunan Statis | Array Dinamis |
|---|---|---|
| Ukuran | Tetap | Variabel |
| Memori | Tumpukan | tumpukan |
| Example | int arr[5]; |
std::vector<int> |
| Mengubah ukuran | Tidak didukung | Didukung |
Contoh Kasus Penggunaan:
Gunakan array statis dalam sistem tertanam, dan array dinamis untuk koleksi dengan ukuran yang tidak dapat diprediksi.
6) Bagaimana Anda dapat membalikkan susunan di tempat?
RevMengganti array di tempatnya melibatkan pertukaranping elemen dari kedua ujung bergerak menuju tengah.
Algoritma:
- Inisialisasi dua pointer:
start = 0keend = n - 1. - Tukar elemen
arr[start]kearr[end]. - Kenaikan
startdan penurunanendsampai mereka bertemu.
Contoh (Python):
arr = [1, 2, 3, 4, 5] arr.reverse() # Built-in method # or manually arr = arr[::-1]
Kompleksitas Waktu: Pada), Kompleksitas Ruang: O(1).
7) Apa perbedaan antara array bergerigi dan array multidimensi?
A susunan bergerigi adalah array dari array di mana array bagian dalam dapat memiliki panjang yang berbeda, sedangkan array multidimensi memiliki ukuran baris dan kolom yang seragam.
| Fitur | Susunan bergerigi | Array Multidimensi |
|---|---|---|
| Structure | Tidak beraturan (array bersarang) | Persegi panjang (matriks) |
| Memori | Tidak bersebelahan | Berdekatan |
| Mengakses | arr[i][j] |
arr[i][j] |
| Example | int[][] jagged = {{1,2}, {3,4,5}}; |
int[,] matrix = {{1,2}, {3,4}}; |
Susunan bergerigi lebih hemat memori ketika data tidak merata.
8) Bagaimana Anda menemukan angka yang hilang dalam susunan 1 hingga n?
Soal ini memanfaatkan sifat matematika dari bilangan asli.
Pendekatan 1 (Rumus Jumlah):
Jumlah pertama n bilangan asli = n*(n+1)/2.
Subtract adalah jumlah elemen array dari total ini.
Pendekatan 2 (XOR):
XOR semua elemen dengan angka dari 1 hingga n. Nilai yang tersisa adalah angka yang hilang.
Contoh:
Untuk [1,2,4,5,6] (n=6):
Jumlah yang diharapkan = 21, Jumlah aktual = 18 → Hilang = 3.
Kompleksitas Waktu: Pada), Kompleksitas Ruang: O(1).
9) Apa saja cara untuk menghapus duplikat dari suatu array?
Ada beberapa pendekatan tergantung pada bahasa dan kendalanya:
- Menggunakan HashSet: Simpan hanya elemen yang unik.
- Menggunakan Sorting: Urutkan array dan hapus duplikat yang berdekatan.
- Menggunakan Peta Frekuensi: Track jumlah dari setiap elemen.
Contoh (Java):
Set<Integer> unique = new HashSet<>(Arrays.asList(arr));
| Pendekatan | Waktu | Space |
|---|---|---|
| Set Hash | O (n) | O (n) |
| Penyortiran | O (n log n) | O (1) |
| Frekuensi | O (n) | O (n) |
10) Bagaimana Anda menemukan elemen terbesar kedua dalam sebuah array?
Anda dapat menemukan elemen terbesar kedua menggunakan satu penelusuran dengan mempertahankan dua variabel.
Algoritma:
- Inisialisasi
firstkesecondasINT_MIN. - Menyeberangi susunan tersebut.
- Perbarui keduanya ketika nilai yang lebih besar ditemukan.
Contoh (C++):
int first = INT_MIN, second = INT_MIN;
for (int x : arr) {
if (x > first) {
second = first;
first = x;
} else if (x > second && x < first) {
second = x;
}
}
Kompleksitas Waktu: Pada), Kompleksitas Ruang: O(1).
11) Bagaimana cara memutar array sebanyak 'k' posisi? Jelaskan berbagai pendekatannya.
Rotasi array menggeser elemen secara siklis. Ada tiga metode utama untuk mencapainya:
- Menggunakan Array Sementara: Salin k elemen pertama dan tambahkan di akhir setelah menggeser yang lain.
- Menggunakan RevAlgoritma ersal: Reverse tiga bagian dari array – bagian pertama, bagian kedua, lalu seluruh array.
- Menggunakan Algoritma Juggling: Berdasarkan FPB dari n dan k (efisien dalam O(n)).
Contoh (Rotasi Kanan sebesar 2):
Input: [1,2,3,4,5] Output: [4,5,1,2,3]
| metode | Waktu | Space | Deskripsi |
|---|---|---|---|
| Susunan Sementara | O (n) | Oke) | Sederhana & intuitif |
| Reversal | O (n) | O (1) | Di tempat & efisien |
| Main sunglap dgn bola | O (n) | O (1) | Berdasarkan siklus GCD |
12) Apa itu subarray dan apa bedanya dengan subsequence?
A subarray adalah bagian yang bersebelahan dari sebuah array, sedangkan urutan berikutnya mempertahankan urutan tetapi dapat melewatkan elemen.
| Milik | subarray | Subsekuen |
|---|---|---|
| Berdekatan | Ya | Tidak |
| Pesanan Terjaga | Ya | Ya |
| Contoh (dari [1,2,3]) | [1,2] | [1,3] |
Contoh:
Diberikan array [1,2,3], total subarray = n*(n+1)/2 = 6.
Sebaliknya, urutan berikutnya adalah 2ⁿ - 1 = 7 kombinasi yang tidak kosong.
13) Bagaimana cara menemukan subarray jumlah maksimum?
The Algoritma Kadane adalah cara yang paling efisien untuk menemukan subarray yang bersebelahan dengan jumlah maksimum.
Tangga:
- Inisialisasi
max_current = max_global = arr[0]. - Ulangi melalui elemen.
- Memperbarui
max_current = max(arr[i], arr[i] + max_current). - Track adalah nilai maksimum global.
Contoh:
Memasukkan: [-2,1,-3,4,-1,2,1,-5,4] → Keluaran: 6 (subarray [4,-1,2,1]).
Kompleksitas:
O(n) waktu, O(1) ruang.
14) Bagaimana Anda dapat menggabungkan dua array yang diurutkan tanpa menggunakan spasi tambahan?
Untuk menggabungkan dua array yang diurutkan di tempat, idenya adalah membandingkan dari akhir kedua larik.
Pendekatan:
- Mulai dari elemen terakhir yang valid pada kedua array.
- Bandingkan dan pindahkan yang lebih besar ke akhir ruang gabungan.
- Ulangi sampai semua elemen digabungkan.
Contoh (C++):
int i = m-1, j = n-1, k = m+n-1;
while (i >= 0 && j >= 0) {
if (A[i] > B[j]) A[k--] = A[i--];
else A[k--] = B[j--];
}
Kompleksitas Waktu: O(m+n).
15) Apa saja cara untuk mencari suatu elemen dalam array?
| metode | Tipe | Kompleksitas Waktu | Contoh Penggunaan |
|---|---|---|---|
| Pencarian Linier | disortir | O (n) | Pencarian umum |
| Pencarian Biner | Diurutkan | O (log n) | Pencarian yang efisien |
| Hashing | Tidak berurutan | O(1) rata-rata | Kumpulan data besar |
Contoh (Pencarian Biner – Python):
def binary_search(arr, x):
l, r = 0, len(arr)-1
while l <= r:
mid = (l+r)//2
if arr[mid] == x: return mid
elif arr[mid] < x: l = mid+1
else: r = mid-1
return -1
16) Jelaskan perbedaan antara salinan dangkal dan salinan dalam dalam array.
A salinan dangkal salinan referensi ke elemen asli, sementara salinan mendalam menduplikasi semua data ke lokasi memori baru.
| Jenis Salin | Independensi Data | Example |
|---|---|---|
| Dangkal | Tidak | arr_copy = arr |
| Dalam | Ya | arr_copy = arr[:] (Python) |
Contoh:
Memodifikasi salinan dangkal akan tercermin dalam susunan asli, sedangkan salinan dalam tidak.
17) Bagaimana Anda menemukan duplikat dalam array tanpa menggunakan spasi tambahan?
Pendekatan 1 (Penyortiran): Urutkan dan periksa elemen yang berdekatan.
Pendekatan 2 (Metode Negasi untuk nilai 1–n): Mark mengunjungi indeks dengan meniadakan elemen pada indeks tersebut.
Pendekatan 3 (Deteksi Siklus Floyd): Perlakukan array sebagai daftar tertaut dan temukan siklusnya (untuk elemen yang berulang dalam rentang [1..n]).
Contoh:
susunan [3,1,3,4,2] → Duplikat = 3.
Waktu: Pada), Ruang: O(1).
18) Apa itu sparse array dan manfaatnya?
A susunan yang jarang Sebagian besar berisi nilai nol atau nilai default. Alih-alih menyimpan semua elemen, kami hanya menyimpan entri bukan nol beserta indeksnya.
Keuntungan:
- Menghemat memori.
- Efisien untuk kumpulan data besar seperti matriks atau frekuensi istilah dokumen.
| Tipe | Example | Use Case |
|---|---|---|
| Susunan Padat | [0,1,0,2,3] |
Data kecil |
| Array Jarang | {1:1, 3:2, 4:3} |
Data jarang berukuran besar |
Contoh: Digunakan dalam model pembelajaran mesin (matriks TF-IDF).
19) Bagaimana Anda dapat menemukan perpotongan dua larik secara efisien?
Persimpangan dapat ditemukan menggunakan teknik hashing atau sorting.
- Menggunakan HashSet: Tambahkan elemen array pertama, lalu periksa keanggotaan untuk array kedua.
- Menggunakan Dua Pointer: Berfungsi untuk array yang diurutkan.
Contoh (Python):
intersection = list(set(arr1) & set(arr2))
Kompleksitas:
- Himpunan Hash: O(n)
- Dua Penunjuk: O(n log n) karena pengurutan.
20) Jelaskan perbedaan antara urutan baris utama dan urutan kolom utama dalam array.
Ini adalah perintah penyimpanan memori yang digunakan untuk array multidimensi.
| Konsep | Baris-Mayor (C/C++) | Kolom-Mayor (Fortran, MATLAB) |
|---|---|---|
| Perintah Penyimpanan | Baris demi Baris | Kolom demi Kolom |
| Rumus Alamat | Base + ((i * cols) + j) * size |
Base + ((j * rows) + i) * size |
| Keuntungan | Lebih cepat untuk penelusuran baris | Lebih cepat untuk traversal kolom |
Contoh:
Untuk array 2D A[2][3], deretan toko-toko besar [A[0][0], A[0][1], A[0][2], A[1][0], ...].
21) Apa itu teknik penjumlahan awalan dan bagaimana cara penggunaannya dalam array?
The jumlah awalan Teknik ini melibatkan pra-perhitungan jumlah kumulatif suatu array untuk menjawab pertanyaan rentang secara efisien.
Konsep:
prefix[i] = prefix[i-1] + arr[i]
Kemudian, untuk mendapatkan jumlah elemen dari l hingga r, gunakan:
sum(l, r) = prefix[r] - prefix[l-1]
Contoh:
Susunan = [2, 3, 5, 7, 1]
Awalan = [2, 5, 10, 17, 18]
Jumlah(2,4) = prefix[4] - prefix[1] = 15
aplikasi:
Digunakan dalam kueri jumlah subarray, tabel frekuensi kumulatif, dan pemrograman kompetitif.
Kompleksitas:
Praproses: O(n), Kueri: O(1)
22) Bagaimana teknik jendela geser meningkatkan kinerja array?
The jendela geser Teknik ini digunakan untuk memecahkan masalah yang melibatkan segmen bersebelahan (subarray) secara efisien.
Ide: Daripada menghitung ulang jumlah atau kondisi untuk setiap jendela, perbarui hasilnya dengan menambahkan elemen berikutnya dan menghapus elemen pertama.
Contoh Soal:
Temukan jumlah subarray maksimum dengan ukuran k.
Algoritma:
- Hitung jumlah pertama
kelemen. - Geser jendela satu elemen pada satu waktu.
- Tambahkan elemen baru, hapus elemen pertama, dan track maksimum.
Kompleksitas Waktu: O(n) — jauh lebih cepat daripada pendekatan O(n×k) yang naif.
aplikasi:
Digunakan dalam masalah seperti subarray rata-rata maksimum, substring terpanjang, atau angka negatif pertama di setiap jendela.
23) Apa perbedaan antara array dan pointer dalam bahasa C?
| Fitur | susunan | Petunjuk |
|---|---|---|
| Definisi | Kumpulan elemen data serupa | Variabel yang menyimpan alamat memori |
| Alokasi memori | Berdekatan | Dinamis atau sewenang-wenang |
| Ukuran | Tetap | Dapat diubah ukurannya |
| Example | int a[5]; |
int *p; |
Perbedaan Kunci:
Nama array bertindak sebagai penunjuk konstan, tetapi penunjuk dapat menunjuk ke mana saja secara dinamis.
Contoh:
int arr[3] = {1,2,3};
int *ptr = arr; // ptr points to first element
24) Bagaimana Anda menemukan indeks keseimbangan dalam suatu susunan?
An indeks keseimbangan adalah posisi di mana jumlah elemen di sebelah kiri sama dengan jumlah di sebelah kanan.
Algoritma:
- Hitung jumlah total array.
- Melintasi dan mempertahankan jumlah kiri.
- If
(total_sum - left_sum - arr[i]) == left_sum, kembalikan indeks.
Contoh:
Array: [1, 3, 5, 2, 2] → Indeks = 2 (karena jumlah kiri = jumlah kanan = 4)
Kompleksitas: Pada), Ruang: O (1)
25) Apa itu matriks jarang, dan bagaimana cara menyimpannya secara efisien?
A matriks jarang Sebagian besar berisi angka nol. Untuk menghemat memori, hanya elemen bukan nol dan indeksnya yang disimpan.
Metode Penyimpanan:
- Daftar Koordinat (COO): Simpan (baris, kolom, nilai).
- Baris Jarang Terkompresi (CSR): Tiga susunan:
values,col_index,row_pointer. - Kamus Kunci (DOK): Peta hash dari (baris, kolom) → nilai.
| metode | Efisiensi Memori | Contoh Penggunaan |
|---|---|---|
| MENDEKUT | Moderat | Penyimpanan umum |
| TJSL | High | Perhitungan numerik |
| DOKTER | Fleksibel | Penyisipan dinamis |
Digunakan secara luas di Mesin belajar (TF-IDF, matriks ketetanggaan grafik).
26) Bagaimana Anda menyusun ulang susunan sehingga angka genap dan ganjil bergantian?
Tujuannya adalah untuk menyisipkan angka genap dan ganjil sambil mempertahankan urutan relatifnya.
Algoritma:
- Pisahkan susunan genap dan ganjil.
- Gabungkan secara bergantian dimulai dengan genap atau ganjil.
- Jika satu jenis habis, tambahkan sisanya.
Contoh:
Input: [3, 6, 12, 1, 5, 8] Output: [6, 3, 12, 1, 8, 5]
Kompleksitas: O (n)
27) Jelaskan perbedaan antara rotasi array dan pergeseran array.
| Operaproduksi | Rotasi | Shifting |
|---|---|---|
| Definisi | Elemen bergerak secara melingkar | Elemen bergerak, tempat yang kosong terisi (misalnya, 0) |
| Example | [1,2,3,4] → [3,4,1,2] |
[1,2,3,4] → [0,1,2,3] |
| Data Hilang | Tidak | Ya |
| penggunaan | Penataan ulang siklik | Implementasi antrian |
Singkatnya:
Rotasi bersifat reversibel, sedangkan pergeseran biasanya tidak.
28) Bagaimana Anda menemukan subarray produk maksimum?
Mirip dengan algoritma Kadane, tetapi Anda track baik produk maksimum maupun minimum karena nilai negatif.
Algoritma:
- Inisialisasi
max_ending_here = min_ending_here = arr[0]. - Ulangi dan perbarui keduanya berdasarkan elemen saat ini.
- Track
max_so_far.
Contoh:
Memasukkan: [2,3,-2,4] → Keluaran: 6 (subarray [2,3])
Kompleksitas: Pada), Ruang: O (1)
29) Bagaimana Anda dapat menghitung jumlah subarray secara efisien dengan jumlah yang diberikan?
Pendekatan (Jumlah Awalan + Peta Hash):
- Pertahankan jumlah yang berjalan saat melakukan iterasi.
- Untuk setiap jumlah awalan, periksa apakah
(current_sum - target)ada di peta hash. - Tambahkan hitungan sebagaimana mestinya.
Contoh:
arr = [10,2,-2,-20,10], target = -10 Output = 3 subarrays
Kompleksitas Waktu: O (n)
Kompleksitas Ruang: O (n)
30) Apa yang dimaksud dengan manipulasi bit dalam masalah array, dan di mana ia diterapkan?
Manipulasi bit melibatkan pelaksanaan operasi seperti AND, OR, XOR, dan shift untuk memecahkan masalah secara efisien.
Aplikasi Umum:
- Menemukan elemen tunggal yang tidak berulang menggunakan XOR.
- Memeriksa apakah suatu subset ada menggunakan bitmasking.
- Mewakili himpunan sebagai vektor bit.
Contoh:
Temukan unsur yang muncul satu kali ketika unsur lainnya muncul dua kali:
int res = 0; for (int num : arr) res ^= num;
Keuntungan:
- Ruang konstan
- Perhitungan logika cepat
31) Bagaimana cara menelusuri matriks dalam urutan spiral?
A lintasan spiral mengunjungi semua elemen matriks lapis demi lapis searah jarum jam.
Algoritma:
- Tetapkan empat batasan:
top,bottom,left, danright. - Lintasi dari kiri → kanan, atas → bawah, kanan → kiri, dan bawah → atas.
- Kecilkan batas setelah setiap lintasan hingga semua elemen tercakup.
Contoh:
Input: 1 2 3 4 5 6 7 8 9 Output: [1,2,3,6,9,8,7,4,5]
Kompleksitas:
Waktu: O(n×m) | Ruang: O(1)
32) Apa saja cara mengurutkan array? Jelaskan dengan contoh.
Pengurutan menyusun ulang elemen-elemen dalam urutan tertentu. Pemilihan algoritma bergantung pada ukuran data, distribusi, dan batasan memori.
| Algoritma | Kasus terbaik | Kasus Rata-rata | Stabil | Space |
|---|---|---|---|---|
| Bubble Urutkan | O (n) | HAI(n²) | Ya | O (1) |
| Gabungkan Sortir | O (n log n) | O (n log n) | Ya | O (n) |
| Sortir Cepat | O (n log n) | HAI(n²) | Tidak | O (log n) |
| Urutan Heap | O (n log n) | O (n log n) | Tidak | O (1) |
Contoh (Python (Urutan Cepat):
def quicksort(arr):
if len(arr) <= 1:
return arr
pivot = arr[len(arr)//2]
return quicksort([x for x in arr if x < pivot]) + [x for x in arr if x == pivot] + quicksort([x for x in arr if x > pivot])
33) Jelaskan teknik dua-pointer dalam array.
The teknik dua penunjuk menggunakan dua indeks untuk melintasi struktur data dari ujung atau kecepatan yang berbeda, mengoptimalkan waktu dan ruang.
Penggunaan Umum:
- Mendeteksi pasangan dengan jumlah tertentu dalam susunan yang diurutkan.
- Menghapus duplikat di tempat.
- Revarray ersing.
- Menggabungkan interval.
Contoh (Pasangkan dengan Target Jumlah):
arr = [1,2,3,4,6], target = 6
left, right = 0, len(arr)-1
while left < right:
s = arr[left] + arr[right]
if s == target: print(arr[left], arr[right])
elif s < target: left += 1
else: right -= 1
Kompleksitas: O (n)
34) Bagaimana Anda menemukan elemen mayoritas dalam suatu array?
A elemen mayoritas muncul lebih dari ⌊n/2⌋ kali.
Algoritma Pemungutan Suara Boyer–Moore menyelesaikan ini dalam waktu linear dan ruang konstan.
Langkah-Langkah Algoritma:
- Inisialisasi
candidatekecount = 0. - Untuk setiap elemen:
- Jika hitungan = 0, atur
candidate = element. - Jumlah penambahan/pengurangan berdasarkan kesetaraan.
- Jika hitungan = 0, atur
- Verifikasi kandidat.
Contoh: [3,2,3] → Keluaran: 3
Kompleksitas: O (n)
35) Apa perbedaan antara pencarian biner dan pencarian eksponensial?
| Fitur | Pencarian Biner | Pencarian Eksponensial |
|---|---|---|
| Kebutuhan | Array yang diurutkan | Array yang diurutkan |
| Ide Kunci | Membagi array menjadi dua bagian | Temukan rentang secara eksponensial sebelum pencarian biner |
| Kompleksitas | O (log n) | O (log n) |
| Use Case | Ukuran yang diketahui | Array tak dikenal atau tak terbatas |
Contoh:
Untuk kumpulan data besar atau array tak terbatas (seperti API berhalaman), pencarian eksponensial menemukan rentang secara efisien.
36) Bagaimana Anda menemukan elemen ke-k terkecil atau terbesar dalam suatu array?
Pendekatan:
- Penyortiran: Urutkan dan akses
k-1indeks ke- (O(n log n)). - Tumpukan Min/Maks: Efisien untuk kueri yang sering (O(n log k)).
- QuickSelect (Algoritma Hoare): Rata-rata O(n).
Contoh (Python menggunakan heapq):
import heapq arr = [3,2,1,5,6,4] k = 2 print(heapq.nlargest(k, arr)[-1]) # 5
Gunakan Kasus: Papan peringkat, metrik berkinerja terbaik, analisis persentil.
37) Bagaimana Anda menemukan angka yang hilang dan berulang dalam susunan 1 hingga n?
Diberikan suatu susunan yang berisi angka 1 sampai n, dengan satu angka hilang dan satu angka berulang:
Pendekatan 1 (Matematika):
Gunakan perbedaan antara jumlah aktual dan jumlah yang diharapkan serta jumlah kuadrat.
Pendekatan 2 (Metode XOR):
- XOR semua elemen array dan 1…n.
- Hasilnya memberikan XOR dari angka yang hilang dan berulang.
- Membagi menggunakan bit set paling kanan.
Kompleksitas: Pada), Ruang: O (1)
Contoh:
Input: [4,3,6,2,1,1] Output: Missing = 5, Repeating = 1
38) Apa itu hitungan inversi dalam array dan bagaimana cara menghitungnya?
An inversi adalah pasangan (i, j) sedemikian rupa sehingga i < j ke arr[i] > arr[j].
Pendekatan:
- Naif: Periksa semua pasangan → O(n²).
- Dioptimalkan (Pengurutan Gabungan): Hitung inversi selama penggabungan → O(n log n).
Contoh:
Input: [8, 4, 2, 1] Inversions = 6 → (8,4), (8,2), (8,1), (4,2), (4,1), (2,1)
Digunakan dalam mengukur ketidakteraturan susunan ke sistem peringkat.
39) Bagaimana Anda menemukan median dari dua susunan yang diurutkan?
Pendekatan Optimal (Pencarian Biner):
Bagilah kedua larik sedemikian rupa sehingga bagian kiri berisi jumlah elemen yang sama dengan bagian kanan.
Algoritma:
- Gunakan pencarian biner pada array yang lebih kecil.
- Bandingkan batas-batas partisi.
- Mengembalikan median berdasarkan nilai partisi.
Kompleksitas: O(log(min(n, m)))
Contoh:
A = [1,3], B = [2] Median = 2.0
40) Apa keuntungan menggunakan array dibanding linked list?
| Faktor | susunan | Daftar Tertaut |
|---|---|---|
| Memori | Berdekatan | Tidak bersebelahan |
| Waktu akses | O (1) | O (n) |
| Penyisipan/Penghapusan | Mahal | Efisien |
| Lokalitas Cache | Sangat baik | Tidak baik |
| Atas | None | Penyimpanan penunjuk ekstra |
Kesimpulan:
Array optimal untuk kumpulan data berukuran tetap yang memerlukan akses acak, sementara daftar tertaut lebih baik untuk penyisipan dan penghapusan dinamis.
41) Bagaimana Anda menemukan jumlah maksimum subarray melingkar?
Di sebuah array melingkar, elemen saling membungkus di bagian akhir.
Pendekatan:
- Temukan jumlah subarray maksimum normal menggunakan Algoritma Kadane.
- Temukan jumlah subarray minimum.
- Hasil =
max(normal_max, total_sum - min_subarray).
Kasus Tepi: Jika semua elemen negatif, kembalikan elemen maksimum.
Contoh:
Input: [5, -2, 3, 4] Normal Max = 10, Circular Max = 12 → Output = 12
Kompleksitas: O (n)
42) Bagaimana cara mencari elemen dalam array yang diurutkan dan diputar?
Menggunakan pencarian biner yang dimodifikasi untuk menemukan titik tumpu dan menyesuaikan perbandingan.
Algoritma:
- Temukan tengah = (rendah + tinggi) / 2.
- Periksa apakah
arr[mid] == target. - Jika bagian kiri sudah diurutkan → cari di sebelah kiri; jika tidak, cari di sebelah kanan.
Contoh:
Input: [4,5,6,7,0,1,2], target = 0 Output: Index = 4
Kompleksitas Waktu: O (log n)
43) Jelaskan pendekatan pemrograman dinamis untuk “Urutan Peningkatan Jumlah Maksimum.”
Tujuannya adalah untuk menemukan jumlah maksimum dari barisan yang meningkat.
Algoritma:
- Inisialisasi
dp[i] = arr[i]. - Untuk setiap
i, periksa elemen sebelumnyaj < i:- If
arr[j] < arr[i], kemudiandp[i] = max(dp[i], arr[i] + dp[j]).
- If
- Mengembalikan nilai maksimum dalam
dp.
Contoh:
Input: [1, 101, 2, 3, 100, 4, 5] Output: 106 (1 + 2 + 3 + 100)
Waktu: O(n²) | Ruang: O (n)
44) Apa yang dimaksud dengan “Jebakan”?ping Masalah "air hujan" dan bagaimana cara mengatasinya?
Masalah susunan klasik ini menanyakan berapa banyak air yang dapat terperangkap di antara batang setelah hujan.
Pendekatan (Dua Petunjuk):
- Inisialisasi
left,right,left_max,right_max. - Pindahkan penunjuk ke dalam, memperbarui air yang terperangkap =
min(left_max, right_max) - height[i].
Contoh:
Input: [0,1,0,2,1,0,1,3,2,1,2,1] Output: 6
| Pendekatan | Waktu | Space |
|---|---|---|
| Brute Force | HAI(n²) | O (1) |
| Pemrograman Dinamis | O (n) | O (n) |
| Dua Petunjuk | O (n) | O (1) |
45) Bagaimana Anda menemukan subarray terpanjang dengan jumlah sama dengan nol?
Algoritma (Peta Hash):
- Inisialisasi peta hash untuk menyimpan jumlah awalan.
- Jika jumlah awalan yang sama muncul lagi, subarray antara indeks memiliki jumlah nol.
Contoh:
Input: [15, -2, 2, -8, 1, 7, 10, 23] Output: Length = 5 (Subarray [-2, 2, -8, 1, 7])
Kompleksitas: O (n)
46) Apa perbedaan antara perataan dangkal dan dalam pada array multidimensi?
| Tipe | Definisi | Example |
|---|---|---|
| Perataan Dangkal | Meratakan hanya satu level | [[1,2],[3,[4]]] → [1,2,3,[4]] |
| Perataan Dalam | Meratakan sepenuhnya semua array bersarang | [[1,2],[3,[4]]] → [1,2,3,4] |
Contoh (Python):
import itertools shallow = list(itertools.chain.from_iterable(arr))
Gunakan Kasus: Berguna dalam pembersihan data dan normalisasi data hierarkis.
47) Bagaimana cara menemukan elemen kesetimbangan dalam matriks (array 2D)?
An elemen keseimbangan dalam suatu matriks adalah suatu elemen yang jumlah baris dan kolom seimbang.
Algoritma:
- Hitung terlebih dahulu jumlah baris dan kolom.
- Untuk setiap elemen, periksa apakah
row_sum[i] - arr[i][j] == col_sum[j] - arr[i][j].
Contoh:
Matriks:
Matrix: 2 7 5 3 1 1 4 6 8 Output: Element 1 at (1,1)
Kompleksitas: HAI(n²)
48) Bagaimana Anda dapat membagi suatu array menjadi dua bagian dengan jumlah yang sama?
Ini adalah sebuah masalah jumlah subset, diselesaikan menggunakan Pemrograman Dinamis.
Pendekatan:
- Hitung jumlah total.
- Jika ganjil → kembalikan Salah.
- Buat tabel DP untuk memeriksa apakah subset dengan
sum/2ada
Contoh:
Input: [1,5,11,5] Output: True (Subsets: [1,5,5] and [11])
Waktu: O(n × jumlah/2) | Ruang: O(jumlah/2)
49) Bagaimana cara memutar matriks sebesar 90 derajat searah jarum jam?
Algoritma:
- Transposisi matriks.
- Reverse setiap baris.
Contoh:
Input: 1 2 3 4 5 6 7 8 9 Output: 7 4 1 8 5 2 9 6 3
Kompleksitas: O(n²), Di tempat.
Digunakan dalam pengolahan citra ke transformasi visualisasi data.
50) Apa saja aplikasi array yang paling umum di dunia nyata?
Array merupakan dasar bagi sejumlah sistem komputasi dan dunia nyata.
aplikasi:
- Pengindeksan Basis Data: Menyimpan dan menyortir catatan.
- Pembelajaran mesin: Vektor fitur, matriks, dan tensor.
- Pengolahan citra: Data piksel 2D dan 3D.
- OperaSistem: Penjadwalan memori dan proses.
- Jaringan: Penyanggaan dan perutean paket.
- Permainan: Status pemain tracraja dan kisi-kisi.
| Domain | Peran Array |
|---|---|
| AI / ML | Representasi tensor & matriks |
| DBMS | Pengindeksan & pengoptimalan pencarian |
| Embedded Systems | Data sensor waktu nyata |
| Cloud Computing | Susunan distribusi beban |
Array menyediakan tulang punggung untuk organisasi data, komputasi, dan skalabilitas yang efisien.
🔍 Pertanyaan Wawancara Array Teratas dengan Skenario Dunia Nyata & Respons Strategis
1) Apa itu array dan apa bedanya dengan struktur data lainnya?
Diharapkan dari kandidat: Pewawancara ingin menilai pemahaman mendasar Anda tentang array, termasuk tujuan, struktur, dan perbedaannya dengan tipe data lain seperti daftar tertaut atau peta hash.
Contoh jawaban:
Array adalah kumpulan elemen yang disimpan dalam lokasi memori yang bersebelahan, di mana setiap elemen dapat diakses menggunakan indeks. Tidak seperti daftar tertaut, array menyediakan akses waktu konstan (O(1)) ke elemen tetapi memerlukan ukuran tetap yang ditentukan pada saat pembuatan. Hal ini membuatnya efisien untuk operasi baca tetapi kurang fleksibel untuk penyisipan dan penghapusan.
2) Bagaimana Anda menemukan elemen terbesar dan terkecil dalam suatu array secara efisien?
Diharapkan dari kandidat: Pewawancara ingin memeriksa pemikiran algoritmik Anda dan kemampuan untuk mengoptimalkan kinerja.
Contoh jawaban:
“Untuk menemukan elemen terbesar dan terkecil dalam sebuah array secara efisien, saya akan melakukan iterasi melalui array sekali, lalu menyimpanping track dari nilai maksimum dan minimum saat ini. Pendekatan ini memiliki kompleksitas waktu O(n) dan kompleksitas ruang O(1), yang optimal untuk masalah ini.”
3) Jelaskan bagaimana Anda akan menghapus duplikat dari array yang tidak diurutkan.
Diharapkan dari kandidat: Pewawancara ingin menilai pengetahuan Anda tentang manipulasi array dan struktur data yang dapat membantu mencapai tugas ini.
Contoh jawaban:
Saya akan menggunakan hash set untuk menyimpan elemen unik saat melakukan iterasi pada array. Jika suatu elemen sudah ada di dalam set, saya akan melewatkannya; jika tidak, saya akan menambahkannya. Metode ini memastikan bahwa duplikat dihapus secara efisien dengan kompleksitas waktu O(n) dan kompleksitas ruang O(n).”
4) Dapatkah Anda menjelaskan cara kerja pengurutan array dan menyebutkan beberapa algoritma umum?
Diharapkan dari kandidat: Pewawancara mengharapkan pengetahuan tentang berbagai algoritma penyortiran dan kasus penggunaannya.
Contoh jawaban:
“Pengurutan array dapat dicapai dengan menggunakan berbagai algoritma seperti Quick Sort, Merge Sort, dan Bubble Sort. Quick Sort efisien untuk kasus rata-rata dengan kompleksitas O(n log n), sedangkan Merge Sort lebih disukai untuk kumpulan data besar karena sifatnya yang stabil. Bubble Sort, meskipun sederhana, jarang digunakan karena kinerjanya O(n²).”
5) Ceritakan kepada saya tentang suatu waktu ketika Anda mengoptimalkan program yang banyak menggunakan array.
Diharapkan dari kandidat: Pewawancara ingin memahami pendekatan pemecahan masalah dan kemampuan Anda untuk meningkatkan kinerja.
Contoh jawaban:
"Dalam peran saya sebelumnya, saya mengoptimalkan skrip pemrosesan data yang mengandalkan beberapa loop bersarang di atas array. Dengan menerapkan pengirisan array dan menggunakan operasi vektorisasi bawaan, saya mengurangi waktu eksekusi hampir 60 persen, yang secara signifikan meningkatkan responsivitas sistem."
6) Bagaimana Anda menangani kesalahan indeks array di luar batas?
Diharapkan dari kandidat: Pewawancara sedang memeriksa pemahaman Anda tentang penanganan kesalahan dan praktik pengkodean yang aman.
Contoh jawaban:
Saya akan memastikan semua akses indeks divalidasi sebelum digunakan dengan memeriksa apakah akses tersebut berada dalam rentang panjang array. Selain itu, saya akan menerapkan mekanisme try-catch atau metode penanganan kesalahan yang setara untuk mengelola kesalahan tak terduga di luar batas dengan baik.
7) Bagaimana Anda membalikkan array tanpa menggunakan memori tambahan?
Diharapkan dari kandidat: Pewawancara ingin mengevaluasi efisiensi algoritmik dan pemahaman Anda tentang operasi di tempat.
Contoh jawaban:
“Saya akan menggunakan dua pointer: satu dimulai dari awal array dan yang lainnya dari akhir. Dengan cara menukarping Dengan memindahkan elemen-elemen pada posisi ini dan menggerakkan kedua pointer ke arah tengah, array dapat dibalik di tempatnya dengan kompleksitas waktu O(n) dan kompleksitas ruang O(1).
8) Jelaskan situasi di mana Anda harus mengelola kumpulan data array yang besar. Bagaimana Anda memastikan kinerja dan akurasinya?
Diharapkan dari kandidat: Pewawancara ingin mengukur kemampuan Anda dalam menangani manajemen data dunia nyata dan pengoptimalan kinerja.
Contoh jawaban:
Di pekerjaan saya sebelumnya, saya bekerja dengan array numerik besar untuk analisis data keuangan. Untuk menjaga kinerja, saya menggunakan teknik manajemen memori yang efisien dan pemrosesan batch. Saya juga memanfaatkan array NumPy untuk melakukan operasi vektor, yang meningkatkan akurasi dan kecepatan eksekusi.
9) Langkah apa yang akan Anda ambil untuk mencari nilai tertentu dalam array yang diurutkan?
Diharapkan dari kandidat: Pewawancara mengharapkan Anda menunjukkan pengetahuan tentang algoritma pencarian.
Contoh jawaban:
Untuk array yang terurut, saya akan menggunakan algoritma pencarian biner, yang berulang kali membagi interval pencarian menjadi dua. Pendekatan ini mengurangi kompleksitas waktu menjadi O(log n), sehingga jauh lebih efisien daripada pencarian linear untuk kumpulan data besar.
10) Bagaimana array berperan dalam memecahkan masalah dunia nyata dalam pengembangan perangkat lunak?
Diharapkan dari kandidat: Pewawancara ingin memahami bagaimana Anda menghubungkan pengetahuan teknis dengan aplikasi praktis.
Contoh jawaban:
Array sangat penting dalam pengembangan perangkat lunak karena mendukung penyimpanan dan pengambilan data yang efisien. Misalnya, dalam peran terakhir saya, saya menggunakan array untuk menerapkan mekanisme caching dan penyortiran data untuk dasbor analitik. Hal ini meningkatkan aksesibilitas data dan mengurangi waktu respons kueri.
