Latihan wawancara teknis efektif bila tersebar dalam beberapa pekan, bukan dipadatkan beberapa hari sebelum jadwalnya. Topik ini menyusun seluruh topik jalur DSA menjadi peta jalan dua belas pekan dengan prinsip berjarak (spaced repetition), yakni materi baru diulang pada jarak yang makin renggang agar tersimpan lebih lama. Jadwalnya lengkap dengan komposisi tingkat kesulitan, sesi ulangan, dan skrip yang menghitung ulang ringkasannya. Setelah topik ini dibaca, jadwal dapat dipakai apa adanya atau disesuaikan dengan menyunting data skripnya, tanpa menghitung ulang angka-angkanya secara manual.
Prinsip penyusunan jadwal#
Jadwal ini menaati tiga prinsip. Pertama, satu pekan memuat satu blok topik, karena berganti topik setiap hari memecah pemahaman yang baru terbentuk. Kedua, soal baru dikerjakan di awal pekan, sedangkan sisanya dipakai untuk dua sesi ulangan pendek atas soal-soal lama. Ketiga, ritme yang konsisten mengalahkan semangat sesaat, sehingga jumlah soal baru per pekan sengaja ditahan di kisaran empat sampai lima.
Prinsip berjarak masuk melalui kolom ulangan pada tabel jadwal. Materi pekan ke- diuji ulang pada pekan , yaitu jarak satu pekan, lalu sekali lagi pada pekan , yaitu jarak tiga pekan. Dua jarak itu, pendek dan menengah, cukup mewakili pengulangan untuk jadwal dua belas pekan, sedangkan pengulangan jarak jauh digantikan oleh pekan terakhir yang mencampur seluruh materi secara acak. Setiap sesi ulangan memakai tiga sampai empat soal lama dan tidak dihitung dalam jumlah soal baru, sehingga beban pekan tetap terkendali.
Jadwal dua belas pekan#
Tabel berikut memetakan blok topik jalur DSA ke dalam dua belas pekan. Kolom soal baru memuat komposisi mudah/sedang/sulit, sedangkan kolom ulangan menyebut pekan lama yang materinya diuji ulang pada pekan itu. Pekan satu belum memiliki materi lama, sehingga ulangannya kosong.
| Pekan | Fokus topik | Soal baru (mudah/sedang/sulit) | Ulangan |
|---|---|---|---|
| 1 | array | 3/2/0 | - |
| 2 | hashing | 2/3/0 | pekan 1 |
| 3 | two pointer dan sliding window | 2/3/0 | pekan 2 |
| 4 | linked list | 2/2/1 | pekan 1 dan 3 |
| 5 | stack dan antrian | 2/2/1 | pekan 2 dan 4 |
| 6 | rekursi dan backtracking | 1/2/1 | pekan 3 dan 5 |
| 7 | pohon | 2/2/1 | pekan 4 dan 6 |
| 8 | heap dan antrian prioritas | 1/2/1 | pekan 5 dan 7 |
| 9 | graf | 1/3/1 | pekan 6 dan 8 |
| 10 | pengurutan dan pencarian biner | 2/2/1 | pekan 7 dan 9 |
| 11 | greedy dan DP | 1/2/2 | pekan 8 dan 10 |
| 12 | wawancara tiruan | 0/2/1 | semua pekan, urutan acak |
Sebagai contoh pembacaan, pekan empat mengerjakan linked list sebagai materi barunya, sambil menguji ulang array dari pekan satu serta two pointer dan sliding window dari pekan tiga. Total soal baru seluruhnya 56, terdiri atas 19 mudah, 27 sedang, dan 10 sulit, atau rata-rata sekitar 4,7 soal baru per pekan. Urutan bloknya mengikuti urutan modul pada jalur ini, dari array sampai greedy dan DP, sehingga soal untuk tiap pekan dapat dipilih langsung dari modul yang bersangkutan. Pekan dua belas berbeda bentuk karena fokusnya bukan blok topik baru, sehingga jumlah soal barunya paling kecil dan ulangannya mencakup semua pekan.
Komposisi tingkat kesulitan#
Komposisi 19 mudah, 27 sedang, dan 10 sulit tidak dipilih acak. Soal mudah menjadi pemanasan blok topik baru, yaitu mengenali bentuk soal tanpa tekanan, sehingga porsinya paling besar pada pekan-pekan awal. Soal sedang menjadi makanan pokok karena inilah tingkat yang paling sering muncul pada wawancara teknis. Soal sulit mendapat satu porsi per pekan mulai pekan empat, dan dua porsi pada pekan greedy dan DP, karena lompatan kesulitan terbesar jalur ini memang terletak di sana.
Sedikit aritmetika menegaskan polanya, yaitu sekitar mudah, sedang, dan sulit dari total 56 soal. Angka itu boleh digeser bila jadwal wawancara sudah dekat, misalnya menambah porsi sedang dan mengurangi mudah pada pekan-pekan akhir. Batas yang wajib dijaga hanyalah jumlah soal baru di bawah enam per pekan, agar sesi ulangannya tidak tergusur.
Daftar soal terkurasi menghemat waktu memilih soal. Blind 75 adalah daftar 75 soal inti yang menjadi dasar banyak daftar latihan lain, sedangkan NeetCode 150 memperluasnya menjadi 150 soal yang dikelompokkan menurut pola dan struktur data. Cara paling sederhana memakainya adalah mengambil soal dari kelompok yang cocok dengan blok topik pekan berjalan, lalu menandai soal yang gagal dikerjakan agar masuk daftar ulangan pekan-pekan berikutnya.
Skrip peringkas jadwal#
Jadwal berbentuk tabel mudah usang bila angkanya digeser, misalnya ketika sisa waktu tinggal sepuluh pekan atau beban soal per pekan diubah. Karena itu, jadwal yang sama dinyatakan sekali lagi sebagai data pada skrip Python berikut, berupa daftar pekan yang setiap barisnya memuat fokus, komposisi tingkat kesulitan, dan daftar ulangannya. Skrip menghitung ulang total, komposisi, dan rincian per pekan setiap kali datanya disunting.
"""Ringkasan jadwal latihan 12 pekan dari daftar pekan."""
# Setiap baris berisi (pekan, fokus, mudah, sedang, sulit, ulangan).
# Kolom ulangan memuat pekan lama yang materinya diuji ulang pada pekan itu.
PEKAN = [
(1, "array", 3, 2, 0, ()),
(2, "hashing", 2, 3, 0, (1,)),
(3, "two pointer dan sliding window", 2, 3, 0, (2,)),
(4, "linked list", 2, 2, 1, (1, 3)),
(5, "stack dan antrian", 2, 2, 1, (2, 4)),
(6, "rekursi dan backtracking", 1, 2, 1, (3, 5)),
(7, "pohon", 2, 2, 1, (4, 6)),
(8, "heap dan antrian prioritas", 1, 2, 1, (5, 7)),
(9, "graf", 1, 3, 1, (6, 8)),
(10, "pengurutan dan pencarian biner", 2, 2, 1, (7, 9)),
(11, "greedy dan DP", 1, 2, 2, (8, 10)),
(12, "wawancara tiruan", 0, 2, 1, ()),
]
total_mudah = sum(p[2] for p in PEKAN)
total_sedang = sum(p[3] for p in PEKAN)
total_sulit = sum(p[4] for p in PEKAN)
total = total_mudah + total_sedang + total_sulit
print(f"total soal baru : {total}")
print(f"komposisi : mudah {total_mudah}, sedang {total_sedang}, sulit {total_sulit}")
print(f"rata-rata : {total / len(PEKAN):.1f} soal baru per pekan")
print()
for pekan, fokus, mudah, sedang, sulit, ulangan in PEKAN:
soal = mudah + sedang + sulit
if pekan == 12:
teks_ulangan = "semua pekan, urutan acak"
elif ulangan:
teks_ulangan = "pekan " + " dan ".join(str(u) for u in ulangan)
else:
teks_ulangan = "-"
print(f"pekan {pekan:2d} : {soal} soal ({mudah}/{sedang}/{sulit}) | ulangan: {teks_ulangan} | {fokus}")total soal baru : 56
komposisi : mudah 19, sedang 27, sulit 10
rata-rata : 4.7 soal baru per pekan
pekan 1 : 5 soal (3/2/0) | ulangan: - | array
pekan 2 : 5 soal (2/3/0) | ulangan: pekan 1 | hashing
pekan 3 : 5 soal (2/3/0) | ulangan: pekan 2 | two pointer dan sliding window
pekan 4 : 5 soal (2/2/1) | ulangan: pekan 1 dan 3 | linked list
pekan 5 : 5 soal (2/2/1) | ulangan: pekan 2 dan 4 | stack dan antrian
pekan 6 : 4 soal (1/2/1) | ulangan: pekan 3 dan 5 | rekursi dan backtracking
pekan 7 : 5 soal (2/2/1) | ulangan: pekan 4 dan 6 | pohon
pekan 8 : 4 soal (1/2/1) | ulangan: pekan 5 dan 7 | heap dan antrian prioritas
pekan 9 : 5 soal (1/3/1) | ulangan: pekan 6 dan 8 | graf
pekan 10 : 5 soal (2/2/1) | ulangan: pekan 7 dan 9 | pengurutan dan pencarian biner
pekan 11 : 5 soal (1/2/2) | ulangan: pekan 8 dan 10 | greedy dan DP
pekan 12 : 3 soal (0/2/1) | ulangan: semua pekan, urutan acak | wawancara tiruanTiga baris pertama keluaran adalah total dan komposisinya, sedangkan dua belas baris berikutnya adalah versi ringkas tabel jadwal di atas. Untuk memadatkan jadwal menjadi sepuluh pekan, misalnya, blok array dan hashing cukup digabung menjadi satu pekan lima soal, angka pekan-pekan berikutnya digeser, dan skrip langsung melaporkan total barunya. Bagian yang wajib dipertahankan saat menyunting data hanyalah dua sesi ulangan per pekan, karena prinsip berjarak itulah yang paling murah dipertahankan dan paling mahal dipulihkan bila pernah ditinggalkan.
Wawancara tiruan di pekan akhir#
Blok topik berakhir pada pekan sebelas, dan pekan dua belas sengaja diberi fokus berbeda, yaitu wawancara tiruan (mock interview). Bentuknya sesi 45-60 menit yang meniru wawancara sungguhan, lengkap dengan satu soal baru, pewawancara yang tidak memberi petunjuk, dan kewajiban menyuarakan proses berpikir dari awal sampai akhir. Mulai titik ini, latihan soal bukan lagi fokus utama karena keterampilan yang perlu diasah sudah bukan pemahaman materi, melainkan pengelolaan waktu dan keputusan di bawah tekanan.
Pembagian waktu yang seimbang untuk satu sesi tiruan adalah lima menit klarifikasi, dua puluh lima menit untuk Match dan Plan, dua puluh menit Implement, dan sepuluh menit terakhir untuk Review serta Evaluate. Pasangan latihan dapat saling bertukar peran, dan bila pasangan tidak tersedia, rekaman audio beserta catatan waktu per tahap sudah cukup untuk meninjau diri. Setelah setiap sesi, catat tiga hal, yaitu tahap yang melompat terlalu cepat, pertanyaan klarifikasi yang terlewat, dan kompleksitas yang salah taksir. Catatan itulah yang menjadi bahan ulangan menyeluruh pada pekan dua belas.
Ringkasan#
- Peta jalan menempatkan satu blok topik per pekan, dari array sampai greedy dan DP, dengan 56 soal baru berkomposisi 19 mudah, 27 sedang, dan 10 sulit.
- Prinsip berjarak dijalankan lewat dua sesi ulangan per pekan, yaitu materi pekan sebelumnya dan materi pekan tiga sebelumnya, lalu ulangan menyeluruh berisi acakan seluruh pekan pada pekan dua belas.
- Daftar terkurasi seperti NeetCode 150 menyediakan soal yang sudah dikelompokkan per pola, sehingga pemilihan soal per pekan tidak dimulai dari nol.
- Pekan akhir diganti menjadi wawancara tiruan 45-60 menit karena keterampilan yang tersisa untuk dilatih adalah pengelolaan waktu, bukan pemahaman materi.
Referensi#
- NeetCode 150 — NeetCode — Daftar 150 soal latihan terkurasi yang dikelompokkan menurut pola dan struktur data.
- Spaced repetition — Wikipedia — Prinsip pengulangan materi dengan jarak yang makin renggang, dasar kolom ulangan pada jadwal ini.