Вопросы и ответы на собеседовании по программной инженерии [для новичков и опытных]

Опубликовано: 2020-11-18

Разработка программного обеспечения сегодня является одной из самых востребованных профессий. Успешные профессионалы в этой конкурентной сфере должны сбалансировать свои технические, деловые и личные навыки, чтобы оставаться впереди в игре.

Более того, технический прогресс ускоряет и разрушает отрасли. Таким образом, очень важно быть в курсе основных понятий. В этой статье мы коснемся основных вопросов и ответов на собеседования по разработке программного обеспечения, которые помогут вам в подготовке.

Прежде чем мы перейдем к вопросам и ответам, давайте сначала взглянем на несколько обозначений должностей, которые вы можете занять в этой области:

  • Разработчик программного обеспечения
  • Full-stack разработчик
  • Программист
  • Менеджер ИТ-проектов
  • Менеджер информационных систем
  • Специалист по данным
  • Инженер по машинному обучению
  • Облачный инженер
  • Инженер по кибербезопасности

При собеседовании на любую из вышеперечисленных должностей ваш потенциальный работодатель проверит ваши концептуальные знания и навыки. Таким образом, начинающие инженеры-программисты могут извлечь выгоду из сочетания своих степеней с практическим опытом, будь то практические проекты или стажировки.

Кроме того, ваши коммуникативные способности и командная ориентация могут сыграть важную роль в выделении вас среди конкурентов. Так что, готовясь к циклу найма, помните об этом.

Изучайте онлайн-курсы по программному обеспечению от лучших университетов мира. Участвуйте в программах Executive PG, Advanced Certificate Programs или Master Programs, чтобы ускорить свою карьеру.

Теперь пришло время углубиться в наиболее часто задаваемые вопросы на собеседованиях по разработке программного обеспечения.

Читайте: Карьера в разработке программного обеспечения

Вопросы и ответы на собеседовании по разработке программного обеспечения

1. Перечислите различные типы программного обеспечения.

Компьютерное программное обеспечение можно разделить на следующие категории:

  • Программное обеспечение
  • Программное обеспечение
  • Веб-приложения
  • Встроенное программное обеспечение
  • программное обеспечение ИИ
  • Научное программное обеспечение

2. Проведите различие между компьютерной программой и компьютерным программным обеспечением.

Компьютерная программа содержит программный код, способный выполнять четко определенную задачу при выполнении. И наоборот, компьютерное программное обеспечение включает в себя файлы (документацию и руководство пользователя) в дополнение к программному коду. Следовательно, и программа, и программное обеспечение содержат набор инструкций, но область применения программного обеспечения шире по сравнению с программой.

3. Объясните основные этапы SDLC.

SDLC — это краткая форма жизненного цикла разработки программного обеспечения. Он состоит из многих этапов, в том числе:

  • Планирование: оценка программного обеспечения и другие аспекты планирования проекта.
  • Анализ осуществимости: анализ требований, составление списка спецификаций программного обеспечения.
  • Дизайн программного обеспечения: выбор шаблонов проектирования, разработка прототипов
  • Разработка программного обеспечения: преобразование требований в рабочий код
  • Тестирование: проверка кода на заявленные требования, качество, методы безопасной разработки и т. д.
  • Развертывание: внедрение программного обеспечения и его интеграция с различными системами для создания полнофункционального продукта.
  • Документация по проекту: сбор ресурсов и систематизация файлов программного обеспечения, включая коды, документы и лицензии.
  • Обучение и поддержка: информирование об использовании, функциях и возможностях новой технологии и содействие эффективной передаче знаний.
  • Эксплуатация и обслуживание: сообщение о проблемах и внесение улучшений в продукт

4. Перечислите несколько основных моделей и методологий SDLC. По вашему мнению, что лучше?

Waterfall, V-Model, Iterative, Spiral, Big-bag и Agile — одни из самых популярных моделей SDLC.

Что касается методологии с лучшим рейтингом, единого ответа нет, поскольку решение зависит от необходимости процесса разработки программного обеспечения. Например, модель Waterfall подходит для долгосрочных проектов, где предпочтительна гибкость. V-образная модель хорошо работает, когда есть неизвестные требования. Модель Spiral идеально подходит для проектов с высокой степенью индивидуальности и т. д.

