20 puan yazan xguru 2020-07-17 | 3 yorum | WhatsApp'ta paylaş

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

 
xguru 2020-07-17
  • GeekforGeeks’in Data Structures Overview’u

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

  • HackerRank’in DataStructure Collection’ı

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

  • Grokking Algorithms : kavramları görsellerle anlamayı sağlayan algoritmalar kitabı

İ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

 
xguru 2020-07-17

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

 
lazinism 2020-07-19

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