Önceki bölüm: Bölüm 3— Mülakat Hazırlığı ve Davranışsal Sorular

Big O; algoritmaların etkinliğini tanımlamak için kullandığımız dil ve metriktir. Bu kavramı tam olarak anlamamak, geliştirdiğiniz algoritmaya gerçekten zarar verebilir.

Şu senaryoyu düşünelim: Hard diskte bir dosyanız var. Bu dosyayı ülkenin herhangi bir yerinde yaşayan bir arkadaşınıza göndermeniz ve olabildiğince hızlı bir şekilde ulaştırmanız gerekiyor. Nasıl göndermelisiniz? Çoğu insanın ilk düşüncesi e-posta, FTP veya başka bir elektronik aktarım aracı olabilir. Küçük bir dosyaysa, kesinlikle haklısınız. Havaalanına gitmek, uçağa binmek ve arkadaşınıza teslim etmek 5–10 saat sürer. Ama ya dosya gerçekten çok büyük olsaydı? Fiziksel olarak uçakla teslim etmek daha hızlı olur…


Önceki bölüm: Bölüm 2— Özgeçmiş

Mülakata Hazırlanma Çizelgesi

Özgeçmişinizin her bir projesini veya bileşenini inceleyin ve bunlardan ayrıntılı olarak bahsedebileceğinizden emin olun. Şöyle bir çizelge doldurmak size yardımcı olabilir:

Yatay kolonlarda özgeçmişinizin tüm önemli yönlerini içeren projeleri, işleri veya etkinlikleri listelemelisiniz. Dikey kolonlarda ise sorulabilecek soruları yazmalısınız.

Bu tabloya mülakattan önce çalışın. Her öyküyü birkaç anahtar kelimeye indirgemek, tabloya çalışmanızı ve sonrasında hatırlamanızı kolaylaştırabilir. Bu tabloyu dikkat dağıtıcı olmayacak şekilde mülakatınız sırasında önünüze de koyabilirsiniz.

Ayrıntılı olarak konuşabileceğiniz bir kaç projeniz olduğundan emin olun. Teknik bileşenleri derinlemesine tartışabiliyor olmalısınız. Bunların merkezi rol oynadığınız projeler olmasına özen gösterin.

Teknik Projelerinizin Detaylarına Hakim Olun

Hazırlığınızın bir parçası olarak, iki veya…


Önceki bölüm: Bölüm 1 — Mülakat Süreci

Bir mülakat aslında mülakatın çok öncesinde başlar. Bu sürece geç başlamış olmak sizi endişelendirmesin. Birazdan bahsi geçecek olan adımları olabildiğince yakından takip edin ve hazırlıklı olun.

Doğru Tecrübeyi Edinme

İyi bir özgeçmiş olmadan, mülakat olmaz. Ve güzel tecrübeler olmadan da, iyi özgeçmiş olamaz. Dolayısıyla, bir mülakatın başlayabilmesinin ilk adımı güzel tecrübeler kazanmaktır.

Şu an öğrenci olanlarınız için bunun anlamı şudur:

  • Proje sınıflarına katılın: Kodlama projelerine sahip sınıfları araştırın. Resmi bir işte çalışmaya başlamadan önce, pratik deneyim elde etmenin mükemmel bir yoludur. Proje gerçek dünya ile ne kadar alakalı ise o kadar iyidir.
  • Staj yapın: Okulun ilk…


Hem yazılım geliştiriciler hem de onları işe almak isteyen şirketler için çok sayıda faydalı bilgiye yer verilen Cracking the Coding Interview kitabını okurken aldığım notların düzenlenmiş hallerini paylaşacağım yazı dizisine hoş geldiniz.

Yazar (Gayle Laakmann McDowell) konuya işe alım süreçleriyle ilgili çok önemli bilgilerden bahsederek giriyor. Başta bu bölümlerin sıkıcı gelebileceğinden çekindim ama sonra bu bölümleri de paylaşmaya karar verdim, çünkü pek çok güzel bakış açısı içeriyorlardı. İlk bir kaç bölüm bu şekilde devam edecek ve ardından teknik konulara girişeceğiz…

Hadi başlayalım!

En iyi teknoloji şirketlerinin bir çoğunda algoritma ve kodlama problemleri, görüşme sürecinin en büyük kısmını oluşturur. …


Önceki bölüm: Bölüm 11— Sistemler

İyi tasarıma sahip sistemler oluşturabilmek için takip edebileceğiniz 4 kural olduğunu söylesem? Bu kuralları izleyerek, kodunuzun yapısını ve tasarımını anlayarak, SRP ve DIP gibi ilkelerin uygulanmasını kolaylaştıracak olsanız?

Kent Beck’in dört basit tasarım kuralı, iyi tasarlanmış yazılımlar yaratmada önemli bir etkendir. Ve Kent Beck’e göre eğer bir tasarım basitse, şu kuralları takip etmelidir:

  1. Tüm testleri çalıştırın
  2. Tekrarlanmış kodlar yazmayın
  3. Açıklayıcı olun
  4. Sınıf ve metot sayısını en aza indirin

Kurallar önem sırasına göredir. Şimdi sırasıyla bu kuralları inceleyelim:

Kural #1: Tüm testleri çalıştırın

