20 poin oleh xguru 2020-07-17 | 3 komentar | Bagikan ke WhatsApp

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

 
xguru 2020-07-17
  • Data Structures Overview dari GeekforGeeks

https://geeksforgeeks.org/overview-of-data-structures-set-1-linear-dat…

  • DataStructure Collection dari HackerRank

https://www.hackerrank.com/domains/data-structures

  • Grokking Algorithms : algoritma untuk memahami konsep lewat gambar

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

 
xguru 2020-07-17

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..

 
lazinism 2020-07-19

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.