Топ 50 питања и одговори за интервјуе софтверског инжењерства

Anonim

Преузмите ПДФ

1) Које су важне категорије софтвера?

  • Системски софтвер
  • Апликациони софтвер
  • Уграђени софтвер
  • Веб апликације
  • Софтвер за вештачку интелигенцију
  • Научни софтвер.

2) Која је главна разлика између рачунарског програма и рачунарског софтвера?

Рачунарски програм је део програмског кода. Обавља добро дефинисан задатак. С друге стране, софтвер укључује програмски код, документацију и кориснички водич.

3) Шта је реинжењеринг софтвера?

То је процес развоја софтвера који се ради на побољшању одржавања софтверског система.

4) Укратко опишите процес развоја софтвера:

Животни циклус развоја софтвера састоји се од следећих фаза:

  • Анализа захтева
  • Спецификација
  • Софтверска архитектура
  • Имплементација
  • Тестирање
  • Документација
  • Обука и подршка
  • Одржавање

5) Који су доступни СДЛЦ модели?

Ватерфалл Модел, Спирал Модел, Биг-баг модел, Итеративе Модел и В-Модел су неки од познатих СДЛЦ модела.

6) Шта је верификација и валидација?

Верификација:

Верификација је термин који се односи на скуп активности којима се осигурава да софтвер имплементира одређену функцију.

Валидација:

Односи се на скуп активности којима се осигурава да софтвер који је направљен у складу са потребама клијената.

7) Шта у процесу развоја софтвера значи отклањање грешака?

Отклањање грешака је поступак који резултира уклањањем грешке. Веома је важан део успешног тестирања.

8) Како можете бити сигурни да је ваш код и сигуран и брз?

У софтверу је развојна сигурност увек на првом месту. Дакле, ако је извршавање програма тада споро, покушаћу да идентификујем разлог и пронађем пут до његове временске сложености.

9) Наведи два алата која се користе за праћење софтверских захтева?

Постоји много начина да се евидентирају захтеви.

Две најчешће коришћене су:

  • Направите документ са спецификацијама захтева да бисте набројали све захтеве.
  • Направите Екцел лист на листи према захтеву, типу, зависности, приоритету итд.

10) Која је главна разлика између штанцања, ругања?

Стуб је минимална имплементација интерфејса који обично враћа тврдо кодиране податке, док лажно обично верификује излазе у односу на очекивања. Та очекивања су утврђена у тесту.

11) Који језик волите да пишете алгоритме за програмирање?

Сваки програмер има своје ставове што се тиче избора програмског језика. Ипак, треба преферирати језике високог нивоа јер су динамични. Попут језика Ц и Ц ++.

12) Шта је рачунарски софтвер?

Рачунални софтвер је пакет који укључује софтверски програм, његову документацију и упутство за употребу софтвера.

13) Који је СДЛЦ модел по вама који је најбољи?

Не постоји такво рангирање, јер се СДЛЦ модели усвајају према потреби за процесом развоја. Може се разликовати од софтвера до софтвера.

14) Ко је менаџер софтверских пројеката? Која је његова улога?

Менаџер софтверског пројекта је особа одговорна за управљање пројектом развоја софтвера.

Менаџер пројекта врши планирање пројекта, надгледа напредак, комуницира. Такође управља ризиком и ресурсима како би реализовао пројекат у ограничењима времена, трошкова и квалитета.

15) Шта подразумева опсег софтвера?

Опсег софтвера је добро дефинисана граница. Обухвата све врсте активности које се раде за развој и испоруку софтверског производа.

Опсег софтвера дефинише све функционалности и артефакте који се испоручују као део софтвера. Опсег такође идентификује шта ће производ радити? Шта није део пројекта? Шта је процена пројекта?

Овај поступак је користан за процену различитих аспеката софтверског производа. О овој процени се може одлучити или консултовањем стручњака или коришћењем унапред дефинисаних формула.

16) Како пронаћи величину софтверског производа?

Величина софтверског производа може се израчунати помоћу следеће две методе

  • Бројање редова испорученог кода
  • Бројање испоручених функционалних бодова

17) Шта су функционалне тачке?

Функционалне тачке су функције које пружа софтверски производ. Сматра се као најважније мерење величине софтвера.

18) Које су технике процене софтверског пројекта доступне?

Најчешће коришћене технике процене су:

  • Техника разлагања
  • Емпиријска техника

