İş görüşmelerinde en sık sorulan yazılım mülakat soruları ve cevapları neler?
İlk yazılım mühendisliği mülakatınızdan ne beklemelisiniz?
Bu sorunun cevabı, başvurduğunuz role bağlıdır!
Yazılım mühendisliği mülakatlarını iki kategoride değerlendirebiliriz: ilgilendiğiniz teknoloji/alan spesifik ve genel programlama.
Teknoloji ve alan özgü bir rol için mülakatlara hazırlanıyorsanız, sorular muhtemelen uzmanlaştığınız teknolojiler odaklı olacaktır.
Programlamanın genel ilkelerine hakim olmanız yazılım mülakatlarında çok daha başarılı olmanızı sağlayacaktır.
Bu blog yazısındaki sorular ile genel problem çözme ve kodlama yeterliliğinizi test edebilirsiniz.
Yazılım mülakatlarına girmeden önce sizin için hazırladığımız rehber niteliğindeki bu sorulara mutlaka göz atmalısınız!
En Popüler Yazılım Mülakat Soruları ve Cevapları
Yazılım nedir? Yazılım kategorileri nelerdir?
Bilgisayar yazılımı, yazılım programını, belgelerini ve yazılımın nasıl kullanılacağına ilişkin kullanım kılavuzunu içeren bir pakettir. Yazılım mühendisliği ise, yazılım sistemi geliştirme ile ilişkili bir mühendislik dalıdır.
Yazılım kategorileri 6’ya ayrılır:
- Sistem yazılımı
- Uygulama yazılımı
- Gömülü yazılım
- İnternet uygulamaları
- Yapay Zeka yazılımı
- Bilimsel yazılım.
Yazılım süreci veya Yazılım Geliştirme Yaşam Döngüsü (SDLC) nedir?
Yazılım Geliştirme Yaşam Döngüsü, yazılım geliştirme sürecindeki her aşamayı yani Gereksinim Toplama, Sistem Analizi, Tasarım, Kodlama, Test, Bakım ve Belgeleme sırasına göre sistematik olarak geliştirilmesidir.
SDLC Modelleri, geliştirme sürecinin gerekliliklerine göre benimsenir. Hangi modelin uygun olduğunu sağlamak için yazılımdan yazılıma çok olabilir.
Şelale Modeli, Yinelemeli Model, Spiral modeli, V-modeli ve Büyük Patlama Modeli gibi çeşitli SDLC modelleri mevcuttur.
Framework ve library arasındaki fark nedir?
Framework ve library, ortak sorunları çözmeye yardımcı olmak için kullanılan başka biri tarafından yazılmış kodlardır.
Bu iki terim arasındaki teknik fark, kontrolün tersine çevrilmesi adı verilen bir terimde yatmaktadır. Library size bazı özellikler vererek kullanmanızı sağlar, bu şekilde almış olduğunuzu kodu kendi sisteminize uygularken size kodu nerede ve ne zaman kullanacağınıza karışmaz.
Framework ise, library’in tersine kullanacağız özelliğe göre kodu nerede ve ne zaman kullanacağınızı belirtir.
Error handling sürecini nasıl yönetirsiniz?
Gerçek hayatta olduğu gibi kod yazarken de hatalarımız bizi başarıya taşır.
Kod yazarken bir takım önlemler koyarak hataları azaltabiliriz.
Bir hatayı gözlemlemek için kodlarınızın temiz ve anlaşılır olması gerekli.
Bazı durumlarda ise, tam olarak nerede hata yapıldığı belirtilmeli. Bunun için Try-Catch yöntemini kullanabilirsiniz.
Interface-oriented, Object-oriented ve Aspect-oriented arasındaki farkı açıklayın.
- Interface-oriented, sözleşmeye dayalıdır.
- Object-oriented, tek bir amacı olan parçalı nesneler yazmanın bir yoludur.
- Aspect-oriented ise, yazılan kodu çeşitli nesnelerin ana görevleri ve yardımcı görevlerin bağımsız nesneler tarafından taşınmasını sağlayacak şekilde ayırmaktır.
Agile yazılım geliştirme süreci nedir?
Öncelkle, Agile proje yönetimi, projenin başarılı şekilde tamamlanmasına yönelik yinelemeli bir yaklaşım benimser.
Çevik yaklaşımların yinelemeli doğası nedeniyle, beklentilerin uyumlu olmasını sağlamak ve proje yöneticisinin süreç boyunca değişikliklere uyum sağlamasını sağlamak için müşteri ile sürekli katılım gereklidir.
Agile felsefesini uygulamak için kullanılan birçok farklı proje yönetimi metodolojisi vardır. En yaygın olanlardan bazıları Kanban, Extreme Programming (XP) ve Scrum’dur.
Fonksiyonel programlama nedir?
Matematiksel bir fonksiyon kavramlarını kullanan bir programlama yöntemidir. Programın durumuna bakılmaksızın sonuçlar üreten matematiksel fonksiyonlar olarak hesaplama araçları sağlar.
program(girdiler) = çıktılar
Fonksiyonel program birbirini çağıran, girdilerini istenen çıktıya dönüştüren ufak programcıklardan oluşan bir ağaç olarak şekillenir.
Responsive design nedir?
- Responsive design: Öncelikle resposive tasarımla oluşturulan web siteleri, görüntüleri ölçekleyen, metni saran ve düzeni ayarlayan kesme noktalarını hedeflemek için medya sorgularını kullanır, böylece web sitesi, masaüstleri ve mobil cihazlar arasındaki fark gibi herhangi bir ekran boyutuna ‘sığacak şekilde küçülebilir’.
- Fluid design: Fluid tasarımla oluşturulan web siteleri, genişlikler için göreli göstergeler olarak yüzdeleri kullanır.
- Fixed design: Fixed tasarım kullanılarak oluşturulan web siteleri, sabit piksel genişliklerine dayanır. Sabit boyutlara sahip bir tasarım, bazen kurulup çalıştırmanın en hızlı yolu olsa da, birden çok cihazda daha az kullanıcı dostu bir deneyim sağlayacaktır.
Bir uygulamadaki hataları test etme ve bulma süreciniz nedir?
Yazılım testi, yazılım geliştirmenin evrensel olarak beklenen bir parçasıdır Çeşitli geliştirme aşamalarında gerçekleştirilecek test ve değerlendirme setleri oluşturmanız gerekir.
Genellikle bu, uygulamayı bir bütün olarak ve bileşen parçaları olarak görmek, ardından diğerlerinden daha fazla risk altında olduğunu düşündüğünüz alanlarda öncelikler belirlemek anlamına gelir. Daha sonra işlevselliği doğrulamak için testler yapılır ve tespit edilen kusurlar daha sonra kaydedilir. Bu kusurlar daha sonra etkilerine ve ciddiyetine bağlı olarak önceliklendirilebilir.
Stack nedir?
Stack, üç temel işlemi olan doğrusal bir veri yapısıdır: push (üst taraftan yığına bir öğenin yerleştirilmesi), pop (yığına eklenen en son öğenin kaldırılması).
Bazı stack uygulamaları, bir yığındaki bir öğeyi değiştirmeden görmenizi sağlayan bir işlev olan gözetlemeye de izin verir. Yığınlar, son giren ilk çıkar bir yapı kullanır ve bu nedenle yığına eklenen son öğe, kaldırılabilen ilk öğedir. Kuyruklar, ilk giren ilk çıkar yapısıyla çalışan benzer bir veri yapısıdır. Yığınlar genellikle bir dizi veya bağlantılı bir liste ile uygulanır. Bir röportajda bir yığın uygulamanız ve farklı işlemler uygulamanız istenebilir.
QuickSort’u açıklamak için Big O gösterimini kullanın.
QuickSort, genellikle ortalama durumlarda en iyi sonucu verir, ancak en kötü durum senaryoları vardır.
Ortalama olarak, O (N log N) ama en kötü durumda O (N2). En kötüsüne odaklanmak yerine ortalama durum performansının çok önemli olduğu durumlarda hızlı sıralamayı kullanmak isteyeceksiniz. Yanıt verebilmek için algoritmalar ve performansları hakkında derin ve nüanslı bir anlayışa sahip olmanız gerekir.
Yazılım test süreçlerini açıklayın.
Yazılım mülakat soruları arasında en sık sorulan sorulardan biri de test süreçleridir. Bu süreç büyük ölçüde iki kategoriye ayrılabilir:
- Black Box Testing, test edilen öğenin iç yapısının / tasarımının / uygulamasının test eden kişi tarafından bilinmediği bir yazılım test yöntemidir.
- White Box Testing, test edilen öğenin iç yapısının / tasarımının / uygulamasının test eden tarafından bilindiği bir yazılım test yöntemidir.
Fizibilite çalışması nedir?
Yazılım projesi geliştirmenin kuruluşa ne kadar pratik ve faydalı olacağını bulmak için bir ölçüdür. Yazılım analizörü, projenin ekonomik, teknik ve operasyonel fizibilitesini bilmek için bir çalışma yürütür.
- Ekonomik: Eğitim maliyetini, ek ve araçların maliyetini ve projenin maliyet ve faydalarının genel tahminini içerir.
- Teknik: Teknik yönü değerlendirir. Bu sistemi geliştirmek mümkün mü? Yazılımın üzerinde çalışacağı makinelerin ve işletim sisteminin uygunluğunun değerlendirilmesi, yazılım geliştirme bilgisi ve bu proje için mevcut araçlar.
- Operasyonel: Burada analistin, organizasyonun proje talebine göre yapılan değişikliklere sorunsuz bir şekilde uyum sağlayabileceğini değerlendirmesi gerekir. Problem tahmini maliyette çözmeye değer mi?
Tüm bunları inceledikten sonra nihai fizibilite raporu oluşturulur.
En çok kullandığınız tasarım kalıpları nelerdir ve bunları hangi bağlamlarda kullanıyorsunuz?
Bu soru, yazılım mülakat soruları arasında en önmeli sorulardan biridir. Daha soyut, teorik kavramlar hakkındaki bilginizi ölçer.
Tasarım kalıpları, yazılım geliştiricilerin yazılım geliştirme sırasında karşılaştıkları genel sorunların çözümüdür. Bu çözümler, uzun bir süre boyunca sayısız yazılım geliştirici tarafından deneme yanılma yoluyla elde edilmiştir.
Tasarım kalıpları yazılım projelerindeki genel problemleri en iyi yolla çözmeyi planlamaktadır. Deneyimli yazılımcıların object-oriented konusundaki best practice’ lerinden yararlanılarak farklı türlerde kalıplar tasarlanmıştır. Tasarlanan bu kalıplar projelerdeki esnekliği, okunabilirliği ve yazılabilirliği kolaylaştırmaktadırlar.
Bir projenin başarısını nasıl belirlersiniz?
Yüksek kaliteli yazılım yayınlamak hayati önem taşırken, kullanıcının ve işletmenin ihtiyaçlarını karşılamayan yazılımlar çok az değer üretir.
Faaliyet izleme, durum raporları ve milestone kontrol listelerini kullanarak proje yürütme süreçleri ölçülebilir.
Bir yazılım projesine olan ihtiyaca göre kullanılan birçok yönetim aracı türü vardır. Bunlardan bazıları; Pert Grafiği, Gantt Grafiği, Kaynak Histogramı, Durum Raporları’dır.
API nedir?
API (Application Programming Interface – Uygulama Programlama Arayüzü), karmaşıklığı yazılım geliştiricilerden gizleyen, kodları düzenleyen ve bileşenleri yeniden kullanılabilir hale getiren bir mekanizmadır.
API’nin Türleri Nelerdir?
- Open API (diğer adıyla Public API) : Minimum kısıtlama ile geliştiriciler ve diğer kullanıcılar tarafından herkesin kullanımına açık API’lerdir. Kayıt, API Anahtarı veya OAuth kullanımını gerektirebilir veya tamamen açık olabilirler. Verilere veya hizmetlere erişmek için harici kullanıcılara odaklanırlar.
- Internal API (diğer adıyla Private API) : Harici kullanıcılardan gizlenir ve yalnızca dahili sistemler tarafından açığa çıkarılır. Internal API’ler, şirket dışındaki tüketim için değil, daha çok daha iyi üretkenlik ve hizmetlerin yeniden kullanımı için farklı dahili geliştirme ekiplerinde kullanılmak üzere tasarlanmıştır.
- Partner API : Stratejik iş ortaklarına veya stratejik iş ortakları tarafından sunulan API’lerdir. Herkese açık değildir ve bunlara erişmek için özel yetkilere ihtiyaçlar vardır. Open API’ler gibi, Partner API’ler de buzdağının görünen kısmıdır çünkü bunlar en görünür olanlardır ve şirket sınırlarının ötesinde iletişim kurmak için kullanılırlar.
- Composite API : Composite API’ler birden çok veri veya hizmet API’sini birleştiren API’lerdir. Bir API oluşturma aracının API düzenleme yetenekleri kullanılarak oluşturulurlar. Geliştiricilerin tek bir aramada birkaç uç noktaya erişmesine izin verir.