Bir tasarım, amaçlandığı gibi hareket eden bir sistem üretmelidir. Bir sistem kağıt üzerinde mükemmel bir tasarıma sahip olabilir…


Önceki bölüm: Bölüm 10 — Sınıflar

Bir şehir yapmak isteseniz, tüm ayrıntıları kendiniz yönetebilir miydiniz? Muhtemelen hayır. Mevcut bir şehri yönetmek bile bir kişi için çok fazladır. Şehirler yine de çalışmaya devam eder, çünkü kentlerin belirli kısımlarını, su sistemlerini, güç sistemlerini, trafiğini, kolluk kuvvetlerini, bina kodlarını vb. yöneten bir takım insanlar vardır. Bazıları bu büyük resmin sorumluluğunu üstlenirken diğerleri ayrıntılara odaklanır. Bireylerin ve yönettikleri bileşenlerin büyük resmi anlamaksızın etkili bir şekilde çalışmasını mümkün kılan, soyutlama ve modülerlik düzeyleridir.

Temiz kod da, soyutlamanın daha düşük seviyelerinde bunu başarmamıza yardımcı olur.

Oluşturma Aşamalarının Kullanımdan Ayrılması

Oluşturma (construction), kullanımdan çok farklı bir süreçtir. Uygulama nesneleri oluşturulurken ve…


Önceki bölüm: Bölüm 9 — Birim Testleri

Sınıf Düzeni

Java kodlama standartlarına (code conventions) göre, bir sınıf değişkenlerle başlamalıdır. Eğer varsa, public static sabitler önce gelmelidir. Ardından private static değişkenler ve onu takip eden private instance (örnek) değişkenleri. public bir değişkene sahip olmak için gerçekten iyi bir sebebiniz olmalıdır.

Değişkenlerden sonra public fonksiyonlar gelmelidir. public fonksiyonlardan hemen sonra ise public bir fonksiyon tarafından çağrılmış yardımcı private metotlar gelebilir.

Kapsülleme (Encapsulation)

Değişkenlerimizi ve util fonksiyonlarımızı gizli tutmak isteriz, ancak bazen bir değişkeni veya util metodu testlerden erişilebilmesi için protected yapmamız gerekebilir. (Uncle Bob, bir metodun testinin olmasının o metodun kapsüllenmesinden daha önemli olduğuna vurgu yapıyor.)

Sınıflar Küçük Olmalıdır


Önceki bölüm: Bölüm 8— Sınırlar

Mesleğimiz son yıllarda uzun bir yol kat etti. 1997'de hiç kimse Test Driven Development (TDD) kavramını bilmiyordu. Büyük çoğunluğumuzun birim testleri, programlarımızın çalışıp çalışmadığından emin olmak için yazdığı kodlardı. Özenle sınıflarımızı ve metotlarımızı yazar ve sonra bunları test etmek için bazı özel kodlar yazardık.

Bugünlerde, yazdığım her satır kodun beklediğim gibi çalıştığından emin olmak için test yazıyorum. Geçen testlerimi yazdıktan sonra ise, yazdığım kodla sonradan çalışacak herkesin de çalıştırmasına uygun olacak şekilde olduklarından emin oluyorum.

Agile ve TDD hareketleri birçok programcıyı otomatik birim testleri yazmaya teşvik etti ve her geçen gün daha fazla programcı bu…


Önceki bölüm: Bölüm 7— Hata İşleme

Sistemlerimizdeki yazılımları nadiren kontrol ederiz. Bazen üçüncü taraf paketler satın alırız veya açık kaynak kullanırız. Diğer zamanlarda da şirketimizin diğer ekiplerinin bizler için yazdığı bileşenlere bağımlıyızdır. Ve bu yabancı kodları kodumuzla temiz bir şekilde birleştirmek zorunda kalırız.

https://tr.wikipedia.org/wiki/Propaganda_(film)

Üçüncü Taraf Yazılım (Kod) Kullanmak

Bir arayüz kullanıcısı ile arayüz sağlayıcısı arasında doğal bir gerginlik vardır. Üçüncü taraf paketlerin ve çatıların (framework) sağlayıcıları, yazılımlarının geniş kitlelerce kullanılabilir olmaları ve bir çok ortamda çalışabilir olmaları için çabalarlar. Diğer bir taraftan kullanıcılar ise belirli ihtiyaçlara odaklanmış arayüzlerle çalışmak isterler. İşte gerginlik burada başlar.

Bir örnek olması açısından java.util.Map sınıfına bakalım:


Önceki bölüm: Bölüm 6 — Nesneler ve Veri Yapıları

Hata işleme (Error handling), kod yazarken yapmak zorunda olduğumuz şeylerden sadece biri. Bir şeyler yanlış gidebilir ve programımız patlayabilir. Biz programcılar olarak kodumuzu böyle durumlara karşı hazırlamaktan sorumluyuz.

Dönüş Kodları Yerine İstisnaları Kullanın

Eskiden yazdığımız bazı dillerde istisnaları (exception) işleyebileceğimiz ve raporlayabileceğimiz teknikler sınırlıydı. Bunun yerine flagler ya da hata kodları dönüyorduk. Bu yaklaşıma örnek:

public class DeviceController {
...
public void sendShutDown() {
DeviceHandle handle = getHandle(DEV1)…

Büşra Demirci Uzun

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store