En İyi 50 Yazılım Mühendisliği Mülakat Soruları ve Cevapları

Anonim

PDF İndir

1) Önemli yazılım 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.

2) Bir bilgisayar programı ile bilgisayar yazılımı arasındaki temel fark nedir?

Bir bilgisayar programı, bir programlama kodudur. İ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, aşağıdaki aşamalardan oluşan bir yaşam döngüsüdür:

  • İhtiyaç analizi
  • Şartname
  • Yazılım mimarisi
  • Uygulama
  • Test yapmak
  • Dokümantasyon
  • Eğitim ve destek
  • Bakım

5) SDLC modelleri nelerdir?

Şelale Modeli, Spiral Modeli, Big-bag modeli, Yinelemeli Model ve V-Modeli ünlü SDLC modellerinden bazılarıdır.

6) Doğrulama ve onaylama nedir?

Doğrulama:

Doğrulama, yazılımın belirli bir işlevi yerine getirmesini sağlayan bir dizi faaliyete atıfta bulunan bir terimdir.

Doğrulama:

Müşterilerin ihtiyaçlarına göre yazılımın 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 kaldırılmasıyla 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 önce gelir. Bu yüzden, programın yürütülmesi yavaşsa, zaman karmaşıklığının nedenini belirlemeye çalışacağım.

9) Yazılım gereksinimlerini takip etmek için kullanılan iki aracı adlandırın?

Gereksinimleri takip etmenin birçok yolu var.

Yaygın olarak kullanılan iki tanesi:

  • Tüm gereksinimleri listelemek için bir gereksinim özellikleri belgesi hazırlayın.
  • Gereksinimi, türü, bağımlılığı, önceliği vb. İçeren bir liste oluşturun.

10) Taslaklar ile sahte arasındaki temel fark nedir?

Saplama, genellikle sabit kodlanmış verileri döndüren bir arabirimin minimal uygulamasıdır, ancak sahte genellikle çıktıları beklentilere göre doğrular. Bu beklentiler testte belirlenir.

11) Hangi dili programlama algoritmaları yazmaktan hoşlanırsınız?

Programlama dili seçimleri söz konusu olduğunda her geliştiricinin kendi görüşleri vardır. Yine de yüksek seviyeli diller dinamik oldukları için tercih edilmelidir. C ve C ++ dilleri gibi.

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?

SDLC Modelleri geliştirme sürecine duyulan ihtiyaca göre benimsendiği için böyle bir sıralama yoktur. Yazılımdan yazılıma farklılık gösterebilir.

14) Yazılım proje yöneticisi kimdir? Rolü nedir?

Yazılım proje yöneticisi, yazılım geliştirme projesini yönetmekten sorumlu kişidir.

Proje yöneticisi proje planlamasını yapıyor, ilerlemeyi izliyor, iletişimi sağlıyor. Projeyi zaman, maliyet ve kalite kısıtlamaları dahilinde teslim etmek için riskleri ve kaynakları da yönetir.

15) Yazılım kapsamı ile ne kastedilmektedir?

Yazılım kapsamı, iyi tanımlanmış bir sınırdır. Yazılım ürününü geliştirmek ve sunmak için yapılan her türlü faaliyeti içerir.

Yazılım kapsamı, yazılımın bir parçası olarak teslim edilecek tüm işlevleri ve yapıları tanımlar. Kapsam, ürünün ne yapacağını da tanımlar? Projenin parçası ne değil? Proje tahmini nedir?

Bu süreç, yazılım ürününün çeşitli yönlerini tahmin etmeye yardımcı olur. Bu tahmine ya uzmanlara danışarak ya da ö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 işlev noktalarını sayma

17) İşlev noktaları nelerdir?

İşlev noktaları, yazılım ürünü tarafından sağlanan özelliklerdir. Yazılım boyutu için en önemli ölçü olarak kabul edilir.

18) Yazılım projesi tahmin teknikleri nelerdir?

En yaygın olarak 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 kurumsal kurallar ve düzenlemeler kullanılarak oluşturulmasını sağlayan bir işlevdir.

20) Proje yürütmesini nasıl ölçebilirsiniz?

