50 geriausių programinės įrangos inžinerijos interviu klausimų ir atsakymų

Anonim

Atsisiųsti PDF

1) Kokios yra svarbios programinės įrangos kategorijos?

  • Sistemos programinė įranga
  • Taikomoji programinė įranga
  • Įterptoji programinė įranga
  • Žiniatinklio programos
  • Dirbtinio intelekto programinė įranga
  • Mokslinė programinė įranga.

2) Koks yra pagrindinis skirtumas tarp kompiuterio programos ir kompiuterio programinės įrangos?

Kompiuterinė programa yra programavimo kodo dalis. Ji atlieka tiksliai apibrėžtą užduotį. Kita vertus, programinė įranga apima programavimo kodą, dokumentaciją ir vartotojo vadovą.

3) Kas yra programinės įrangos pertvarkymas?

Tai yra programinės įrangos kūrimo procesas, kuris atliekamas siekiant pagerinti programinės įrangos sistemos prieinamumą.

4) Trumpai apibūdinkite programinės įrangos kūrimo procesą:

Programinės įrangos kūrimas yra gyvavimo ciklas, kurį sudaro šie etapai:

  • Reikalavimų analizė
  • Specifikacija
  • Programinės įrangos architektūra
  • Įgyvendinimas
  • Testavimas
  • Dokumentacija
  • Mokymai ir palaikymas
  • Priežiūra

5) Kokie yra SDLC modeliai?

„Krioklio modelis“, „Spiralinis“ modelis, „Big-bag“ modelis, „Iterative Model“ ir „V- Model“ yra vieni iš garsiausių SDLC modelių.

6) Kas yra tikrinimas ir patvirtinimas?

Patikrinimas:

Patvirtinimas yra terminas, nurodantis visumą veiklų, užtikrinančių, kad programinė įranga įgyvendina tam tikrą funkciją.

Patvirtinimas:

Tai reiškia visumą veiklų, užtikrinančių, kad programinė įranga būtų sukurta pagal klientų poreikius.

7) Ką reiškia derinimas programinės įrangos kūrimo procese?

Derinimas yra procesas, kurio metu pašalinamos klaidos. Tai labai svarbi sėkmingo testavimo dalis.

8) Kaip galite įsitikinti, kad jūsų kodas yra saugus ir greitas?

Programinėje įrangoje kūrimo saugumas visada yra pirmas. Taigi, jei programa bus vykdoma lėtai, pabandysiu nustatyti priežastis, dėl kurių ji gali būti sudėtinga.

9) Įvardykite dvi priemones, kurios naudojamos programinės įrangos reikalavimams sekti?

Yra daugybė būdų, kaip sekti reikalavimus.

Du dažniausiai naudojami yra:

  • Sudarykite reikalavimų specifikacijų dokumentą, kuriame išvardyti visi reikalavimai.
  • Sukurkite „Excel“ lapą, nurodydami reikalavimą, tipą, priklausomybę, prioritetą ir kt.

10) Koks yra pagrindinis štangos, pasityčiojimo skirtumas?

Šnipas yra minimalus sąsajos įgyvendinimas, kuris paprastai pateikia kietojo kodo duomenis, o maketas paprastai patikrina išvestis pagal lūkesčius. Šie lūkesčiai yra nustatyti bandyme.

11) Kokia kalba jums patinka rašyti programavimo algoritmus?

Kiekvienas kūrėjas turi savo nuomonę, kai reikia pasirinkti programavimo kalbą. Vis dėlto reikėtų teikti pirmenybę aukšto lygio kalboms, nes jos yra dinamiškos. Kaip ir C bei C ++ kalbos.

12) Kas yra kompiuterio programinė įranga?

Kompiuterių programinė įranga yra paketas, kuriame yra programinė įranga, jos dokumentai ir vartotojo vadovas, kaip naudotis programine įranga.

13) Kaip manote, kuris SDLC modelis yra geriausias?

Nėra tokio reitingavimo, nes SDLC modeliai yra priimami atsižvelgiant į kūrimo proceso poreikį. Programinė įranga gali skirtis.

14) Kas yra programinės įrangos projektų vadovas? Koks jo vaidmuo?

Programinės įrangos projektų vadovas yra asmuo, atsakingas už programinės įrangos kūrimo projekto valdymą.

