Различные уровни опыта с краткими перечисленными темами
В этой статье были рассмотрены темы внутренней разработки программного обеспечения и форматы интервью по программному обеспечению.
Большинство крупных технологических компаний и стартапов используют аналогичный формат интервью, и вы можете ожидать, что большинство вопросов будут касаться упомянутых тем.
Начальный уровень/первокурсники
опыт 0–2 года
Первокурсников обычно спрашивают об основах компьютерных наук с акцентом на структуру данных и алгоритмы, а также о том, насколько эффективно и быстро они могут реализовать решение.
Вот некоторые из вопросов, которые задают первокурсникам, в дополнение к их весу.
Первокурсникам нужны очень хорошие практические навыки работы с базовыми структурами данных и алгоритмами, и их реализация должна быть приличной.
Структура данных и алгоритмы:вес 70–80 %
- Сортировка
- Идет поиск
- Связанный список
- Множество
- Дерево
- График
- Куча
- Очередь
- Поиск в глубину
- Дыхание сначала поиск
- Кратчайший путь
- Манипуляции со строками
- Бинарный поиск
- Возвращение
- Рекурсия
- Динамическое программирование
- Анализ временной сложности
- Матричный расчет
Другие основные предметы информатики:удельный вес 20–30 %
- OOPS: классы, наследование, полиморфизм, инкапсуляция и т. д.
- Операционная система: поток, процесс, алгоритмы планирования, виртуальная память, многопоточность и т. д.
- СУБД: команды SQL Basic, свойства ACID, нормализация, отношения сущностей, уровни изоляции и т. д.
- Сеть: уровни OSI и TCP/IP, сетевые протоколы, маршрутизация, топология сети и т. д.
Промежуточный уровень
опыт 3–8 лет
По сравнению с первокурсниками, инженерам среднего звена или SDE-2 требуется больше практических знаний в области разработки программного обеспечения.
Основное внимание уделяется решению проблем, знанию языка, применимости в реальной разработке и четкому пониманию того, как работают масштабируемые системы.
Вопросы DSA относятся к среднему и сложному уровню сложности и могут потребовать твердого понимания относительно сложных алгоритмов и структур данных.
Пограничные случаи должны быть хорошо обработаны, а реализация должна быть безошибочной и чистой.
Структура данных и алгоритмы:вес 40–50 %
- Динамическое программирование
- Бинарный поиск
- HashMap и HashSet
- Топологическая сортировка
- Куча и приоритетная очередь
- попробовать
- Суффиксный массив
- КМП и Рабин Карп
- Минимальные остовные деревья
- Двоичное индексированное дерево
- Дерево сегментов
- Обход дерева
- Кратчайший путь с приоритетной очередью
Шаблоны проектирования и реализация системы:уровень веса 20–30 %
- Шаблоны проектирования: шаблон Factory, шаблон Singelton, шаблон стратегии, шаблон наблюдателя, шаблон декоратора, шаблон строителя, шаблон итератора, шаблон команды и т. д.
- SOLID Принципы
- Другие принципы программирования, такие как DRY, KISS, YAGNI, разделение интересов и т. д.
Дизайн системы:удельный вес 20–30 %
- Сокращение URL-адресов, временная шкала Twitter, служба обмена фотографиями, лента новостей и т. д.
- Хеширование, кэширование, внутренние компоненты NoSQL, теорема CAP, распределенные проекты и т. д.
Старший уровень
опыт работы более 8 лет
Старшие инженеры должны хорошо разбираться в системе и иметь реальный опыт работы с распределенными и масштабируемыми системами.
Наряду с сильными аналитическими способностями и глубоким пониманием внутренностей языка они должны быть знакомы с несколькими технологиями больших данных и иметь практический опыт работы с масштабируемыми параллельными системами.
Системный дизайн и архитектурные шаблоны:уровень веса 50–60 %
- Монолитные, микросервисы, виртуализация, LSM-дерево, SS-таблицы, очереди сообщений, кэширование, поисковые системы и т. д.
- Docker/Kubernetes, Redis, Kafka, Cassandra, Elastic Search, Spark и т. д.
- Системные проекты, которые могут масштабироваться до миллионов запросов, API-интерфейс ограничения скорости потока, горизонтальное / вертикальное масштабирование, согласованное хеширование, теорема CAP и т. д.
- MD5, SHA 256, CDN, балансировка нагрузки, кэширование, сегментирование, секционирование, репликация, индексация базы данных и т. д.
Принципы программирования и дизайн программного обеспечения:уровень веса 20–30 %
- Шаблоны проектирования
- Принципы SOLID, DRY, KISS, YAGNI и т. д.
- Разработка через тестирование
- лучшие практики кодирования и тестирования
- стандарты код-ревью.
Структура данных и алгоритмы:весовой коэффициент 10–20 %
- попробовать
- АВЛ / Красное черное дерево
- Объединение непересекающихся множеств
- Битовые манипуляции
- Динамическое программирование
- Ленивое распространение
- Алгоритмы графов
Это довольно краткий список предметов для каждого уровня опыта.
В зависимости от конкретных требований организации могут быть некоторые различия, но цель состоит в том, чтобы дать вам хорошее представление о том, чего следует ожидать.
Спасибо за прочтение :)