Struktur Data dan Algoritma yang Saya Pakai di Dunia Nyata
(blog.pragmaticengineer.com)Sering dikatakan bahwa pertanyaan algoritma yang kerap ditanyakan saat wawancara tidak digunakan di dunia nyata,
namun penulis merangkum hal-hal yang benar-benar sering ia gunakan saat bekerja di Skype/Uber dan lain-lain, lengkap dengan contoh serta rekomendasi bacaan dasar
Graf dan penelusuran graf: Skype & Uber
Graf berbobot dan jarak terpendek: SkyScanner
Sorting: Skype
Hash table dan hashing: di mana-mana
Stack dan queue: sesekali
Kriptografi (Crypto), teori probabilitas dan estimasi, Hexagonal Grid dan hierarchical index: Uber
- Tentang algoritma dan struktur data dalam wawancara
Mengetahui algoritma yang populer atau struktur data yang tidak biasa itu tidak penting.
Yang penting adalah memahami apa itu algoritma, dan mampu memikirkan algoritma sederhana seperti algoritma Greedy.
Anda perlu mengetahui struktur data dasar seperti hash table, queue & stack, tetapi tidak perlu menghafal algoritma khusus seperti Dijkstra atau A*.
Sebagian besar pekerjaan saya yang melampaui sorting sebatas mencari referensinya lalu berusaha memahaminya.
Hal yang sama juga berlaku untuk struktur data khusus seperti pohon Red-Black atau AVL.
Dalam praktiknya saya tidak pernah benar-benar perlu memakai struktur data seperti itu, dan kalau pun perlu, saya akan mencarinya lagi.
Di Silicon Valley, pertanyaan tentang dynamic programming atau struktur data khusus makin umum ditanyakan.
Pertanyaan seperti ini mungkin membantu merekrut engineer hebat, tetapi juga membuat kita gagal merekrut orang-orang yang sangat baik dalam pekerjaan yang sebenarnya tidak membutuhkan pengetahuan algoritma tingkat lanjut.
Yang benar-benar dibutuhkan adalah pemahaman tentang struktur data yang paling umum dan kemampuan memakai algoritma paling sederhana sebagai alat untuk memecahkan masalah.
Struktur data dan algoritma hanyalah sebuah toolset.
Keduanya adalah alat yang harus bisa Anda gunakan dengan percaya diri saat mengembangkan software.
Jika Anda mengenal alat-alat ini dengan baik, Anda akan menjadi lebih terbiasa membaca kode yang menggunakannya.
Anda juga akan lebih percaya diri saat mengimplementasikan solusi untuk memecahkan masalah yang sulit.
Untuk memahami hal-hal dasar, saya merekomendasikan yang berikut ini. (tautan ada di komentar)
-
Data Structures Overview dari GeekforGeeks (kumpulan tulisan online)
-
DataStructure Collection dari HackerRank (belajar sambil memecahkan soal)
-
Grokking Algorithms: memahami algoritma melalui gambar (buku terjemahan)
-
The Algorithm Design Manual dan Algorithms: Fourth Edition terlalu kering dan kurang cocok untuk dipakai sehari-hari di dunia nyata.
3 komentar
https://geeksforgeeks.org/overview-of-data-structures-set-1-linear-dat…
https://www.hackerrank.com/domains/data-structures
Versi bahasa Inggris: https://www.amazon.com/gp/product/1617292230/?tag=amzneu-20
Edisi bahasa Korea (Hanbit Media): https://www.hanbit.co.kr/store/books/look.php?p_code=B5896248244
The Algorithm Design Manual https://www.amazon.com/gp/product/1848000693?tag=amzneu-20
Algorithms : 4th Edition https://www.amazon.com/gp/product/032157351X/?tag=amzneu-20
Anekdot di awal tulisan tentang Max Howell, pengembang Homebrew, yang gagal dalam wawancara Google karena tidak bisa menuliskan pembalikan pohon biner di papan tulis, memang sangat terkenal.
Ironisnya, 90% pengembang Google sebenarnya memakai Homebrew, tetapi justru pengembangnya sendiri gagal lolos..
90 persen itu angka yang asal dikeluarkan oleh developer Homebrew, dan kalau tidak salah ada developer Google yang membalas tweet itu dengan mengatakan bahwa jelas bukan 90 persen..
Bagaimanapun, di Google desktop pakai Goobuntu dan laptop pakai shell machine, jadi memang tidak terlalu ada kesempatan untuk memakainya.