19) Шта је управљање конфигурацијом софтвера?

Управљање софтверском конфигурацијом је процес праћења и управљања променама које се дешавају у софтверу.

Контрола промена је функција која осигурава да су све промене у софтверском систему доследне и створене коришћењем организационих правила и прописа.

20) Како можете измерити извршење пројекта?

Извршење пројеката можемо мерити помоћу Надгледања активности, Извештаја о статусу и Контролних листа Милестоне.

21) Причајте ми о неким алатима за управљање пројектима.

Постоје многе врсте алата за управљање који се користе према потреби за софтверским пројектом. Неки од њих су Перт Цхарт, Гантт Цхарт, Хистограм ресурса, Извештаји о стању итд.

22) Који су захтеви за софтвер?

Софтверски захтеви су функционални опис предложеног софтверског система. Претпоставља се да је то опис циљног система, његових функционалности и карактеристика.

23) Шта је студија изводљивости?

То је мера како би се открило колико ће развој софтверског пројекта бити практичан и користан за организацију. Софтверски анализатор спроводи студију како би знао економску, техничку и оперативну изводљивост пројекта.

  1. Економски: Обухвата трошкове обуке, трошкове додатних средстава и алата и укупну процену трошкова и користи од пројекта.

  2. Технички: Процењује технички аспект. Да ли је могуће развити овај систем? Процена погодности машина (а) и ОС-а на којима ће се извршити софтвер, знање о развоју софтвера и алати доступни за овај пројекат.

  3. Оперативно: Овде аналитичар треба да процени да ли ће организација бити у стању да се глатко прилагоди променама урађеним према захтеву за пројектом. Да ли је проблем вредан решавања по процењеној цени?

Након проучавања свега овога креира се коначни извештај о изводљивости.

24) Шта су функционални и нефункционални захтеви?

Функционални захтеви су функционалне карактеристике које корисници очекују од предложеног софтверског производа.

Нефункционални захтеви повезани су са сигурношћу, перформансама, изгледом и осећајем корисничког интерфејса.

25) Шта је софтверска метрика?

Софтверска метрика нуди мере за различите аспекте софтверског процеса који се деле на:

  1. Метрика захтева: Захтеви за дужином, комплетност
  2. Метрике производа: Број линија кодирања, објектно оријентисане метрике, метрике дизајна и теста.

26) Шта је модуларизација?

Модуларизација је техника која се користи за поделу софтверског система на различите дискретне модуле. Очекује се да ће задаци извршавати самостално.

27) Шта је кохезија?

Кохезија је мера која дефинише унутрашњу поузданост међу елементима модула.

28) Помиње неке алате за анализу и дизајн софтвера?

Неки од најважнијих алата за анализу и пројектовање софтвера су:

  • Дијаграми протока података
  • Струцтуред Цхартс
  • Струцтуред Енглисх
  • Дата Дицтионари
  • Хијерархијски улазни процес Излазни дијаграми
  • Дијаграми односа ентитета и табеле одлука

29) Шта подразумева дијаграм тока података нивоа 0?

Највиши ниво апстракције назива се ниво 0 ДФД-а. Такође се назива ДФД на нивоу контекста. Читав информациони систем приказује као један дијаграм.

30) Која је главна разлика између структурираног енглеског и псеудо кода?

Структурирани енглески је матерњи енглески језик. Користи се за писање структуре програмског модула. Користи кључне речи програмског језика. С друге стране, Псеудо Цоде је сличнији програмском језику без синтаксе било ког одређеног језика.

31) Шта је структурирани дизајн?

Структурирани дизајн је концептуализација проблема. Такође се зове дизајн решења и који се заснива на стратегији „завади и освоји“.

32) Шта је функционално програмирање?

То је метода програмирања која користи концепте математичке функције. Пружа средства за рачунање као математичке функције, које такође дају резултате без обзира на стање програма.

33) Шта је осигурање квалитета насупрот контроли квалитета?

Осигурање квалитета проверава да ли се поштује одговарајући процес током развоја софтвера, док се Контрола квалитета бави одржавањем квалитета софтверског производа.

34) Шта су ЦАСЕ алати?

ЦАСЕ значи рачунарски подржано софтверско инжењерство. Они су скуп аутоматизованих софтверских апликативних програма који се користе за подршку, побољшање и јачање СДЛЦ активности.