5. Что вы подразумеваете под реинжинирингом программного обеспечения?

Реинжиниринг программного обеспечения направлен на улучшение системы программного обеспечения. Это процесс обновления программного обеспечения без вмешательства в его текущую функциональность. Он может включать в себя задачи по ремонтопригодности, такие как добавление новых функций, чтобы сделать программный продукт более эффективным и удобным для пользователя.

6. Определите следующее в контексте разработки программного обеспечения: (i) проверка (ii) проверка (iii) отладка

(i) Верификация включает в себя выполнение ряда действий, чтобы гарантировать, что программное обеспечение может выполнять определенную функцию.

(ii) Валидация заключается в подтверждении того, что программное обеспечение соответствует потребностям клиентов.

(iii) Отладка является частью процесса тестирования, включая устранение ошибок.

7. Как бы вы обеспечили скорость и безопасность своего кода?

Если выполнение кода медленное, вы рассчитаете временную сложность программы. Это относится к тому, сколько раз выполняется оператор, что зависит от языка программирования, операционной системы и вычислительной мощности, среди других факторов.

Кроме того, независимо от языка программирования, который вы используете, существует несколько способов защиты вашего кода. Здесь знание методов безопасного кодирования становится необходимым. Например, сканирование кода с помощью бесплатных инструментов может помочь вам обнаружить уязвимости в пакетах с открытым исходным кодом на GitHub.

8. Каковы требования к функциональному и нефункциональному программному обеспечению?

Требования — это описания программной системы, ее желаемых функций и целевых функций. Их можно разделить на функциональные и нефункциональные требования.

Функциональные требования — это то, что пользователи ожидают от предлагаемого продукта, а нефункциональные требования относятся к таким аспектам, как внешний вид, производительность, безопасность и пользовательский интерфейс.

9. Как бы вы отслеживали требования к программному обеспечению?

На рынке доступно множество инструментов для сбора требований к программному обеспечению и управления ими. Современные требования, ReQtest, Jama Connect и Orcanos сегодня являются одними из самых востребованных среди практиков программ RM. Выбор основан на методологиях и целях и отличается от проекта к проекту. Тем не менее, первым шагом в процессе отслеживания является составление списка требований и создание листа Excel с такими подробностями, как тип, зависимость, приоритет и т. д.

10. Что вы знаете о модульности и связности?

Модульность делит программную систему на отдельные модули. Здесь ожидается, что каждый модуль будет выполнять определенные задачи независимо. Сплоченность измеряет и определяет внутреннюю надежность различных элементов модуля.

11. Что делает менеджер проекта по программному обеспечению?

На руководителя проекта возложены такие обязанности, как планирование проекта, мониторинг прогресса и общение. В процессе разработки программного обеспечения основной обязанностью руководителя проекта является управление ресурсами, балансировка рисков и поставка намеченного продукта с соблюдением ограничений по времени, стоимости и качеству.

12. Что такое объем программного обеспечения?

Объем программного обеспечения включает в себя все действия, необходимые для доставки программного продукта. Он определяет следующие аспекты для оптимизации процесса разработки:

  • Что будет делать продукт
  • Что не входит в проект
  • Оценка проекта (с помощью консультантов, экспертов или формул)

13. Как вы определите осуществимость вашего проекта?

Технико-экономическое обоснование помогает измерить практические преимущества, которые проект разработки программного обеспечения может принести организации. Анализаторы программного обеспечения учитывают три основных фактора, прежде чем подготовить свой окончательный отчет. Мы подробно объяснили их ниже:

  • Экономичность: стоимость дополнительных функций и инструментов, затраты на обучение и общий анализ затрат и результатов окончательного проекта.
  • Технические: пригодность машин и операционного программного обеспечения, включая возможность разработки предлагаемой системы с доступной технической поддержкой и человеческими ресурсами.
  • Оперативный: Возможность вносить коррективы и идти в ногу с требованиями и ценностью проекта по сметной стоимости.

14. Упомяните несколько инструментов анализа и проектирования программного обеспечения.

Анализ программного обеспечения и процедуры проектирования помогают преобразовать спецификации требований в реализацию. Вот несколько стандартных инструментов:

  • Диаграммы потоков данных
  • Словарь данных
  • Структурированные диаграммы
  • Диаграммы HIPO (иерархический ввод-вывод)
  • Диаграммы сущность-связь или ER
  • Таблицы решений