Projekto vadovas vykdo projekto planavimą, stebi pažangą, bendrauja. Jis taip pat valdo riziką ir išteklius, kad įgyvendintų projektą per laiko, išlaidų ir kokybės apribojimus.

15) Ką reiškia programinės įrangos apimtis?

Programinės įrangos apimtis yra aiškiai apibrėžta riba. Tai apima visų rūšių veiklą, kuri atliekama kuriant ir pristatant programinės įrangos produktą.

Programinės įrangos apimtyje apibrėžiamos visos funkcijos ir artefaktai, kuriuos reikia pateikti kaip programinės įrangos dalį. Taikymo sritis taip pat nurodo, ką produktas veiks? Kas nėra projekto dalis? Kas yra projekto įvertinimas?

Šis procesas yra naudingas norint įvertinti įvairius programinės įrangos produkto aspektus. Šį įvertinimą galima nuspręsti konsultuojantis su ekspertais arba naudojant iš anksto nustatytas formules.

16) Kaip sužinoti programinės įrangos produkto dydį?

Programinės įrangos produkto dydį galima apskaičiuoti taikant du metodus

  • Skaičiuojamos pristatyto kodo eilutės
  • Skaičiuojami pristatomi funkciniai taškai

17) Kas yra funkciniai taškai?

Funkcijos taškai yra funkcijos, kurias teikia programinės įrangos produktas. Tai laikoma svarbiausiu programinės įrangos dydžio matavimu.

18) Kokie yra programinės įrangos projekto vertinimo metodai?

Plačiausiai naudojami vertinimo metodai yra šie:

  • Skilimo technika
  • Empirinė technika

19) Kas yra programinės įrangos konfigūracijos valdymas?

Programinės įrangos konfigūracijos valdymas yra programinės įrangos pokyčių stebėjimo ir valdymo procesas.

Pokyčių valdymas yra funkcija, užtikrinanti, kad visi programinės įrangos sistemos pakeitimai yra nuoseklūs ir sukurti naudojant organizacines taisykles.

20) Kaip galite įvertinti projekto vykdymą?

Mes galime išmatuoti projekto vykdymą naudodami veiklos stebėjimą, būsenos ataskaitas ir „Milestone“ kontrolinius sąrašus.

21) Papasakok man apie kai kurias projektų valdymo priemones.

Yra daugybė valdymo priemonių, naudojamų pagal programinės įrangos projekto poreikį. Kai kurie iš jų yra Pert diagrama, Ganto diagrama, išteklių histograma, būsenos ataskaitos ir kt.

22) Kokie yra programinės įrangos reikalavimai?

Programinės įrangos reikalavimai yra siūlomos programinės įrangos sistemos funkcinis aprašymas. Manoma, kad tai tikslinės sistemos, jos funkcijų ir savybių aprašymas.

23) Kas yra galimybių studija?

Tai priemonė išsiaiškinti, kaip praktiška ir naudinga programinės įrangos projekto kūrimas pasirodys organizacijai. Programinės įrangos analizatorius atlieka tyrimą, siekdamas sužinoti ekonominį, techninį ir eksploatacinį projekto įgyvendinamumą.

  1. Ekonominis: į jį įeina mokymo išlaidos, papildomų priemonių ir priemonių išlaidos bei bendras projekto išlaidų ir naudos įvertinimas.

  2. Techninis: vertinamas techninis aspektas. Ar įmanoma sukurti šią sistemą? Įvertinti mašinos (-ų) ir OS, kurioje bus vykdoma programinė įranga, tinkamumą, žinias apie programinės įrangos kūrimą ir šiam projektui skirtas priemones.

  3. Veiklos: analitikas turi įvertinti, ar organizacija galės sklandžiai prisitaikyti prie atliktų pokyčių pagal projekto poreikį. Ar verta problemą išspręsti apskaičiuota kaina?

Išnagrinėjus visa tai, sukuriama galutinė galimybių ataskaita.

24) Kokie yra funkciniai ir nefunkciniai reikalavimai?

Funkciniai reikalavimai yra funkcinės savybės, kurių vartotojai tikisi iš siūlomo programinės įrangos produkto.

Nefunkciniai reikalavimai yra susiję su vartotojo sąsajos saugumu, veikimu, išvaizda ir veikimu.

