Различные уровни опыта с краткими перечисленными темами

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

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

Начальный уровень/первокурсники

опыт 0–2 года

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

Вот некоторые из вопросов, которые задают первокурсникам, в дополнение к их весу.

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

Структура данных и алгоритмы:вес 70–80 %

  • Сортировка
  • Идет поиск
  • Связанный список
  • Множество
  • Дерево
  • График
  • Куча
  • Очередь
  • Поиск в глубину
  • Дыхание сначала поиск
  • Кратчайший путь
  • Манипуляции со строками
  • Бинарный поиск
  • Возвращение
  • Рекурсия
  • Динамическое программирование
  • Анализ временной сложности
  • Матричный расчет

Другие основные предметы информатики:удельный вес 20–30 %

  1. OOPS: классы, наследование, полиморфизм, инкапсуляция и т. д.
  2. Операционная система: поток, процесс, алгоритмы планирования, виртуальная память, многопоточность и т. д.
  3. СУБД: команды SQL Basic, свойства ACID, нормализация, отношения сущностей, уровни изоляции и т. д.
  4. Сеть: уровни OSI и TCP/IP, сетевые протоколы, маршрутизация, топология сети и т. д.

Промежуточный уровень

опыт 3–8 лет

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

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

Вопросы DSA относятся к среднему и сложному уровню сложности и могут потребовать твердого понимания относительно сложных алгоритмов и структур данных.

Пограничные случаи должны быть хорошо обработаны, а реализация должна быть безошибочной и чистой.

Структура данных и алгоритмы:вес 40–50 %

  • Динамическое программирование
  • Бинарный поиск
  • HashMap и HashSet
  • Топологическая сортировка
  • Куча и приоритетная очередь
  • попробовать
  • Суффиксный массив
  • КМП и Рабин Карп
  • Минимальные остовные деревья
  • Двоичное индексированное дерево
  • Дерево сегментов
  • Обход дерева
  • Кратчайший путь с приоритетной очередью

Шаблоны проектирования и реализация системы:уровень веса 20–30 %

  1. Шаблоны проектирования: шаблон Factory, шаблон Singelton, шаблон стратегии, шаблон наблюдателя, шаблон декоратора, шаблон строителя, шаблон итератора, шаблон команды и т. д.
  2. SOLID Принципы
  3. Другие принципы программирования, такие как DRY, KISS, YAGNI, разделение интересов и т. д.

Дизайн системы:удельный вес 20–30 %

  1. Сокращение URL-адресов, временная шкала Twitter, служба обмена фотографиями, лента новостей и т. д.
  2. Хеширование, кэширование, внутренние компоненты NoSQL, теорема CAP, распределенные проекты и т. д.

Старший уровень

опыт работы более 8 лет

Старшие инженеры должны хорошо разбираться в системе и иметь реальный опыт работы с распределенными и масштабируемыми системами.

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

Системный дизайн и архитектурные шаблоны:уровень веса 50–60 %

  1. Монолитные, микросервисы, виртуализация, LSM-дерево, SS-таблицы, очереди сообщений, кэширование, поисковые системы и т. д.
  2. Docker/Kubernetes, Redis, Kafka, Cassandra, Elastic Search, Spark и т. д.
  3. Системные проекты, которые могут масштабироваться до миллионов запросов, API-интерфейс ограничения скорости потока, горизонтальное / вертикальное масштабирование, согласованное хеширование, теорема CAP и т. д.
  4. MD5, SHA 256, CDN, балансировка нагрузки, кэширование, сегментирование, секционирование, репликация, индексация базы данных и т. д.

Принципы программирования и дизайн программного обеспечения:уровень веса 20–30 %

  1. Шаблоны проектирования
  2. Принципы SOLID, DRY, KISS, YAGNI и т. д.
  3. Разработка через тестирование
  4. лучшие практики кодирования и тестирования
  5. стандарты код-ревью.

Структура данных и алгоритмы:весовой коэффициент 10–20 %

  • попробовать
  • АВЛ / Красное черное дерево
  • Объединение непересекающихся множеств
  • Битовые манипуляции
  • Динамическое программирование
  • Ленивое распространение
  • Алгоритмы графов

Это довольно краткий список предметов для каждого уровня опыта.

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

Спасибо за прочтение :)

Подпишитесь на Skilled Coder в Twitter и Instagram