15. В чем разница между структурированным английским языком и псевдокодом?

Родной английский язык, используемый для написания структуры программного модуля, известен как структурированный английский. Он включает ключевые слова языка программирования.

Напротив, методология псевдокода очень похожа на язык программирования, но без какого-либо определенного синтаксиса.

Читайте также: Идеи проекта разработки программного обеспечения

16. Как узнать размер программного продукта?

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

17. Что такое программные метрики?

Метрики программного обеспечения относятся к измерениям требований и самого продукта.

  • Метрики требований включают такие аспекты, как длина и полнота.
  • Метрики продукта относятся к количеству строк кодирования, дизайну, тестовым метрикам, объектно-ориентированным метрикам и т. д.

18. Какие есть полезные методы оценки проекта?

Оценка проекта является неотъемлемой частью надежного планирования проекта программного обеспечения. Вот некоторые широко используемые методы:

  • Декомпозиция (определение размера программного обеспечения, методы, основанные на проблемах и процессах)
  • Эмпирический (регрессионный анализ, конструктивная модель затрат и уравнение программного обеспечения)

19. Как бы вы оценили выполнение проекта?

Обзор внедрения программного обеспечения повлечет за собой мониторинг деятельности, контрольные списки этапов и отчеты о состоянии.

Инструменты управления проектами обеспечивают удобный способ проверки хода выполнения. Диаграмма Ганта, диаграмма Перта и гистограмма ресурсов — вот некоторые другие примеры.

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

Управление конфигурацией — это отслеживание и контроль изменений в программном проекте. Жизненно важно поддерживать согласованность программной системы с организационными правилами и нормами.

21. В чем разница между обеспечением качества и контролем качества?

Проверки обеспечения качества выполняются, чтобы выяснить, был ли соблюден надлежащий процесс разработки. С другой стороны, контроль качества связан с поддержанием качества конечного продукта.

22. Сравните интерфейсно-ориентированное, объектно-ориентированное и аспектно-ориентированное программирование.

Программирование интерфейса — это архитектурный шаблон на основе контрактов, применяемый для достижения модульного дизайна на уровне компонентов.

Объектно-ориентированное программирование имеет дело с написанием гранулярных объектов, имеющих единственную цель.

Аспектно-ориентированное программирование направлено на разделение кода таким образом, чтобы несколько объектов выполняли основные задачи, а независимые объекты выполняли вспомогательные задачи.

23. Когда объявлять класс абстрактным?

Класс, содержащий абстрактное ключевое слово в своем объявлении, не может быть создан. В ситуациях, упомянутых ниже, лучше всего объявить класс как абстрактный.

  • Когда хотя бы один из методов в классе объявлен как абстрактный.
  • Когда класс, унаследованный от абстрактного класса, по-прежнему включает абстрактные методы.

24. Назовите основное различие между: (i) стеком и очередью (ii) объектно-ориентированным и компонентно-ориентированным проектированием (iii) потоком и процессом (iv) EXE и DLL (v) тегами и ветвями

(i) Стек следует принципу «последний пришел, первый ушел» (LIFO). Принимая во внимание, что очередь всегда FIFO, т. е. «первым пришел, первым вышел».

(ii) Объектно-ориентированный дизайн может быть до некоторой степени включен в компонентный дизайн. Однако обратное невозможно.

(iii) «Процесс» относится к экземпляру выполняемой компьютерной программы. Это тяжелее и требует большего переключения контекста. «Поток» — это легкий процесс, которым планировщик управляет независимо. Одна программа может иметь более одного потока.

(iv) И EXE, и DLL являются программами, для запуска которых требуется место на диске. В то время как EXE является базовой исполняемой программой, DLL более динамична. Это внешний репозиторий кода, который вы можете загружать и выполнять, поэтому он занимает меньше места.

(v) Теги остаются в конкретной версии кода и обычно не меняются. Они действуют как временные хранилища для выпусков версий. Ответвления всегда указывают на вершину линии развития. Таким образом, они удаляются при отправке нового коммита или при объединении изменений в магистраль.

25. Стоит ли использовать catch (исключение)?

Catch (исключение) следует использовать, когда известны типы исключений. Это плохая идея, так как вы не можете прочитать исключение, если переменная не определена.

