Skip to main content

Наши вопросы по БД и Web-технологиям

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

Было несколько кандидатов-студентов, которые занимались написанием сайтов, но это были скорее люди, которые настраивают плагины для CMS и не имеют представления о том, как это работает внутри.
Читать дальше

Наши вопросы по криптографии

Криптография
Так как наша компания (https://ancud.ru/) занимается защитой информации, то хорошее знание криптографии никому не помешает.

Криптография

  1. Что такое симметричная и асимметричная криптография?
  2. Что такое хеш-функция? Какие хэш-функции вы знаете? Почему CRC32 не подходит? HMAC? KDF?
  3. Какие симметричные алгоритмы вы знаете? AES, 3DES, ГОСТ 28147-89, RC5, Blowfish?
  4. В чем отличие блочных шифров от поточных шифров? Сеть Фейстеля?
  5. Что такое режимы шифрования? ECB (простая замена), CBC, гаммирование, CFB (гаммирование c обратной связью).
  6. Какие асимметричные алгоритмы вы знаете? RSA, DSA, ГОСТ 34.10-2012?
  7. Причем тут односторонние функции? Дискретный логарифм и эллиптические кривые.
  8. Цифровая подпись (ЭЦП) и асимметричное шифрование.
  9. Инфраструктура открытых ключей (PKI). Зачем? Что содержит сертификат?
  10. Алгоритмы аутентификации. Как работают симметричные и асимметричные?
  11. Выработка сессионных ключей. Почему Диффи-Хелман – это не аутентификация? Что такое Forward Secrecy (прямая секретность)? Защита от MITM атак.
  12. Как часто надо менять ключи? А пароли? От чего это зависит?
  13. Чему равна криптостойкость пароля? А если его выбирает пользователь?
  14. Почему для криптографии важны случайные числа? Приведите пример атаки на ДСЧ.

Наши вопросы по программированию на C/C++

Вопросы C/C++

Следующий блок вопросов это самые важные вопросы для кандидата на позицию C/C++ программиста. Вопросы поделены на две категории. Надеюсь в современном мире все в курсе, что такое C++14. Но на всякий случай, оставлю тут ссылку на wiki. Знание совсем новых плюсов не обязательно, но крайне рекомендуется. На мой взгляд если человек работает в какой-то области и не интересуется, что в ней происходит последние лет 5, то ничего хорошего в этом нет.

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

Читать дальше

Наши вопросы по сетям

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

Вопросы по сетям

  1. Модель OSI с примерами протоколов, устройств и программ, работающих на каждом уровне (если есть)?
  2. Маршрутизация внутри сети. Как работает ARP? Зачем нужен MAC и IP?
  3. Маршрутизация между сетями. Автономные системы, OSPF и RIP, BGP?
  4. Разница между TCP и UDP? Что такое соединение и как оно создается?
  5. Как работает DHCP? Зачем он нужен?
  6. Как работает DNS? Зачем он нужен?
  7. Что такое NAT? Как он работает? NAT traversal?
  8. Зачем придумали IPv6? Какие проблемы и как именно он решает?
  9. Что такое VPN и как он работает? IPSec, PPTP, PPPoE и L2TP?
  10. Что такое SSL(TLS)?

Системные вещи. Ответы Часть 3.

Виртуальная память

Что такое виртуальная память?

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

Применение механизма виртуальной памяти позволяет:

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

Читать дальше

Системные вещи. Ответы Часть 2.

Режим ядра и режим пользователя

Продолжаю публиковать ответы на вопросы на наших собеседованиях. Вопрос про режимы ядра и многие последующие вопросы привязаны к той ОС, в которой вы работаете. В нашей компании активно разрабатываются проекты в Windows и Linux. Однако, так как большинство кандидатов лучше знают Windows, то и ответы будут публиковаться для Windows, если это не оговорено дополнительно. Кстати, по всем системным вещам Windows стоит обращаться к замечательной книге М. Руссинович, Д. Соломон — Внутреннее устройство Microsoft Windows. В ней даны подробные ответы на все системные вопросы нашего собеседования. Если же вам больше интересно как все работает внутри Linux, то я рекомендую обратиться к книге Таненбаум Э. — Современные операционные системы.

Что такое режим ядра и режим пользователя?

Для предотвращения доступа приложений к критически важным данным операционной системы и устранения риска их модификации Windows использует два режима доступа к процессору: пользовательский (user mode) и ядра (kernel mode). Код приложений работает в пользовательском режиме, тогда как код операционной системы (например, системные сервисы и драйверы устройств) — в режиме ядра. B режиме ядра предоставляется доступ ко всей системной памяти и разрешается выполнять любые машинные команды процессора. Предоставляя операционной системе более высокий уровень привилегий, чем прикладным программам, процессор позволяет разработчикам операционных систем реализовать такие архитектуры, которые не дают возможности сбойным приложениям нарушать стабильность работы всей системы.

Читать дальше

Системные вещи. Ответы Часть 1.

Системные вещи

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

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

Я напишу некоторый минимум, который мы хотели бы услышать от кандидата по каждому вопросу.

Читать дальше

Собеседования и вопросы

Cобеседования и вопросы

Предыстория

За последний год работы в компании мне довелось провести более 50 собеседований. Большинство из них проводилось на позицию программист-стажер\программист C\C++.
Отмечу, что мне очень нравится беседовать с новыми людьми, особенно с программистами. Ведь очень интересно, чем занимаются люди в IT и какие проекты делают в других компаниях.

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

Читать дальше