Skip to main content

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

Криптография
Так как наша компания (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. Почему для криптографии важны случайные числа? Приведите пример атаки на ДСЧ.

Chocolatey

Chocolatey

Небольшое предисловие

В конце 2014 года я готовил что-то вроде конференции одного выступающего для своих коллег в отделе разработки ПО. Для этой конференции я подготовил ряд выступлений с презентациями о различных интересных вещах, которые происходят в мире разработки ПО, о наших внутренних проблемах с проектами, а так же о различных хитростях работы Git.

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

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

Наши вопросы по программированию на 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)?

Дэвид Сирлин «Играй на победу»

Играй на победу

О чём

Эта книга о том, как научиться играть в игры профессионально. Автор известен как киберспортсмен: несколько раз он становился чемпионом в разных дисциплинах, например, в Street Fighter. Книга «Играй на победу» — это книга о том, как эффективно тренироваться, чтобы выигрывать. Она может быть интересна не только игрокам, но и просто тем, кто любит побеждать по жизни. Автор описывает свой карьерный путь и дает любопытные советы о психологической подготовке.

Переводчики на Мосигре, предлагают в качестве девиза книги выбрать — «Бить лежачее тело нечестно, зато ЭФФЕКТИВНО и БЕЗОПАСНО».

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

Нейл Фьоре «Легкий способ перестать откладывать дела на потом». Продолжение.

Легкий способ перестать откладывать дела на потом

Это продолжение предыдущего поста про книгу Нейла Фьоре «Легкий способ перестать откладывать дела на потом».

Продолжаем тезисы.

Глава 5

  1. Представьте себе несколько мелких дедлайнов, находящихся под вашим контролем, – паралич, вызванный попытками выполнить большой проект (с печальными последствиями в случае провала) как рукой снимет. Имея собственные дедлайны, расписанные далеко вперед, вы начинаете контролировать работу и создаете себе возможность для передышки после каждого этапа. Общий взгляд на проект позволяет вам увидеть другие методы и инструменты и сфокусироваться на том, с чего лучшее всего начать.
  2. Вам нужно делать так, чтобы волнение начало работать на вас и преобразовалось в план, который уничтожит угрозу. Это поможет вам продуктивно использовать стресс, вашу здоровую реакцию человека, борющегося за выживание, таким образом, как вы и собирались, – для самозащиты и подготовки к позитивным действиям. Как только вы используете эту энергию как следует, ваш мозг, уверенный в вашем хорошем физическом и психологическом состоянии, вернется на нормальный энергетический уровень для продуктивной работы.
  3. Вам будет сложно принять тот факт, что другие люди не придерживаются таких же высоких стандартов качества, как вы. На самом деле вы можете даже почувствовать некоторое превосходство в данном вопросе. В конце концов, наступит день, когда от вас потребуют завершенный проект и будут ждать вашего ответственного отношения к установленному дедлайну. В вы в это время будете больше заботиться о качестве, а не о том, чтобы просто завершить работу вовремя. Это абсолютно нормалько, когда вам не хватает хотя бы еще одного часа, чтобы сделать свою работу по-настоящему хорошо, а от вас требуют готовый проект уже сейчас.

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

Нейл Фьоре «Легкий способ перестать откладывать дела на потом».

Легкий способ перестать откладывать дела на потом

Новая книга по GTD

Ещё одна книга по GTD, с которой мне удалось недавно познакомиться это книга Нейла Фьоре “Легкий способ перестать откладывать дела на потом”. Что не перестает меня удивлять, так это то, что книга была написана в 1989 году, когда ритм жизни был ниже, чем сейчас. Однако, многие не читают подобной литературы даже сейчас. На мой взгляд одна из причин состоит в том, что люди просто не знают о существовании подобных книга.

Кстати, эта книга была так же мною куплена по рекомендации с Хабра. Где-то в начале этого года, я просмотрел все посты с рекомендациями книг на Хабре и составил для себя некоторый единый список книг из 3-х частей: художественные книги, книги по программированию и книги по саморазвитию. Надо будет на досуге причесать этот список и опубликовать – может кому-то будет полезно. У меня пока только положительные эмоции от тех книг, которые мне удалось прочесть.

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

Питер Брегман «18 минут…»

Питер Брегман "18 минут..."

О чём?

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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