Faaliyet İzleme, Durum Raporları ve Milestone Kontrol Listelerini kullanarak proje yürütmeyi ölçebiliriz.

21) Bana bazı proje yönetimi araçlarından bahsedin.

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ı vb.

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ılır.

23) 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.

  1. Ekonomik: Eğitimin maliyetini, ek ve araçların maliyetini ve projenin maliyet ve faydalarının genel tahminini içerir.

  2. 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.

  3. 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.

24) İşlevsel ve işlevsel olmayan gereksinimler nelerdir?

İşlevsel gereksinimler, önerilen yazılım ürününden kullanıcılar tarafından beklenen 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:

  1. Gereksinim ölçütleri: Uzunluk gereksinimleri, eksiksizlik
  2. Ürün ölçümleri: Kodlama Satırlarının sayısı, Nesneye yönelik ölçümler, tasarım ve test ölçümleri.

26) Modülerleştirme nedir?

Modülerleştirme, bir yazılım sistemini çeşitli gizli modüllere ayırmak 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 iç güvenilirliği tanımlayan bir ölçüdür.

28) Bazı yazılım analizi ve tasarım araçlarından bahsediyor mu?

En önemli yazılım analiz 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ş İşlemi Çıkış diyagramları
  • Varlık İlişki Diyagramları ve Karar tabloları

29) Seviye-0 Veri akış diyagramı ile ne kastedilmektedir?

En yüksek soyutlama seviyesine DFD'nin 0. Seviyesi denir. Aynı zamanda bağlam düzeyi DFD olarak da adlandırılır. Tüm bilgi sistemini tek bir şema olarak gösterir.

30) Yapılandırılmış İngilizce ile Sözde Kod arasındaki temel fark nedir?

Yapılandırılmış İngilizce, anadili İngilizce'dir. Bir program modülünün yapısını yazmak için kullanılır. Programlama dili anahtar sözcüklerini kullanır. Öte yandan, Sözde Kod, herhangi bir belirli dilin sözdizimi olmayan programlama diline daha çok benzer.

31) Yapısal tasarım nedir?

Yapısal tasarım, problemin kavramsallaştırılmasıdır. Aynı zamanda çözüm tasarımı olarak da adlandırılır ve 'böl ve yönet' stratejisine dayanır.

32) Fonksiyonel programlama nedir?

Matematiksel bir fonksiyonun 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.

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 Yazılım Mühendisliği anlamına gelir. SDLC etkinliklerini desteklemek, geliştirmek ve güçlendirmek için kullanılan otomatikleştirilmiş yazılım uygulama programları kümesidir.

35) Yazılımda sorun çıkmadan önce hangi süreç modeli hataları ortadan kaldırır?

Temiz oda yazılım mühendisliği yöntemi, yazılımda sorun çıkmadan önce kusurları ortadan kaldırır.

36) Bu sorunu çözün

Bir karanlık odada bir çekmecede iki çeşit yirmi farklı çorap vardır. Eşleşen bir çifte sahip olduğunuzdan emin olmak için almanız gereken minimum çorap sayısı nedir? "

Üç çorap alırsanız, oranlar% 50 olsa bile aynı türde olabilirler. Olasılıklar 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ın üstesinden gelebileceğinden nasıl emin olabilirsiniz?

Beklenen hata durumlarını tanımlayan testler yazabilirim.

38) İş Parçacığı ve Süreç arasındaki farkları açıklayın?

Bir işlem, bilgisayar programının bir örneğidir.Tek bir programda bir veya daha fazla iş parçacığına sahip olmak mümkündür.

39) Bir EXE ile DLL arasındaki farkı söyle.

Bir exe yürütülebilir bir programdır, DLL ise programlar tarafından dinamik olarak yüklenebilen ve çalıştırılabilen 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'yi yeniden kullanın. Ayrıca gerekli depolama alanını azaltır.

40) Güçlü yazma ve zayıf yazma nedir? Hangisi tercih edilir? Neden?

Güçlü yazım, derleme zamanında değişken türlerini kontrol eder. Öte yandan, zayıf yazım, çalışma zamanında sistem türlerini kontrol eder. Bunlar arasında güçlü yazım, hataları en aza indirdiği için her zaman tercih edilir.

