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) Розкажіть мені про деякі інструменти управління проектами.

Існує багато типів інструментів керування, які використовуються відповідно до потреби в проекті програмного забезпечення. Деякі з них – діаграма Перта, діаграма Ганта, гістограма ресурсів, звіти про стан тощо.


22) Які вимоги до програмного забезпечення?

Вимоги до програмного забезпечення – це функціональний опис запропонованої програмної системи. Передбачається, що це опис цільової системи, її функціональних можливостей і характеристик.


23) Що таке техніко-економічне обґрунтування?

Це міра, щоб дізнатися, наскільки практичним і корисним буде розробка проекту програмного забезпечення для організації. Аналізатор програмного забезпечення проводить дослідження, щоб дізнатися економічну, технічну та експлуатаційну доцільність проекту.

  1. Економічний: Він включає вартість навчання, вартість додаткових інструментів і загальну оцінку витрат і вигод проекту.
  2. Технічний: Оцінює технічний аспект. Чи можливо розвинути цю систему? Оцінка придатності машини (машин) і ОС, на яких буде працювати програмне забезпечення, знання розробки програмного забезпечення та інструментів, доступних для цього проекту.
  3. Operational: Тут аналітик повинен оцінити, чи зможе організація плавно пристосуватися до внесених змін відповідно до попиту на проект. Чи варто проблему вирішувати за орієнтовну вартість?

Після вивчення всього цього створюється остаточний ТЕО.


24) Що таке функціональні та нефункціональні вимоги?

Функціональні вимоги – це функціональні властивості, які очікуються користувачами від запропонованого програмного продукту.

Нефункціональні вимоги пов’язані з безпекою, продуктивністю, зовнішнім виглядом інтерфейсом користувача.


25) Що таке програмна метрика?

Software Metrics пропонує вимірювання для різних аспектів процесу програмного забезпечення, які поділяються на:

  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) Що таке сильна та слабка типізація? Що надати перевагу? чому

Строга типізація перевіряє типи змінних під час компіляції. З іншого боку, слабка типізація перевіряє типи системи під час виконання. Серед них завжди перевага віддається жорсткій типізації, оскільки вона мінімізує кількість помилок.


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;

}

}

Ці запитання для співбесіди також допоможуть вам у життєдіяльності (усному)