26. Что предпочтительнее: строгое или слабое типирование?

Предполагается, что строгая типизация превосходит слабую типизацию, поскольку она проверяет переменные во время компиляции. Кроме того, это может значительно минимизировать системные ошибки. Язык со слабой типизацией выполняет преобразования только во время выполнения и может привести к непредсказуемым результатам.

27. Что такое структурированный дизайн?

Структурированный дизайн концептуализирует проблему в соответствии со стратегией «разделяй и властвуй». Этот систематический подход предполагает разбиение проблемы на ее подэлементы и индивидуальное решение этих более мелких вопросов. Из-за этой тактики его также называют методом проектирования решения.

28. Опишите функциональное программирование.

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

29. Как вы определяете приоритеты требований?

Прежде всего, вы должны оценить структуру данных. Затем вам нужно будет сформулировать структуру кода для поддержки того же самого.

30. Что вы знаете об инструментах CASE?

CASE — это сокращенный термин для автоматизированной разработки программного обеспечения. Он состоит из набора автоматизированных программных приложений, поддерживающих действия SDLC. Инструменты CASE могут улучшать и укреплять программные проекты, предлагая следующие услуги:

  • Анализ требований
  • Структурный анализ
  • Генерация кода
  • Генерация тестовых случаев
  • Изготовление документов
  • Обратный инжиниринг

Выводы

Бюро трудовой статистики (США) прогнозирует, что спрос на разработчиков программного обеспечения вырастет на 22 процента в течение следующего десятилетия. И Индия, вероятно, столкнется с таким же всплеском спроса.

Согласно «Отчету о рабочей силе в Индии» от LinkedIn, в первой половине 2018 года количество объявлений о вакансиях по разработке программного обеспечения на его платформе было самым высоким во многих отраслях. продолжать расти. Узнайте о зарплате разработчика программного обеспечения в Индии.

Как видно из вопросов, перечисленных выше, тому, кто хочет заняться этой профессией, потребуется широкий спектр взаимосвязанных компетенций. Вот краткий обзор сложных навыков, которые вам необходимо освоить:

  • С++, С#, Ява
  • HTML, CSS JavaScript
  • SQL, Python, Bootstrap
  • Объектно-ориентированный дизайн
  • Отладка и тестирование программного обеспечения
  • Программирование на современных языках (Ruby, Go, R и др.)
  • Знание проектов искусственного интеллекта и т. д.

Помимо этих технических способностей, вам необходимо овладеть искусством многозадачности, общения, тайм-менеджмента, внимания к деталям и работы в команде.

Что касается образовательной квалификации, степень бакалавра в области компьютерных наук или смежных областей обычно соответствует минимальным критериям приемлемости для работы начального уровня. Но карьерный путь у всех оказывается немного другим. Некоторые, возможно, вошли в состав рабочей силы через самообучение, онлайн-курсы или учебные курсы по программированию. Другие, возможно, получили ученую степень, проработав несколько лет в сфере ИТ.

Наличие аттестата аспирантуры может помочь вам начать карьеру и даже получить желанное продвижение по службе. Ознакомьтесь со степенью магистра компьютерных наук upGrad, сертифицированной Ливерпульским университетом Джона Мура. Он направлен на то, чтобы вооружить вас отраслевыми навыками с помощью интерактивной педагогики.

Вы также можете пройти программу Executive PG по разработке программного обеспечения — специализация по разработке полного стека от IIIT-B или специализированную сертификацию PG, в зависимости от ваших интересов и карьерных устремлений. Такие сертификаты требуют более короткого времени по сравнению с курсами магистратуры и диплома. Они позволяют вам продемонстрировать свои навыки в определенной области, такой как внутренняя разработка, разработка внешнего интерфейса, кибербезопасность, DevOps, большие данные и облачные вычисления.

На этом мы рассмотрели самые популярные вопросы и ответы на собеседованиях по разработке программного обеспечения . Мы попытались включить как общие, так и технические темы. Кроме того, мы упомянули возможные варианты карьеры и предоставили обзор тенденций и перспектив в ИТ-индустрии. Используйте эту информацию в качестве указателя на пути к обучению и оптимизируйте свою стратегию подготовки!

Получите работу своей мечты

Подать заявку на степень магистра компьютерных наук