50 Въпроси и отговори за интервю за софтуерно инженерство

Ето въпроси и отговори за интервю за софтуерно инженерство за по-свежи и опитни кандидати, за да получат мечтаната работа.

 

Въпроси и отговори за интервю за разработчици на софтуер за първокурсници

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

  • Системен софтуер
  • Приложен софтуер
  • Вграден софтуер
  • Уеб приложения
  • Софтуер за изкуствен интелект
  • Научен софтуер.

👉 Безплатно изтегляне на PDF: Въпроси и отговори за интервю за софтуерно инженерство


2) Каква е основната разлика между компютърна програма и компютърен софтуер?

Компютърната програма е част от програмен код. Той изпълнява точно определена задача. От друга страна, софтуерът включва програмен код, документация и ръководство за потребителя.


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

Това е процес на разработка на софтуер, който се прави, за да се подобри поддържаемостта на софтуерна система.

Въпроси за софтуерното инженерство


4) Опишете накратко процеса на разработка на софтуер:

Разработката на софтуер е жизнен цикъл, който се състои от следните етапи:

  • Анализ на изискванията
  • Спецификация
  • Софтуерна архитектура
  • изпълнение
  • Тестване
  • документация
  • Обучение и подкрепа
  • поддръжка

5) Какви са наличните SDLC модели?

Модел на водопад, спирален модел, модел на голяма чанта, итеративен модел и V-модел са някои от известните SDLC модели.


6) Какво е проверка и валидиране?

Проверка:

Проверката е термин, който се отнася до набор от дейности, които гарантират, че софтуерът изпълнява конкретна функция.

Потвърждаване:

Отнася се до набор от дейности, които гарантират, че софтуерът е създаден според нуждите на клиентите.


7) В процеса на разработка на софтуер какво е значението на отстраняването на грешки?

Дебъгването е процесът, който води до отстраняване на грешката. Това е много важна част от успешното тестване.


8) Как можете да се уверите, че вашият код е едновременно безопасен и бърз?

В софтуера сигурността на разработката винаги е на първо място. Така че, ако тогава изпълнението на програмата е бавно, ще се опитам да открия причината за нейната времева сложност.


9) Посочете два инструмента, които се използват за проследяване на софтуерните изисквания?

Има много начини да следите изискванията.

Две често използвани са:

  • Направете документ със спецификации на изискванията, за да изброите всички изисквания.
  • Създайте лист в Excel със списъка надолу по изискване, тип, зависимост, приоритет и т.н.

10) Каква е основната разлика между мъничета и макет?

Мъничето е минимална реализация на интерфейс, който обикновено връща твърдо кодирани данни, докато макетът обикновено проверява изходите спрямо очакванията. Тези очаквания са определени в теста.


11) На какъв език обичате да пишете програмни алгоритми?

Всеки разработчик има своите виждания, когато става въпрос за избор на език за програмиране. Все пак трябва да се предпочитат езици от високо ниво, защото те са динамични. Като C и C++ езика.


12) Какво е компютърен софтуер?

Компютърният софтуер е пакет, който включва софтуерна програма, нейната документация и ръководство за потребителя как да използвате софтуера.


13) Според вас кой SDLC модел е най-добрият?

Няма такова класиране, тъй като SDLC моделите се приемат според необходимостта от процеса на разработка. Може да се различава от софтуера към софтуера.


14) Кой е мениджър на софтуерен проект? Каква е неговата роля?

Мениджърът на софтуерен проект е лице, което отговаря за управлението на проекта за разработка на софтуер.

Мениджърът на проекта прави планирането на проекта, следи напредъка, комуникацията. Той или тя също така управлява рисковете и ресурсите, за да изпълни проекта в рамките на ограниченията във времето, разходите и качеството.


15) Какво означава обхват на софтуера?

Обхватът на софтуера е добре дефинирана граница. Той включва всички видове дейности, които се извършват за разработване и доставяне на софтуерния продукт.

Обхватът на софтуера определя всички функционалности и артефакти, които да бъдат доставени като част от софтуера. Обхватът също така идентифицира какво ще направи продуктът? Какво не е част от проекта? Какво представлява оценката на проекта?

Този процес е полезен за оценка на различни аспекти на софтуерния продукт. Тази оценка може да бъде направена чрез консултация с експерти или чрез използване на предварително дефинирани формули.


16) Как да намерите размера на софтуерния продукт?

Размерът на софтуерния продукт може да се изчисли по два метода

  • Преброяване на редовете на доставения код
  • Преброяване на доставени функционални точки

