50 Yazılım Mühendisliği Mülakat Soruları ve Cevapları
Yeni Öğrenciler için Yazılım Geliştirici Mülakat Soruları ve Cevapları
1) Yazılımın önemli kategorileri nelerdir?
- Sistem yazılımı
- Uygulama yazılımı
- Gömülü yazılım
- Web uygulamaları
- Yapay Zeka yazılımı
- Bilimsel yazılım.
👉 Ücretsiz PDF İndir: Yazılım Mühendisliği Mülakat Soruları ve Cevapları
2) Bir bilgisayar programı ile bilgisayar yazılımı arasındaki temel fark nedir?
Bir bilgisayar programı bir programlama kodunun parçasıdır. İyi tanımlanmış bir görevi yerine getirir. Öte yandan yazılım, programlama kodunu, dokümantasyonu ve kullanım kılavuzunu içerir.
3) Yazılım yeniden mühendisliği nedir?
Bir yazılım sisteminin sürdürülebilirliğini artırmak için yapılan bir yazılım geliştirme sürecidir.
4) Yazılım geliştirme sürecini kısaca açıklayın:
Yazılım geliştirme bir yaşam döngüsü olup aşağıdaki aşamalardan oluşur:
- İhtiyaç analizi
- Özellikler
- Yazılım mimarisi
- Uygulama
- Test yapmak
- Dökümanlar
- Eğitim ve destek
- Bakım
5) SDLC modelleri nelerdir?
Şelale Modeli, Spiral Model, Big-bag modeli, İteratif Model ve V-Modeli ünlülerden bazılarıdır. SDLC modelleri.
6) Doğrulama ve doğrulama nedir?
Doğrulama:
Doğrulama, yazılımın belirli bir işlevi uygulamasını sağlayan faaliyetler kümesini ifade eden bir terimdir.
Doğrulama:
Yazılımın müşterilerin ihtiyaçlarına göre oluşturulmasını sağlayan faaliyetler dizisini ifade eder.
7) Yazılım geliştirme sürecinde hata ayıklamanın anlamı nedir?
Hata ayıklama, hatanın giderilmesiyle sonuçlanan süreçtir. Başarılı testin çok önemli bir parçasıdır.
8) Kodunuzun hem güvenli hem de hızlı olduğundan nasıl emin olabilirsiniz?
Yazılımda, geliştirme güvenliği her zaman ilk sıradadır. Bu yüzden programın yürütülmesi yavaşsa, zaman karmaşıklığının nedenini belirlemeye çalışırım.
9) Yazılım gereksinimlerini takip etmek için kullanılan iki aracı adlandırın?
Gereksinimleri takip etmenin birçok yolu vardır.
Yaygın olarak kullanılan iki tanesi şunlardır:
- Tüm gereksinimleri listelemek için bir gereksinim özellikleri belgesi hazırlayın.
- Gereksinim, tür, bağımlılık, öncelik vb. bilgileri içeren bir excel sayfası oluşturun.
10) Taslak ile sahte arasındaki temel fark nedir?
Saplama, genellikle kodlanmış verileri döndüren, sahte genellikle çıktıları beklentilere göre doğrulayan bir arayüzün minimal bir uygulamasıdır. Bu beklentiler testte belirlenir.
11) Hangi dilde programlama algoritmaları yazmayı seviyorsunuz?
Programlama dili seçimleri söz konusu olduğunda her geliştiricinin kendi görüşleri vardır. Ancak dinamik oldukları için üst düzey dilleri tercih etmek gerekir. C gibi ve C++ duujjil.
12) Bilgisayar yazılımı nedir?
Bilgisayar yazılımı, bir 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.
13) Size göre hangi SDLC modeli en iyisidir?
Geliştirme sürecinin ihtiyacına göre SDLC Modelleri benimsendiği için böyle bir sıralama bulunmamaktadır. Yazılımdan yazılıma farklılık gösterebilir.
14) Yazılım proje yöneticisi kimdir? Onun rolü nedir?
Yazılım proje yöneticisi, yazılım geliştirme projesinin yönetiminden sorumlu olan kişidir.
Proje yöneticisi proje planlamasını, ilerlemeyi izlemesini, iletişimi yapıyor. Ayrıca projeyi zaman, maliyet ve kalite kısıtlamaları dahilinde teslim etmek için riskleri ve kaynakları da yönetir.
15) Yazılım kapsamı ne anlama geliyor?
Yazılım kapsamı iyi tanımlanmış bir sınırdır. Yazılım ürününün geliştirilmesi ve teslimine yönelik yapılan her türlü faaliyeti kapsar.
Yazılımın kapsamı, yazılımın bir parçası olarak sunulacak tüm işlevleri ve yapıları tanımlar. Kapsam aynı zamanda ürünün ne yapacağını da tanımlar? Projenin parçası ne değildir? Proje tahmini nedir?
Bu süreç, yazılım ürününün çeşitli yönlerini tahmin etmeye yardımcı olur. Bu tahmine uzmanlara danışılarak veya önceden tanımlanmış formüller kullanılarak karar verilebilir.
16) Bir yazılım ürününün boyutu nasıl bulunur?
Yazılım ürününün boyutu aşağıdaki iki yöntem kullanılarak hesaplanabilir:
- Teslim edilen kodun satırlarını sayma
- Teslim edilen fonksiyon noktalarını sayma
17) Fonksiyon noktaları nedir?
İşlev noktaları, yazılım ürünü tarafından sağlanan özelliklerdir. Yazılım boyutu için en önemli ölçüm olarak kabul edilir.
18) Yazılım projesi tahmin teknikleri nelerdir?
En yaygın kullanılan tahmin teknikleri şunlardır:
- Ayrıştırma tekniği
- Ampirik teknik
19) Yazılım konfigürasyon yönetimi nedir?
Yazılım konfigürasyon yönetimi, yazılımda meydana gelen değişiklikleri izleme ve kontrol etme sürecidir.
Değişiklik kontrolü, yazılım sisteminde yapılan tüm değişikliklerin tutarlı olmasını ve organizasyonel kurallar ve düzenlemeler kullanılarak oluşturulmasını sağlayan bir fonksiyondur.
20) Projenin yürütülmesini nasıl ölçebilirsiniz?
Etkinlik İzleme, Durum Raporları ve Kilometre Taşı Kontrol Listelerini kullanarak projenin yürütülmesini ölçebiliriz.
21) Bana bazı proje yönetimi araçlarından bahsedin.
Bir yazılım projesinin ihtiyacına 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ı vb.'dir.
22) Yazılım gereksinimleri nelerdir?
Yazılım gereksinimleri, önerilen bir yazılım sisteminin işlevsel bir açıklamasıdır. Hedef sistemin, işlevlerinin ve özelliklerinin açıklaması olduğu varsayılmaktadır.
23) Fizibilite çalışması nedir?
Yazılım projesi geliştirmenin kuruma ne kadar pratik ve faydalı olacağını ortaya çıkarmaya yönelik bir ölçüdür. Yazılım analizcisi projenin ekonomik, teknik ve operasyonel fizibilitesini bilmek için bir çalışma yürütür.
- Ekonomik: Eğitimin maliyetini, ek maliyetleri ve araçları ve projenin maliyet ve faydalarının genel tahminini içerir.
- Teknik Özellikler: Teknik açıdan değerlendirir. Bu sistemi geliştirmek mümkün mü? Yazılımın yürütüleceği makine(ler)in ve işletim sisteminin uygunluğunu değerlendirmek, bu proje için mevcut yazılım geliştirme ve araçlara ilişkin bilgi.
- Operageçerli: Burada analistin, organizasyonun projeye yönelik talebe göre yapılan değişikliklere sorunsuz bir şekilde uyum sağlayabileceğini değerlendirmesi gerekir. Sorun tahmini maliyetle çözülmeye değer mi?
Tüm bunlar incelendikten sonra nihai fizibilite raporu oluşturulur.
24) İşlevsel ve işlevsel olmayan gereksinimler nelerdir?
İşlevsel gereksinimler, kullanıcıların önerilen yazılım ürününden beklediği işlevsel özelliklerdir.
İşlevsel olmayan gereksinimler kullanıcı arayüzünün güvenliği, performansı, görünümü ve hissi ile ilgilidir.
25) Yazılım ölçüsü nedir?
Yazılım Metrikleri, yazılım sürecinin çeşitli yönleri için aşağıdakilere ayrılan önlemler sunar:
- Gereksinim metrikleri: Uzunluk gereksinimleri, tamlık
- Ürün metrikleri: Kodlama Satırı sayısı, Nesneye yönelik metrikler, tasarım ve test metrikleri.
26) Modülerleştirme nedir?
Modülerleştirme, bir yazılım sistemini çeşitli ayrı modüllere bölmek için kullanılan bir tekniktir. Görevleri bağımsız olarak yerine getirmesi bekleniyor.
27) Uyum nedir?
Uyum, modülün unsurları arasındaki karşılıklı bağımlılığı tanımlayan bir ölçüdür.
28) Bazı yazılım analiz ve tasarım araçlarından bahseder misiniz?
En önemli yazılım analizi ve tasarım araçlarından bazıları şunlardır:
- Veri Akış Şemaları
- Yapılandırılmış Grafikler
- Yapılandırılmış İngilizce
- Bilgi sözlüğü
- Hiyerarşik Giriş Süreci Çıkış diyagramları
- Varlık İlişki Diyagramları ve Karar tabloları
29) Seviye-0 Veri akış şeması ne demektir?
En yüksek soyutlama seviyesine DFD'nin Seviye 0'ı denir. Buna bağlam düzeyi DFD de denir. Tüm bilgi sistemini tek bir diyagram olarak gösterir.
30) Yapılandırılmış İngilizce ile Sözde Kod arasındaki en büyük fark nedir?
Yapılandırılmış İngilizce ana dili İngilizcedir. Bir program modülünün yapısını yazmak için kullanılır. Programlama dili anahtar kelimelerini kullanır. Öte yandan, Sözde Kod, herhangi bir belirli dilin sözdizimi olmayan programlama diline daha çok benzer.
Deneyimlilere Yönelik Yazılım Mühendisliği viva Soruları ve Cevapları
31) Yapılandırılmış tasarım nedir?
Yapılandırılmış tasarım problemin kavramsallaştırılmasıdır. Çözüm tasarımı olarak da adlandırılan bu sistem 'böl ve yönet' stratejisine dayanmaktadır.
32) Fonksiyonel programlama nedir?
Matematiksel fonksiyon kavramlarını kullanan bir programlama yöntemidir. Program durumuna bakılmaksızın sonuçlar üreten matematiksel işlevler olarak hesaplama araçları sağlar.
33) Kalite Güvencesi ve Kalite Kontrol Nedir?
Kalite Güvencesi, yazılımı geliştirirken uygun sürecin takip edilip edilmediğini kontrol ederken Kalite Kontrol, yazılım ürününün kalitesinin korunmasıyla ilgilenir.
34) CASE araçları nelerdir?
CASE Bilgisayar Destekli anlamına gelir Yazılım Mühendisliği. SDLC faaliyetlerini desteklemek, geliştirmek ve güçlendirmek için kullanılan otomatik yazılım uygulama programları kümesidir.
35) Hangi süreç modeli, yazılım sorun yaşamadan hataları ortadan kaldırır?
Temiz oda yazılım mühendisliği yöntemi, yazılım sorun yaşamadan önce kusurları ortadan kaldırır.
36) Bu sorunu çözün
Karanlık bir odada bir çekmecede iki çeşit yirmi farklı çorap var. Eşleşen bir çifte sahip olduğunuzdan emin olmak için yanınıza almanız gereken minimum çorap sayısı nedir?
Üç çorap alırsanız oranlar %50 olsa bile aynı türden olabilirler. Oranlar asla eşit bir gerçeklik değildir. Bu nedenle, 'eşleşen bir çifte sahip olduğunuzdan emin olmanın' tek yolu en az 11 sayıda şok almaktır.
37) Yazılı kodunuzun çeşitli hata durumlarını ele alabileceğinden nasıl emin olabilirsiniz?
Beklenen hata durumlarını tanımlayan testler yazabilirim.
38) Bir Konu ile Süreç arasındaki farkları açıklayın?
Süreç, bilgisayar programının bir örneğidir. Tek bir programda bir veya daha fazla iş parçacığının olması mümkündür.
39) Bana bir EXE ile bir DLL arasındaki farkı söyler misiniz?
Exe yürütülebilir bir programdır, DLL ise programlar tarafından dinamik olarak yüklenebilen ve yürütülebilen bir dosyadır. Programlar için harici bir kod deposudur. Her ikisi de farklı programlar olduğundan, dosyalarında bu kodu bulundurmak yerine aynı DLL dosyasını yeniden kullanın. Ayrıca gerekli depolama alanını da azaltır.
40) Güçlü yazma ve zayıf yazma nedir? Hangisi tercih edilir? Neden?
Güçlü yazma, derleme zamanında değişken türlerini kontrol eder. Öte yandan zayıf yazım, çalışma zamanında sistemin türlerini kontrol eder. Bunlar arasında Strong yazım hataları en aza indirdiği için her zaman tercih edilir.
41) Arayüz yönelimli, Nesne yönelimli ve Görünüş yönelimli programlama arasındaki farkı açıklayın.
- Arayüz programlama sözleşmeye dayalıdır.
- Nesne yönelimli, tek bir amacı olan ayrıntılı nesneler yazmanın bir yoludur.
- Yön Odaklı Programlama, kodu çeşitli nesnelerin ana görevleri taşıyacağı ve yardımcı görevlerin bağımsız nesneler tarafından gerçekleştirileceği şekilde ayırmaktır.
42) Neden catch (istisna) kullanmak her zaman kötü bir fikirdir?
Bu kötü bir fikir çünkü:
- Tanımlanmış bir değişken olmadığından istisnayı okumak mümkün değildir
- İstisna türlerini bildiğiniz zaman bir istisna kullanmak iyidir.
43) HTTP Başlıkları aracılığıyla ne tür veriler aktarılır?
Komut dosyası ve meta veriler HTTP üstbilgileri aracılığıyla aktarılır.
44) Gereksinimleri nasıl önceliklendiriyorsunuz?
Öncelikle veri yapısını değerlendirerek bir sistem tasarlamanız gerekiyor. Daha sonra onu desteklemek için gereken kod yapısına geçmelisiniz.
45) Bana nesne yönelimli ve bileşen tabanlı tasarım arasındaki farkları söyler misiniz?
Nesne yönelimli tasarım, bileşen tabanlı tasarımda bir dereceye kadar kolaylıkla kapsanabilir.
46) Polimorfizmi ne zaman kullanıyorsunuz?
Polimorfizm, sınıfı devralırken geçersiz kılma işlevselliğine ihtiyaç duyulduğunda kullanılır. Paylaşılan sınıflar ve paylaşılan sözleşmelerle ilgilidir.
47) Yığın ve kuyruk arasındaki fark nedir?
- Kuyruk her zaman İlk Giren İlk Çıkardır
- Yığın her zaman Son Giren İlk Çıkardır
48) Kodun kalitesini test etmek için gerekli olan şey nedir?
Bana göre birim test çerçevesi, kodun kalitesini test etmek için gereklidir.
49) Yazılımın bakımının pahalı olduğunu düşünüyor musunuz?
Bana göre eğer doğru geliştirme sürecini kullanırsak yazılımın bakımı hiçbir zaman pahalı olmayacaktır.
50) Bana etiketler ve dallar arasındaki farkları söyler misiniz?
Etiketler, bu tür şeyleri yapmak için geçici saklama yerleri olan sürüm sürümlerini oluşturmak içindir. Ancak bu değişiklikler ana hatla birleştirildiğinde dallar silinir.
51) Korumalı sınıf düzeyinde değişken nerede mevcuttur?
Korumalı sınıf düzeyindeki değişkenler, temel sınıftan türetilen herhangi bir alt sınıf için kullanılabilir.
52) Tek bir try ifadesi için birden fazla catch bloğu çalıştırmak mümkün müdür?
Evet. Tek bir try ifadesi için birden fazla catch bloğu çalıştırılabilir.
53) Bir sınıfı ne zaman soyut olarak bildirmeniz gerekir?
Aşağıdaki durumlarda bir sınıfı soyut olarak tanımlamamız gerekir:
- Sınıf soyut bir sınıftan miras alındığında ancak tüm soyut yöntemler geçersiz kılınmadığında.
- Sınıftaki yöntemlerden en az birinin özet olarak bildirilmesi durumunda.
54) Mevcut konumunuzu ve o bölgedeki ATM konumlarının listesini çıkaran bir algoritma geliştirin. Bulunduğunuz yere en yakın K ATM'lerini bulun.
A ve b arasındaki mesafeyi hesaplayan getDistance(a, b) yöntemini oluşturun.
Kodu:
import java.util.HashMap; import java.util.Map; import java.util.PriorityQueue; public class PrioRQueueExample { public static void main(String[] args){ PriorityQueue<Double> pq = new PriorityQueue<Double>((x,y)-> {Double z = y-x;return z.intValue(); }); PrioRQueueExample pqe = new PrioRQueueExample(); //Number of ATMs to return i.e. K int num_ATMs = 3; double curr_loc = 0.00; Map<String,Double> nallATMLocs = new HashMap<String,Double>(); //Map of ATM names and their distance co-ordinates nallATMLocs.put("atm1",45.0); nallATMLocs.put("atm2",78.0); nallATMLocs.put("atm3",54.0); nallATMLocs.put("atm4",64.0); nallATMLocs.put("atm5",35.0); nallATMLocs.put("atm6",42.0); nallATMLocs.put("atm7",57.0); nallATMLocs.put("atm7",1.00); nallATMLocs.forEach((atm,dist) ->{if(pq.size() < num_ATMs){ pq.add(pqe.getLocation(curr_loc,dist));} else{ if( pq.peek() > pqe.getLocation(curr_loc,dist)){ pq.poll(); pq.add(pqe.getLocation(curr_loc,dist)); } } }); pq.forEach(atmLoc -> System.out.println(atmLoc)); } private double getLocation(double curr,double atm){ return atm - curr; } }
Bu mülakat soruları aynı zamanda yaşamınızda da yardımcı olacaktır.