25) Kas yra programinės įrangos metrika?

Programinės įrangos metrika siūlo įvairius programinės įrangos proceso aspektus, kurie yra suskirstyti į:

  1. Reikalavimų metrika: ilgio reikalavimai, išsamumas
  2. Produkto metrika: kodavimo linijų skaičius, objektyvi metrika, dizaino ir bandymų metrika.

26) Kas yra moduliacija?

Moduliavimas yra technika, naudojama programinės įrangos sistemai padalyti į įvairius diskretiškus modulius. Tikimasi, kad užduotis atliks savarankiškai.

27) Kas yra sanglauda?

Sanglauda yra priemonė, apibrėžianti modulio elementų tarpusavio priklausomybę.

28) Pamini keletą programinės įrangos analizės ir projektavimo įrankių?

Keletas svarbiausių programinės įrangos analizės ir projektavimo įrankių yra šie:

  • Duomenų srauto diagramos
  • Struktūrinės diagramos
  • Struktūrinė anglų kalba
  • Duomenų žodynas
  • Hierarchinės įvesties proceso išvesties diagramos
  • Subjektų santykių diagramos ir sprendimų lentelės

29) Ką reiškia 0 lygio duomenų srauto diagrama?

Aukščiausias abstrakcijos lygis vadinamas DFD 0 lygiu. Jis taip pat vadinamas konteksto lygio DFD. Ji vaizduoja visą informacinę sistemą kaip vieną schemą.

30) Koks yra pagrindinis skirtumas tarp struktūrizuoto anglų kalbos ir „Pseudo Code“?

Struktūrinė anglų kalba yra gimtoji anglų kalba. Jis naudojamas rašyti programos modulio struktūrą. Jis naudoja programavimo kalbos raktinius žodžius. Kita vertus, „Pseudo Code“ yra panašesnis į programavimo kalbą be jokios konkrečios kalbos sintaksės.

31) Kas yra struktūrizuotas dizainas?

Struktūrinis dizainas yra problemos konceptualizavimas. Jis taip pat vadinamas sprendimų dizainu ir yra pagrįstas „skaldyk ir užvaldyk“ strategija.

32) Kas yra funkcinis programavimas?

Tai programavimo metodas, kuriame naudojamos matematinės funkcijos sąvokos. Tai suteikia skaičiavimo, kaip matematinių funkcijų, priemones, kurios taip pat duoda rezultatus, nepriklausomai nuo programos būsenos.

33) Kas yra kokybės užtikrinimas ir kokybės kontrolė?

Kokybės užtikrinimas tikrina, ar kuriant programinę įrangą laikomasi tinkamo proceso, o kokybės kontrolė yra susijusi su programinės įrangos produkto kokybės palaikymu.

34) Kas yra „CASE“ įrankiai?

CASE reiškia kompiuterinę programinės įrangos inžineriją. Jie yra automatizuotų programinės įrangos programų programų rinkinys, kuris naudojamas SDLC veiklai palaikyti, sustiprinti ir sustiprinti.

35) Kuris proceso modelis pašalina defektus, kol programinė įranga nepatiria problemų?

„Clean room“ programinės įrangos inžinerijos metodas pašalina defektus, kol programinė įranga nepatenka į bėdą.

36) Išspręskite šią problemą

Viename tamsiame kambaryje esančiame stalčiuje yra dvidešimt skirtingų dviejų rūšių kojinių. Koks yra minimalus kojinių skaičius, kurį turite pasiimti, kad įsitikintumėte, jog turite porą? "

Jei pasiimsite tris kojines, jos gali būti to paties tipo, net jei tikimybė yra 50%. Tikimybė niekada nėra lygi tikrovei. Todėl vienintelis būdas „įsitikinti, kad turite porą“ yra surinkti mažiausiai 11 smūgių.

37) Kaip galite įsitikinti, kad jūsų parašytas kodas, kuris gali valdyti įvairias klaidas?

Aš galiu parašyti testus, apibrėžiančius laukiamas klaidų situacijas.

38) Paaiškinkite gijos ir proceso skirtumus?

Procesas yra kompiuterio programos egzempliorius. Vienoje programoje galima turėti vieną ar daugiau gijų.

