Pratikte Kullandığım Veri Yapıları ve Algoritmalar
(blog.pragmaticengineer.com)Mülakatlarda sıkça sorulan algoritma sorularının pratikte kullanılmadığı sık sık söylenir,
yazarın Skype/Uber gibi şirketlerde gerçekten çalışırken sık kullandığı şeyleri örneklerle derlediği ve başlangıç için okunabilecek kaynaklar önerdiği bir yazı
Grafikler ve grafik araması: Skype & Uber
Ağırlıklı grafikler ve en kısa mesafe: SkyScanner
Sıralama: Skype
Hash table ve hashing: her yerde
Stack ve queue: bazen
Kriptografi (Crypto), olasılık teorisi ve tahmin, Hexagonal Grid ve hiyerarşik indeksler: Uber
- Mülakatlardaki algoritmalar ve veri yapıları hakkında
Popüler algoritmaları ya da sıra dışı veri yapılarını bilmek önemli değil. Algoritmanın ne olduğunu bilmek ve Greedy algoritma gibi basit algoritmaları düşünebilmek gerekir.
Hash table, queue & stack gibi temel veri yapılarını bilmek gerekir ama Dijkstra ya da A* gibi özel algoritmaları ezberlemek gerekmez.
Benim sıralamanın ötesindeki algoritmalarla yaptığım işlerin çoğu, onları açıp bakmak ve anlamaya çalışmak düzeyindeydi.
Red-Black ya da AVL tree gibi sıra dışı veri yapıları için de aynı şey geçerli.
Pratikte bu tür veri yapılarını kullanmam hiç gerekmedi; gerekse bile yeniden aratıp öğrenirdim.
Silikon Vadisi'nde dinamik programlama ya da sıra dışı veri yapıları soran mülakat soruları giderek daha yaygın hale geliyor.
Bu tür sorular harika mühendisleri seçmeye yardımcı olabilir ama gerçekte ileri algoritma bilgisi gerektirmeyen işleri çok iyi yapan insanları kaçırmanıza da yol açar.
Gerçekten gerekli olan şey, en yaygın veri yapılarını tanımak ve bir problemi çözmek için en basit algoritmayı araç olarak kullanabilmektir.
Veri yapıları ve algoritmalar sadece bir araç setidir.
Yazılım geliştirirken bunları güvenle kullanabilmeniz gereken araçlardır.
Bu araçları iyi bilirseniz, bunları kullanan kodları okumaya daha alışkın hale gelirsiniz.
Ayrıca zor problemleri çözen çözümleri uygularken de daha fazla özgüven kazanırsınız.
Temelleri öğrenmek için şunları öneriyor. (bağlantılar yorumlarda)
-
GeekforGeeks'in Data Structures Overview'u (çevrimiçi yazı derlemesi)
-
HackerRank'in DataStructure Collection'ı (soru çözerek öğrenme)
-
Grokking Algorithms: kavramları görsellerle anlatan algoritma kitabı (çeviri mevcut)
-
The Algorithm Design Manual ve Algorithms: Fourth Edition fazla kuru; her gün pratikte kullanmak için çok uygun değiller.
3 yorum
https://geeksforgeeks.org/overview-of-data-structures-set-1-linear-dat…
https://www.hackerrank.com/domains/data-structures
İngilizce: https://www.amazon.com/gp/product/1617292230/?tag=amzneu-20
Korece baskı (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
Yazının başında geçen, Homebrew geliştiricisi Max Howell’ın Google mülakatında tahtaya ikili ağacı ters çevirmeyi yazamadığı için elenmesiyle ilgili anekdot oldukça meşhurdur.
Gerçek Google geliştiricilerinin %90’ı Homebrew kullanırken, asıl geliştiricinin elenmiş olması da ayrı bir ironi..
O yüzde 90, Homebrew geliştiricisinin uydurduğu bir sayıydı; o tweete de bir Google geliştiricisi bunun kesinlikle yüzde 90 olmadığını yazmıştı diye hatırlıyorum..
Zaten Google’da masaüstünde Ubuntu, dizüstünde ise shell machine kullanıldığı için, pek kullanma durumu da yoktur herhalde