41) Arayüz odaklı, Nesne yönelimli ve Görünüşe yönelik programlama arasındaki farkı açıklayın.

  • Arayüz programlama sözleşmeye dayalıdır.
  • Nesne yönelimli, tek bir amacı olan parçalı nesneler yazmanın bir yoludur.
  • Görünüşe Dayalı Programlama, 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.

42) Neden catch (istisna) kullanmak her zaman kötü bir fikirdir?

Bu kötü bir fikir çünkü:

  • Tanımlanmış değişken olmadığından, istisnayı okumak mümkün değildir
  • İstisna türlerini bildiğiniz durumlarda bir istisna kullanmak iyidir.

43) HTTP Başlıkları aracılığıyla ne tür veriler iletilir?

Komut dosyası ve meta veriler HTTP üstbilgileri aracılığıyla geçirildi

44) Gereksinimleri nasıl önceliklendiriyorsunuz?

Öncelikle veri yapısını değerlendirerek bir sistem tasarlamanız gerekiyor. Ardından, onu desteklemek için gereken kod yapısına geçmelisiniz.

45) Nesne yönelimli ve bileşen tabanlı tasarım arasındaki farkları bana verin?

Nesneye yönelik tasarım, bileşen tabanlı tasarımda bir dereceye kadar kolayca kapsüllenebilir.

46) Polimorfizmi ne zaman kullanıyorsunuz?

Çok biçimlilik, sınıfı devralırken işlevselliği geçersiz kılmaya ihtiyaç duyulduğunda kullanılır. Paylaşılan sınıflar ve paylaşılan sözleşmelerle ilgili.

47) Yığın ve kuyruk arasındaki fark nedir?

  • Sıra her zaman İlk Giren, İlk Çıkar
  • Yığın Her Zaman Son Giren, İlk Çıkar

48) Kodun kalitesini test etmek için ne gereklidir?

Bana göre, kodun kalitesini test etmek için birim test çerçevesi çok önemlidir.

49) Yazılımın bakımının pahalı olduğunu düşünüyor musunuz?

Bana göre, doğru geliştirme sürecini kullanırsak, yazılımın bakımı asla pahalı olmayacak.

50) Bana etiketler ve dallar arasındaki farkları verin?

Etiketler, bu tür bir şey yapmak için geçici olarak bekletme yerleri olan sürümleri yayınlamak içindir. Ancak, bu değişiklikler gövde ile birleştirildiğinde dallar silinir.

51) Korumalı sınıf düzeyinde bir değişken nerede mevcuttur?

Korumalı sınıf düzeyi değişkenler, temel sınıftan türetilen herhangi bir alt sınıf için kullanılabilir.

52) Tek bir try deyimi için birden fazla catch bloğu çalıştırmak mümkün müdür?

Evet. Tek bir try deyimi için birden çok catch bloğu yürütülebilir.

53) Bir sınıfı ne zaman soyut olarak ilan etmelisiniz?

Aşağıdaki durumlarda bir sınıfı soyut olarak ilan etmeliyiz:

  1. Sınıf soyut bir sınıftan miras alındığında, ancak tüm soyut yöntemler geçersiz kılınmamıştır.
  2. Sınıftaki yöntemlerden en az birinin özet olarak bildirilmesi durumunda.

54) Mevcut konumunuzu ve o bölgedeki ATM konumlarının bir listesini çıkaran bir algoritma geliştirin. Bulunduğunuz yere en yakın K ATM'leri alın.

A ve b arasındaki mesafeyi hesaplayan bir getDistance (a, b) yöntemi oluşturun.

Kod:

import java.util.HashMap;import java.util.Map;import java.util.PriorityQueue;public class PrioRQueueExample {public static void main(String[] args){PriorityQueue pq = new PriorityQueue((x,y)-> {Double z = y-x;return z.intValue(); });PrioRQueueExample pqe = new PrioRQueueExample();//Number of ATMs to return i.e. Kint num_ATMs = 3;double curr_loc = 0.00;Map nallATMLocs = new HashMap();//Map of ATM names and their distance co-ordinatesnallATMLocs.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;}}