35) Који модел процеса уклања недостатке пре него што софтвер упадне у невољу?

Метода софтверског инжењерства за чисту собу уклања недостатке пре него што софтвер упадне у невоље.

36) Решите овај проблем

У фиоци у једној мрачној соби налази се двадесет различитих чарапа две врсте. Који је минималан број чарапа који требате узети да бисте били сигурни да имате одговарајући пар? "

Ако узмете три чарапе, оне могу бити исте врсте, чак и ако је шанса 50%. Шансе никада нису једнака стварност. Према томе, једини начин да „осигурате да имате одговарајући пар“ је да ухватите најмање 11 удараца.

37) Како можете бити сигурни да ваш писани код може да реши разне врсте грешака?

Могу да напишем тестове који дефинишу очекиване ситуације грешака.

38) Објасните разлике између нити и процеса?

Процес је инстанца рачунарског програма. У једном програму могуће је имати једну или више нити.

39) Реците ми разлику између ЕКСЕ и ДЛЛ-а?

Еке је извршни програм, док је ДЛЛ датотека коју програми могу динамички учитати и извршити. То је спољно спремиште кода за програме. Пошто су оба различита програма, поново користите исти ДЛЛ, уместо да тај код имате у својој датотеци. Такође смањује потребан простор за складиштење.

40) Шта је снажно куцање и слабо куцање? Који је пожељнији? Зашто?

Снажно куцање проверава врсте променљивих у време компајлирања. С друге стране, слабо куцање проверава типове система током извршавања. Међу њима је увек пожељно снажно куцање јер минимизира грешке.

41) Опишите разлику између програмирања оријентисаног на интерфејс, објектно оријентисано и аспектно оријентисано.

  • Програмирање интерфејса заснива се на уговору.
  • Објектно оријентисан је начин писања зрнастих објеката који имају једну намену.
  • Аспектно оријентисано програмирање је раздвајање кода на такав начин да разни објекти носе главне задатке, а помоћне задатке носе независни објекти.

42) Зашто је коришћење цатцх-а (изузетка) увек лоша идеја?

То је лоша идеја јер:

  • Како не постоји дефинисана променљива, није могуће прочитати изузетак
  • Добро је користити изузетак када познајете врсте изузетака.

43) Која врста података се прослеђује преко ХТТП заглавља?

Скрипта и метаподаци прослеђени преко ХТТП заглавља.

44) Како одређујете приоритете?

Прво, треба да дизајнирате систем проценом структуре података. Затим би требало да пређете на структуру кода која је потребна за њену подршку.

45) Наведите ми разлике између објектно оријентисаног и компонентног дизајна?

Објектно оријентисани дизајн може се лако унети у одређени степен у дизајн заснован на компонентама.

46) Када користите полиморфизам?

Полиморфизам се користи када постоји потреба за надјачавањем функционалности приликом наслеђивања класе. Ради се о заједничким часовима и заједничким уговорима.

47) Која је разлика између стека и реда?

  • Ред је увек први улаз, први излаз
  • Стацк је увек последњи улаз, први излаз

48) Шта је неопходно за тестирање квалитета кода?

По мени, оквир за јединствено тестирање је од суштинске важности за тестирање квалитета кода.

49) Да ли мислите да је одржавање софтвера скупо?

По мени, одржавање софтвера никада неће бити скупо ако користимо одговарајући процес развоја.

50) Дајте ми разлике између ознака и грана?

Ознаке су за издања верзија, која су привремена места за такво нешто. Међутим, гране се бришу када се те промене споје у дебло.

51) Где је доступна заштићена променљива на нивоу класе?

Заштићене променљиве на нивоу класе доступне су било којој подкласи изведеној из основне класе.

52) Да ли је могуће извршити више блокова улова за једну изјаву о покушају?

Да. За један покушај израза може се извршити више блокова цатцх.

53) Када требате прогласити наставу као апстрактну?

Класу бисмо требали прогласити апстрактном у следећим ситуацијама:

  1. Када се класа наслеђује из апстрактне класе, али нису замењене све апстрактне методе.
  2. У случају када је минимална једна од метода у класи декларисана као апстрактна.

54) Развити алгоритам који приказује вашу тренутну локацију и листу локација банкомата у тој области. Набавите најближе К банкомате до своје локације.

Направите методу гетДистанце (а, б) која израчунава удаљеност између а и б.

Шифра:

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