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) Что такое технико-экономическое обоснование?
Это мера, позволяющая выяснить, насколько практичной и полезной окажется для организации разработка проекта программного обеспечения. Программный анализатор проводит исследование, чтобы узнать экономическую, техническую и эксплуатационную осуществимость проекта.
- Экономические: Он включает в себя стоимость обучения, стоимость дополнительных инструментов и общей оценки затрат и выгод проекта.
- Технические: Он оценивает техническую сторону. Возможно ли развитие этой системы? Оценка пригодности машины(ов) и ОС, на которой будет работать программное обеспечение, знание разработки программного обеспечения и инструментов, доступных для этого проекта.
- Operaциональный: Здесь аналитику необходимо оценить, сможет ли организация плавно приспособиться к изменениям, внесенным в соответствии с требованиями проекта. Стоит ли решать проблему по предполагаемой стоимости?
После изучения всего этого создается итоговое технико-экономическое обоснование.
24) Что такое функциональные и нефункциональные требования?
Функциональные требования – это функциональные особенности, которые ожидают пользователи от предлагаемого программного продукта.
Нефункциональные требования связаны с безопасностью, производительностью, внешним видом и ощущением пользовательского интерфейса.
25) Что такое метрика программного обеспечения?
Software Metrics предлагает меры для различных аспектов процесса разработки программного обеспечения, которые делятся на:
- Метрики требований: требования к длине, полнота.
- Метрики продукта: количество строк кодирования, объектно-ориентированные метрики, метрики проектирования и тестирования.
26) Что такое модульность?
Модуляризация — это метод, который используется для разделения программной системы на различные дискретные модули. Предполагается, что задачи будут выполняться самостоятельно.
27) Что такое сплоченность?
Сплоченность — это мера, определяющая внутреннюю надежность элементов модуля.
28) Упоминает какие-нибудь инструменты анализа и проектирования программного обеспечения?
Некоторые из наиболее важных инструментов анализа и проектирования программного обеспечения:
- Диаграммы потоков данных
- Структурированные диаграммы
- Структурированный английский
- Словарь данных
- Иерархические диаграммы процесса ввода и вывода
- Диаграммы отношений сущностей и таблицы решений
29) Что подразумевается под схемой потока данных уровня 0?
Самый высокий уровень абстракции называется уровнем 0 DFD. Его также называют DFD контекстного уровня. Он изображает всю информационную систему в виде одной диаграммы.
30) В чем основная разница между структурированным английским языком и псевдокодом?
Структурированный английский является родным английским языком. Он используется для записи структуры программного модуля. Он использует ключевые слова языка программирования. С другой стороны, псевдокод больше похож на язык программирования без синтаксиса какого-либо конкретного языка.
Программная инженерия viva Вопросы и ответы для опытных
31) Что такое структурированный дизайн?
Структурированный дизайн — это концептуализация проблемы. Это также называется разработкой решений и основано на стратегии «разделяй и властвуй».
32) Что такое функциональное программирование?
Это метод программирования, в котором используются понятия математической функции. Он предоставляет средства вычислений в виде математических функций, которые также дают результаты независимо от состояния программы.
33) Что такое обеспечение качества и контроль качества?
Служба обеспечения качества проверяет, соблюдаются ли надлежащие процессы при разработке программного обеспечения, а контроль качества занимается поддержанием качества программного продукта.
34) Что такое CASE-инструменты?
CASE означает компьютерное управление. Программная инженерия. Это набор автоматизированных прикладных программ, которые используются для поддержки, расширения и усиления деятельности SDLC.
35) Какая модель процесса устраняет дефекты до того, как программное обеспечение выйдет из строя?
Метод разработки программного обеспечения «чистой комнаты» устраняет дефекты до того, как программное обеспечение попадет в беду.
36) Решите эту проблему
В ящике в одной темной комнате лежит двадцать разных носков двух типов. Какое минимальное количество носков вам нужно взять, чтобы получить подходящую пару?»
Если вы подберете три носка, они могут быть одного типа, даже если вероятность составляет 50%. Шансы никогда не равны реальности. Таким образом, единственный способ «убедиться, что у вас есть подходящая пара» — это подобрать как минимум 11 шоков.
37) Как убедиться, что написанный вами код способен обрабатывать различные виды ошибок?
Я могу писать тесты, определяющие ожидаемые ошибочные ситуации.
38) Объясните разницу между потоком и процессом?
Процесс — это экземпляр компьютерной программы. В одной программе можно иметь один или несколько потоков.
39) Скажите мне разницу между EXE и DLL?
EXE — это исполняемая программа, а DLL — это файл, который может загружаться и выполняться программами динамически. Это внешний репозиторий кода для программ. Поскольку обе программы являются разными, используйте повторно одну и ту же DLL вместо того, чтобы хранить этот код в своем файле. Это также уменьшает необходимое пространство для хранения.
40) Что такое строгая и слабая типизация? Что предпочтительнее? Почему?
Строгая типизация проверяет типы переменных во время компиляции. С другой стороны, слабая типизация проверяет типы системы во время выполнения. Среди них всегда предпочтительнее строгая типизация, поскольку она сводит к минимуму количество ошибок.
41) Опишите разницу между интерфейсно-ориентированным, объектно-ориентированным и аспектно-ориентированным программированием.
- Программирование интерфейса основано на контракте.
- Объектно-ориентированный — это способ написания детализированных объектов, имеющих одну цель.
- Аспектно-ориентированное программирование заключается в разделении кода таким образом, чтобы различные объекты выполняли основные задачи, а второстепенные задачи выполнялись независимыми объектами.
42) Почему использование catch (исключения) всегда плохая идея?
Это плохая идея, потому что:
- Поскольку переменная не определена, невозможно прочитать исключение.
- Исключение полезно использовать, если известны типы исключений.
43) Какой тип данных передается через HTTP-заголовки?
Скрипт и метаданные передаются через HTTP-заголовки.
44) Как вы расставляете приоритеты требований?
Во-первых, вам необходимо спроектировать систему, оценив структуру данных. Затем вам следует перейти к структуре кода, необходимой для его поддержки.
45) Назовите мне разницу между объектно-ориентированным и компонентным проектированием?
Объектно-ориентированное проектирование может быть легко инкапсулировано в некоторой степени в компонентно-ориентированное проектирование.
46) Когда вы используете полиморфизм?
Полиморфизм используется, когда необходимо переопределить функциональность при наследовании класса. Речь идет об общих занятиях и общих контрактах.
47) В чем разница между стеком и очередью?
- Очередь всегда «первым пришел — первым вышел»
- Стек всегда в порядке «последним вошел — первым вышел»
48) Что необходимо для проверки качества кода?
По моему мнению, среда модульного тестирования необходима для проверки качества кода.
49) Считаете ли вы, что обслуживание программного обеспечения обходится дорого?
По моему мнению, обслуживание программного обеспечения никогда не будет дорогим, если мы используем правильный процесс разработки.
50) Назовите мне различия между тегами и ветками?
Теги предназначены для версий релизов, которые являются временными местами хранения для таких действий. Однако ветки удаляются, когда эти изменения объединяются со стволом.
51) Где доступна защищенная переменная уровня класса?
Защищенные переменные уровня класса доступны любому подклассу, производному от базового класса.
52) Можно ли выполнить несколько блоков catch для одного оператора try?
Да. Для одного оператора try может быть выполнено несколько блоков catch.
53) Когда нужно объявлять класс как абстрактный?
Мы должны объявить класс как абстрактный в следующих ситуациях:
- Когда класс унаследован от абстрактного класса, но не все абстрактные методы были переопределены.
- В случае, когда минимум один из методов класса объявлен как абстрактный.
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;
}
}
Эти вопросы для собеседования также помогут вам в устной речи.
