Yazılım görüşmelerinde soruya yaklaşım tekniği

Daniel Habib isimli bir programcı, yazılım görüşmelerinde konu ne olursa olsun nasıl bir yaklaşım sergilemeniz gerektiği konusunda bir spreadsheet oluşturmuş.

1. İnceleme

  • İnput’un ne olduğunu açıkça belirttim mi?
  • İstenen output’un ne olduğunu netleştirdim mi?
  • Elle çözülebilecek basit bir örnek oluşturdum mu?
  • Tüm aksiyomları yazdım mı?
  • Tüm constraints‘ler benim için ok midir?
  • Tüm akla yatkın varsayımları yazıp türettim mi?

2. Strateji

  • Brute force bir çözüm için beyin fırtınası yaptım mı?
  • Brute force çözümün çalışma zamanını analiz ettim mi?
  • Brute force çözümün space gereksinimini analiz ettim mi?
  • İnput’un memory üzerindeki kapladığı büyüklük ne kadar?
  • Daha iyi, daha karmaşık bir çözüm bulabildim mi?
  • Bu çözümün time complexity‘sini analiz ettim mi?
  • Bu çözümün space complexity‘sini analiz ettim mi?
  • Bu çözümü doğrudan ilk uyguladığım basit çözümümle karşılaştırdım mı?
  • Kodlamaya başladığımda kendime güveniyor muyum?
  • Aklıma gelen tüm yaklaşımları düşündüm mü?
  • İstediğim stratejiyi açıkça yazdım mı?
  • Açıkça base case‘leri dikkate aldım mı? Takıldığım durumlarda ne kadar iyi idare ettim?

3. Kodlama

  • Kodum ne kadar temiz yazılmıştı?
  • Off-by-one hatalarını kontrol ettim mi? Yani index’lerin 0’dan başlaması veya while içerisinde <= yerine < kullanımı gibi.
  • Kodlama sırasında hangi fonksiyonları kullanacağımı tahmin edebildim mi?
  • İnceleme kısmında yaptığım “Beyin fırtınası stratejim” sorunu çözdü mü?
  • Kodlama süreci ne kadar sorunsuzdu?
  • Yazdığım kod ile çözümümü anlatabildim mi?
  • Kodumdaki ilginç fonksiyonların avantajlarından yararlandım mı?

4. Review

  • Time complexit’yi kanıtladım mı?
  • Space complexit’yi kanıtladım mı?
  • Farklı test senaryoları yazıp bunları uyguladım mı?
  • Ne kadar önemsiz olursa olsun satır satır mı gittim?
  • Kodumu gözden geçirirken herhangi bir değişiklik yapmam gerekti mi?

Kaynak: https://docs.google.com/spreadsheets/d/1gy9cmPwNhZvola7kqnfY3DElk7PYrz2ARpaCODTp8Go/htmlview?pru=AAABfLycr3M*TqxdBeNP9JuAGHyhyIwE_A

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.