39) Pasakyk man skirtumą tarp EXE ir DLL?

Exe yra vykdoma programa, o DLL yra failas, kurį programos gali dinamiškai įkelti ir vykdyti. Tai išorinė programų kodų saugykla. Kadangi abi programos yra skirtingos, naudokite tą patį DLL, o ne turėkite tą kodą savo faile. Tai taip pat sumažina reikalingą saugojimo vietą.

40) Kas yra stiprus ir silpnas spausdinimas? Kuris yra pageidaujamas? Kodėl?

Stiprus spausdinimas tikrina kintamųjų tipus kompiliavimo metu. Kita vertus, silpnas spausdinimas tikrina sistemos tipus vykdymo metu. Tarp jų visada pirmenybė teikiama stipriam spausdinimui, nes tai sumažina klaidas.

41) Apibūdinkite skirtumą tarp į sąsają orientuoto, į objektą ir į aspektą orientuoto programavimo.

  • Sąsajos programavimas yra pagrįstas sutartimis.
  • Orientuotas į objektą yra būdas rašyti smulkius objektus, turinčius vieną tikslą.
  • Į aspektą orientuotas programavimas yra kodas atskirti taip, kad įvairūs objektai atliktų pagrindines užduotis, o pagalbines užduotis vykdytų nepriklausomi objektai.

42) Kodėl gaudymo (išimties) naudojimas visada yra bloga idėja?

Tai bloga idėja, nes:

  • Kadangi nėra apibrėžtas kintamasis, neįmanoma perskaityti išimties
  • Gerai naudoti išimtį, kai žinote išimčių tipus.

43) Kokio tipo duomenys perduodami per HTTP antraštes?

Scenarijus ir metaduomenys perduodami per HTTP antraštes.

44) Kaip prioritetus nustatote reikalavimams?

Pirma, turite sukurti sistemą įvertindami duomenų struktūrą. Tada turėtumėte pereiti prie kodo struktūros, reikalingos jai palaikyti.

45) Pateikite skirtumų tarp objektinio ir komponentinio dizaino?

Objektinis dizainas gali būti lengvai tam tikru laipsniu įtrauktas į komponentų dizainą.

46) Kada naudojate polimorfizmą?

Polimorfizmas naudojamas, kai paveldint klasę reikia nepaisyti funkcionalumo. Tai yra apie bendras klases ir bendras sutartis.

47) Koks skirtumas tarp kamino ir eilės?

  • Eilė visada yra „First In“, „First Out“
  • „Stack“ visada yra paskutinis, pirmas

48) Kas yra būtina norint patikrinti kodo kokybę?

Pasak mano, vieneto testavimo sistema yra būtina norint patikrinti kodo kokybę.

49) Ar manote, kad programinės įrangos priežiūra yra brangi?

Pasak manęs, programinės įrangos priežiūra niekada nebus brangi, jei naudojame tinkamą kūrimo procesą.

50) Duok man skirtumų tarp žymių ir šakų?

Žymos yra skirtos leidimų versijoms, kurios yra laikinos laikymo vietos tokiems dalykams atlikti. Tačiau filialai ištrinami, kai šie pakeitimai sujungiami į bagažinę.

51) Kur yra saugomas klasės lygio kintamasis?

Saugomi klasės lygio kintamieji yra prieinami bet kuriai pogrupiui, gautam iš bazinės klasės.

52) Ar galima vienu bandymo sakiniu įvykdyti kelis sugavimo blokus?

Taip. Vienam bandymo sakiniui galima įvykdyti kelis sugavimo blokus.

53) Kada reikia paskelbti klasę abstrakčia?

Turėtume paskelbti klasę abstrakčia šiose situacijose:

  1. Kai klasė paveldima iš abstrakčios klasės, tačiau ne visi abstraktūs metodai buvo pakeisti.
  2. Tuo atveju, kai minimalus vienas iš klasės metodų yra deklaruojamas kaip abstraktus.

54) Sukurkite algoritmą, išvedantį jūsų dabartinę vietą ir bankomatų vietų šioje srityje sąrašą. Priartinkite prie savo vietos artimiausius K bankomatus.

Sukurkite metodą „getDistance“ (a, b), kuris apskaičiuoja atstumą tarp a ir b.

Kodas:

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;}}