Bilişim Dışı Mezun, Geliştirici Olarak Hayatta Kalmak
#14. Yeni Başlayan Geliştiricilerin Sıkça Sorduğu Teknik Görüşme Soruları
- Kod Alanı: Programın kaynak kodunun depolandığı alandır. CPU, kod alanında depolanan komutları (kaynak, fonksiyon, kontrol ifadeleri) alır ve işler. Örneğin, C dilinde yazılmış bir program çalıştırıldığında, kod alanında bu programın kaynak kodu depolanır.
- Veri Alanı: Küresel değişkenlerin ve statik değişkenlerin depolandığı alandır. Program başlangıcında tahsis edilir ve program sonlandırılana kadar yok olmaz. Örneğin, C dilinde yazılmış bir program çalıştırıldığında, veri alanında bu programda tanımlanan küresel değişkenler veya statik değişkenler depolanır.
- Yığın Alanı: Programın kullandığı geçici bellek alanıdır. Fonksiyon çağrılarıyla ilişkili yerel değişkenler ve parametreler depolanır. Fonksiyon çağrısıyla birlikte tahsis edilir ve fonksiyon sonlandığında yok olur. Örneğin, C dilinde yazılmış bir fonksiyon çağrıldığında, ilgili fonksiyonun kullandığı yerel değişkenler veya parametreler yığın alanına tahsis edilir.
- Yığın Alanı: Kullanıcının bellek alanını dinamik olarak tahsis ettiği ve serbest bıraktığı alandır. Örneğin, C dilinde malloc() fonksiyonu kullanılarak dinamik olarak bellek tahsis edildiğinde, tahsis edilen bellek alanı yığın alanına depolanır.
- Yığın: Son Giren İlk Çıkar (LIFO) prensibine dayalı bir veri yapısıdır. Örneğin, bilgisayarda 'Geri' düğmesi yığına benzer. Önceki ziyaret edilen sayfalar yığına kaydedilir ve 'Geri' düğmesine basıldığında en son kaydedilen sayfa çıkarılıp gösterilir.
- Kuyruk: İlk Giren İlk Çıkar (FIFO) prensibine dayalı bir veri yapısıdır. Örneğin, bankada sıra numarası alıp kuyruğa girmek kuyruğa benzer. En önce gelen kişi en önce hizmet alır ve en sonra gelen kişi en sonra hizmet alır.
- Ağaç: Verileri hiyerarşik bir yapı şeklinde temsil eden bir veri yapısıdır. Örneğin, HTML'nin DOM ağacı ağaca benzer. HTML sayfasının yapısı ağaç şeklinde gösterilir ve kök düğüm olan html etiketiyle başlar ve alt düğümler sırayla gösterilir.
- Yığın: İkili ağaç yapılarından biri olup, maksimum yığın ve minimum yığına ayrılır. Örneğin, öncelikli kuyrukta en yüksek önceliğe sahip verilerin yığının kök düğümünde, ardından daha düşük önceliğe sahip verilerin alt düğümlerde yer aldığı maksimum yığının bir örneğidir.
- RDBMS: Verileri yapısal olarak tanımlayan ve yöneten bir veritabanıdır. Verileri dağıtılmış olarak depolayabilir ve düzenleme kolaydır. Örneğin, MySQL, Oracle, MS-SQL vb., RDBMS'nin tipik örnekleridir.
- NoSQL: Verileri esnek bir şema ile depolayan ve yöneten bir veritabanıdır. Büyük veri işleme ve depolama için uygundur ve ölçeklenebilirliği yüksektir. Örneğin, MongoDB, Cassandra, HBase vb., NoSQL'nin tipik örnekleridir.
[Prosedürel ve Nesne Yönelimli]
- Prosedürel Programlama: Sıralı işlemeyi vurgulayan bir programlama tekniğidir. C, Pascal gibi diller prosedürel dillere örnektir.
- Nesne Yönelimli Programlama: Nesne (Object) kavramına dayalı olarak verileri ve prosedürleri mantıksal olarak birleştirerek işleme yöntemidir. Java, C++, Python gibi diller nesne yönelimli dillere örnektir. Örneğin, bir araç simülasyon programında aracı nesne olarak temsil ederek, aracın sahip olduğu nitelikleri (renk, ivme vb.) veri olarak, aracın yaptığı işlevleri (hareket etmek, durmak vb.) yöntem olarak ifade ederiz.
[Geçersiz Kılma ve Aşırı Yükleme]
- Geçersiz Kılma: Üst sınıfın sahip olduğu bir yöntemi alt sınıfta yeniden tanımlayarak kullanmaktır. Alt sınıfta üst sınıfın yöntemini çağırdığımızda, üst sınıfın yönteminden ziyade alt sınıfta yeniden tanımlanan yöntem yürütülür. Örneğin, Java'daki toString() yöntemi Geçersiz Kılma örneğidir.
- Aşırı Yükleme: Aynı isimde birden fazla yöntem tanımlama ancak parametrelerin tür ve sayısını farklılaştırarak çeşitli çağrı türlerine yanıt vermeyi sağlamaktır. Parametreleri farklı ancak aynı isme sahip birden fazla yöntem çalışır. Örneğin, Java'daki print() yöntemi Aşırı Yükleme örneğidir.
[Sayfa Değiştirme Algoritmaları]
- FIFO: Fiziksel belleğe yüklenen en eski sayfayı değiştirir. Bilgisayarda meydana gelen 'Görev Çubuğundan Kapat' işlemi de FIFO algoritmasına benzer. En önce başlatılan program en son gösterilip kapatılır.
- LRU: En uzun süre kullanılmayan sayfayı değiştirir. Sık kullanılmayan uygulamalar arasından eski uygulamaları sonlandıran 'Uygulama Kapatma Uygulaması' da LRU algoritmasına benzer.
- LFU: En az başvurulan sayfayı değiştirir. Örneğin, tarayıcıda yeni açılan sekmeler arasında en az kullanılan sekmeyi kapatan 'Sekme Kapat' işlevi de LFU algoritmasına benzer.
- MFU: En çok başvurulan sayfayı değiştirir. MFU algoritması pek kullanılmaz.
- İşlem: İşletim sisteminden tahsis edilen yürütme iş birimidir ve programı ifade eder. Birden fazla işlem aynı anda yürütülürse, her işlem bağımsız bir bellek alanı ve CPU tahsisi alır.
- İplik: Bir işlem içinde çalışan yürütme iş birimidir. İşlemin tahsis ettiği kaynakları paylaşarak yürütülür. Örneğin, web tarayıcısında her sekme işlem değil, iplik olarak çalışır.
- Uygulama Katmanı: Kullanıcıyı ve ağı bağlayan katmandır. HTTP, FTP, SMTP gibi protokoller bu katmanda bulunur.
- Sunum Katmanı: Verilerin gösterim biçimini tanımlayan katmandır. JPEG, MPEG, SSL gibi protokoller bu katmanda bulunur.
- Oturum Katmanı: İletişim kuran iki sistem arasında oturum yönetimi sağlayan katmandır.
- Taşıma Katmanı: Veri aktarımı sorumluluğunu üstlenen katmandır. TCP, UDP gibi protokoller bu katmanda bulunur.
- Ağ Katmanı: Veri aktarmak için rota belirleyen katmandır. IP, ICMP gibi protokoller bu katmanda bulunur.
- Bağlantı Katmanı: Fiziksel adres (MAC adresi) aracılığıyla veri aktaran katmandır. Ethernet, Token Ring gibi protokoller bu katmanda bulunur.
- Fiziksel Katman: Fiziksel bağlantı ve iletim ortamına ilişkin iletişimi sağlayan katmandır.
- TCP: Bağlantılı hizmettir ve verileri güvenilir bir şekilde aktaran bir yöntemdir. 3 yollu el sıkışma ve 4 yollu el sıkışma yöntemleri aracılığıyla bağlantı kurulur veya sonlandırılır. Örneğin, bir web sitesinde oturum açmak veya dosya aktarmak için TCP yöntemi kullanılır.
- UDP: Bağlantısız hizmettir ve veri aktarmak için sinyalleşme prosedürünü uygulamaz. Verilerin güvenilirliği düşüktür ancak işleme hızı hızlıdır. Örneğin, video akışı veya çevrimiçi oyun gibi durumlarda, hızlı aktarım önemli olduğundan UDP yöntemi kullanılır.
Yorumlar0