17) Какво представляват функционалните точки?

Функционалните точки са функциите, които се предоставят от софтуерния продукт. Счита се за най-важното измерване за размера на софтуера.


18) Какви са наличните техники за оценка на софтуерни проекти?

Най-широко използваните техники за оценка са:

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

19) Какво е управление на конфигурацията на софтуера?

Управлението на конфигурацията на софтуера е процес на проследяване и контролиране на промените, които се случват в софтуера.

Контролът на промените е функция, която гарантира, че всички промени, направени в софтуерната система, са последователни и създадени с помощта на организационни правила и разпоредби.


20) Как можете да измерите изпълнението на проекта?

Можем да измерваме изпълнението на проекта, като използваме мониторинг на дейността, отчети за състоянието и контролни списъци с важни етапи.


21) Разкажете ми за някои инструменти за управление на проекти.

Има много видове инструменти за управление, използвани според необходимостта от софтуерен проект. Някои от тях са Pert Chart, Gantt Chart, Resource Histogram, Status Reports и др.


22) Какви са софтуерните изисквания?

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


23) Какво е проучване за осъществимост?

Това е мярка, за да разберете колко практично и полезно ще се окаже разработването на софтуерен проект за организацията. Софтуерният анализатор провежда проучване, за да разбере икономическата, техническата и оперативната осъществимост на проекта.

  1. Икономически: Тя включва разходите за обучение, разходите за допълнителни инструменти и общата оценка на разходите и ползите от проекта.
  2. Технически: Той оценява техническия аспект. Възможно ли е да се развие тази система? Оценка на пригодността на машината(ите) и операционната система, на която софтуерът ще се изпълнява, познаване на разработката на софтуер и инструментите, налични за този проект.
  3. Operaционален: Тук анализаторът трябва да оцени дали организацията ще може да се приспособи плавно към промените, извършени според търсенето на проекта. Струва ли си проблемът да бъде решен на приблизителната цена?

След проучване на всичко това се създава окончателният доклад за осъществимост.


24) Какво представляват функционалните и нефункционалните изисквания?

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

Нефункционалните изисквания са свързани със сигурността, производителността, външния вид и усещането на потребителския интерфейс.


25) Какво е софтуерна метрика?

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

  1. Показатели на изискванията: изисквания за дължина, пълнота
  2. Продуктови показатели: Брой редове за кодиране, обектно-ориентирани показатели, дизайн и тестови показатели.

26) Какво е модулиране?

Модулирането е техника, която се използва за разделяне на софтуерна система на различни дискретни модули. От него се очаква да изпълнява задачите независимо.


27) Какво е сплотеност?

Кохезията е мярка, която определя вътрешната зависимост между елементите на модула.


28) Споменава някои софтуерни инструменти за анализ и проектиране?

Някои от най-важните софтуерни инструменти за анализ и проектиране са:

  • Диаграми на потока от данни
  • Структурирани диаграми
  • Структуриран английски
  • Речник на данни
  • Йерархичен входен процес и изходни диаграми
  • Диаграми на релации на обекти и таблици за решения

29) Какво означава ниво-0 диаграма на потока от данни?

Най-високото ниво на абстракция се нарича ниво 0 на DFD. Нарича се още DFD на ниво контекст. Той изобразява цялата информационна система като една диаграма.


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

Структурираният английски е роден английски език. Използва се за написване на структурата на програмен модул. Той използва ключови думи на езика за програмиране. От друга страна, псевдокодът е по-скоро език за програмиране без синтаксис на конкретен език.


Софтуерно инженерство viva Въпроси и отговори за опитни

31) Какво е структуриран дизайн?

Структурираният дизайн е концептуализация на проблема. Нарича се още дизайн на решение и се основава на стратегията „разделяй и владей“.


32) Какво е функционално програмиране?

Това е метод на програмиране, който използва понятията на математическа функция. Той предоставя средства за изчисление като математически функции, които също произвеждат резултати, независимо от състоянието на програмата.


33) Какво е осигуряване на качеството срещу контрол на качеството?

Осигуряването на качеството проверява дали се следва правилният процес при разработването на софтуера, докато контролът на качеството се занимава с поддържането на качеството на софтуерния продукт.


34) Какво представляват CASE инструментите?

CASE означава Computer Aided Софтуерно инженерство. Те са набор от автоматизирани софтуерни приложни програми, които се използват за поддръжка, подобряване и укрепване на дейностите на SDLC.


35) Кой модел на процес премахва дефектите, преди софтуерът да изпадне в беда?

Методът за софтуерно инженерство в чиста стая премахва дефектите, преди софтуерът да изпадне в беда.


36) Решете този проблем

В едно чекмедже в една тъмна стая има двадесет различни чорапа от два вида. Какъв е минималният брой чорапи, които трябва да вземете, за да сте сигурни, че имате подходящ чифт?“

Ако вземете три чорапа, те може да са от един и същи тип, дори ако шансовете са 50%. Шансовете никога не са равни реалност. Следователно, единственият начин да „сигурите, че имате съвпадаща двойка“ е да вземете поне 11 броя удари.


37) Как можете да се уверите, че вашият написан код може да се справи с различни видове ситуации на грешка?

Мога да пиша тестове, които определят очакваните ситуации на грешка.


38) Обяснете разликите между нишка и процес?

Процесът е екземпляр на компютърната програма. В една програма е възможно да има една или повече нишки.


39) Кажете ми разликата между EXE и DLL?

exe е изпълнима програма, докато DLL е файл, който може да се зарежда и изпълнява от програми динамично. Това е външно хранилище на кодове за програми. Тъй като и двете са различни програми, използвайте отново една и съща DLL, вместо да имате този код в техния файл. Освен това намалява необходимото пространство за съхранение.


40) Какво е силно типизиране и слабо типизиране? Кое е за предпочитане? защо

Силното въвеждане проверява типовете променливи по време на компилиране. От друга страна, слабото въвеждане проверява типовете на системата по време на изпълнение. Сред тях Strong typing винаги е предпочитан, защото минимизира бъговете.


41) Опишете разликата между интерфейсно-ориентирано, обектно-ориентирано и аспектно-ориентирано програмиране.

  • Програмирането на интерфейса е базирано на договор.
  • Обектно-ориентираният е начин за писане на гранулирани обекти, които имат една единствена цел.
  • Аспектно ориентираното програмиране е да разделя кода по такъв начин, че различни обекти да носят основните задачи, а спомагателните задачи да се изпълняват от независими обекти.

42) Защо използването на catch (exception) винаги е лоша идея?

Това е лоша идея, защото:

  • Тъй като няма дефинирана променлива, не е възможно да се прочете изключението
  • Добре е да използвате изключение, когато знаете типовете изключения.

43) Какъв тип данни се предават чрез HTTP заглавки?

Скрипт и метаданни, предавани чрез HTTP заглавки.


44) Как приоритизирате изискванията?

Първо, трябва да проектирате система, като оцените структурата на данните. След това трябва да преминете към структурата на кода, необходима за поддържането му.


45) Дайте ми разлики между обектно-ориентиран и компонентно-базиран дизайн?

Обектно-ориентираният дизайн може лесно да бъде капсулиран до известна степен в базиран на компоненти дизайн.


46) Кога използвате полиморфизъм?

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


47) Каква е разликата между стек и опашка?

  • Опашката винаги е Първи влязъл, първи излязъл
  • Стекът винаги е Последен влязъл, първи излязъл

48) Какво е от съществено значение за тестване на качеството на кода?

Според мен рамката за тестване на единици е от съществено значение за тестване на качеството на кода.


49) Смятате ли, че поддръжката на софтуер е скъпа?

Според мен поддръжката на софтуера никога няма да бъде скъпа, ако използваме правилния процес на разработка.


50) Дайте ми разлики между тагове и разклонения?

Етикетите са за издания за версии, които са временно задържане за извършване на подобни неща. Клоновете обаче се изтриват, когато тези промени се обединят в ствола.


51) Къде е достъпна защитена променлива на ниво клас?

Защитените променливи на ниво клас са достъпни за всеки подклас, извлечен от базовия клас.


52) Възможно ли е да се изпълнят множество catch блокове за един оператор try?

да Множество catch блокове могат да бъдат изпълнени за един оператор try.


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

Трябва да декларираме клас като абстрактен в следните ситуации:

  1. Когато класът е наследен от абстрактен клас, но не всички абстрактни методи са били заменени.
  2. В случай, че поне един от методите в класа е деклариран като абстракт.

54) Разработете алгоритъм, който извежда вашето текущо местоположение и списък с местоположения на банкомати в тази област. Намерете най-близките K банкомати до вашето местоположение.

Създайте метод getDistance(a, b), който изчислява разстоянието между a и b.

Код:

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;

}

}

Тези въпроси за интервюто също ще ви помогнат във вашата viva (устна)