Русский
Русский
English
Статистика
Реклама

Тестовое задание

История одного сломанного тестового задания или осторожнее с версиями OpenSSL

26.12.2020 18:14:42 | Автор: admin
Disclaimer. Я не настоящий сварщик, но, в связи с поиском интересной работы в сфере информационной безопасности, в последнее время регулярно решаю разные CTF и машинки на HackTheBox. Поэтому, когда мне прислали ссылку на одно из тестовых заданий в стиле CTF, я не смог пройти мимо



Смысл тестового задания достаточно простой. Дан дамп трафика, в котором спрятан ключ шифрования, некий мусор и зашифрованный флаг. Нужно их извлечь и расшифровать флаг. Также приведена команда OpenSSL, с помощью которой был зашифрован данный флаг. Трафик достаточно интересный, но уже через 10 строк кода на питоне передо мной лежал ключ шифрования, мусор и зашифрованный флаг. Казалось бы, что может пойти не так?

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

echo "FLAG_xxxxxxxxxx" | openssl enc -e -base64 -aes-256-cbc -nosalt -k $password 

Я вставил полученные из трафика параметры в команду, запустил и получил мусор! Попробовал еще раз. Снова мусор. Попробовал пересобрать трафик разными способами. Нет, судя по всему, трафик собрать можно только однозначно. Но на выходе шифрования снова мусор!!! При этом OpenSSL честно предупреждает, что получать так ключ из пароля в 1 проход плохая идея

echo "ENCRYPTED_FLAG" | openssl enc -d -base64 -aes-256-cbc -nosalt -k $key *** WARNING : deprecated key derivation used.Using -iter or -pbkdf2 would be better.

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

Как мы знаем, для работы AES нужен ключ шифрования и IV (вектор инициализации). Параметр -k дает нам возможность использовать текстовую фразу, из которой уже сам OpenSSL получает нужный ключ и IV. Увидеть их можно с помощью параметра -p.

echo "FLAG_123" | openssl enc -e -base64 -aes-256-cbc -nosalt -p -k "password"*** WARNING : deprecated key derivation used.Using -iter or -pbkdf2 would be better.key=5E884898DA28047151D0E56F8DC6292773603D0D6AABBDD62A11EF721D1542D8iv =3B02902846FFD32E92FF168B3F5D16B0C11kA+GcqkU4ocOvZAVr3g==


Это знание тоже ничего мне не дало. Тогда я всё же решил вернуться к самой безумной идее, которая возникала у меня. А именно: проблема не во мне, а что-то поменялось в OpenSSL
Трафик датировался 2016 годом, поэтому я взял Ubuntu 14.04 и, без особой надежды на успех, просто вставил в неё первоначальные данные. И внезапно вместо мусора получил ФЛАГ! Вечер переставал быть томным Более того, одна и та же команда с тем же паролем и параметром -p выдавала совершенно разные ключи шифрования и IV!

НОВАЯ СИСТЕМА (openssl 1.1.1h)
echo "FLAG_123" | openssl enc -e -base64 -aes-256-cbc -nosalt -p -k "password"*** WARNING : deprecated key derivation used.Using -iter or -pbkdf2 would be better.key=5E884898DA28047151D0E56F8DC6292773603D0D6AABBDD62A11EF721D1542D8iv =3B02902846FFD32E92FF168B3F5D16B0C11kA+GcqkU4ocOvZAVr3g==


СТАРАЯ СИСТЕМА (openssl 1.0.1f)
echo "FLAG_123" | openssl enc -e -base64 -aes-256-cbc -nosalt -p -k "password"key=5F4DCC3B5AA765D61D8327DEB882CF992B95990A9151374ABD8FF8C5A7A0FE08iv =B7B4372CDFBCB3D16A2631B59B509E94R3N+5v3zOz9QcNt08cwqcA==

Стало понятно, что опасения подтвердились. Изменился алгоритм генерации Key и IV из парольной фразы, что полностью сломало возможность в лоб решить CTF на современных версиях OpenSSL. В процессе поиска нюансов реализации я наткнулся на очень интересную работу Password-based OpenSSL Encryption Analysis of Key Derivation Protocol и всё стало на свои места. Вкратце, в версии 1.1.0 был добавлен новый протокол генерации ключей из пароля PBKDF2, но, что более важно в старом алгоритме PBKDF1 изменен алгоритм хеширования по умолчанию с MD5 на SHA-256! Таким образом, один и тот же пароль выдает разные Key и IV. Для того, чтобы расшифровать зашифрованное ранее, в новых версиях нужно использовать параметр -md md5

-md messagedigest: specify the message digest used for key derivation from md2, md5, sha, or sha1

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

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

Тестовое задание для фронтендера

21.01.2021 10:23:56 | Автор: admin

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

Верстальщик такой человек, который хорошо разбирается в HTML и CSS и немного знает JavaScript. Ну то есть понимает, как в целом всё работает, но сильно не погружается. При этом бывает непросто выбрать хорошего верстальщика, потому что всех учат по-разному.

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

На что смотреть в целом

Соответствует ли результат ТЗ? Всё работает? Всё заверстано? Джуну прощаются мелкие недочёты, но он хотя бы показывает что хотел сделать как можно лучше, просто пока не хватает практики. Если сделано спустя рукава, то это тоже видно.


Пример: сверстать аккордеон

Соответствие ТЗ: аккордеон завёрстан по макету, нет ошибок в HTML. JavaScript написан без onclick, код для аккордеона можно переиспользовать на других страницах и блоках.

Если аккордеон завёрстан, но при нажатии на на кнопку ничего не происходит, то не работает. Для мидла это минус, джуну можно простить, если к внешнему виду и семантике не подкопаться. Джуну также прощается, если JavaScript есть, но в семантике есть ошибки или результат немного не соответствует макету (другие отступы, например, или забыл про уголки).


Предусмотрено ли переполнение? Сильно ли едет макет при добавлении/удалении элементов? Можно ли ввести 4 строки, если в дизайне нарисовано 2? Предусмотрены ли максимальные и минимальные размеры?

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

Столько плюсов каждому по нраву

Как оформлена сборка? Есть readme? Запускаются таски из gulp? Такие мелочи показывают, есть ли у человека опыт в разработке. Обычно, когда сверстаешь пару проектов, учишься наводить порядок в файлах и умеешь работать с таск-менеджерами. В идеале нужна чистая сборка: всё разложено по папкам, комментарии убраны, лишних файлов нет.

Выделяются ли компоненты? Проект у мидла конструктор, где блоки можно менять местами и ничего не ломается.

Как подключаются скрипты и стили? Есть ли инлайн? Есть ли onclick="" или style=""? Джуну какие-то вещи простить можно, мидлу нет.

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

Как реализованы ховеры и адаптив? Это не обязательно, но будет плюсом, показывает опыт и аккуратность. Сразу видно, как человек импровизирует, так как в макете не рисуются разные состояния кнопок. Хорошая импровизация показывает, что человек может заморочиться и сделать вау потому что ему хочется так сделать, а не потому что так сказал босс.

Ховеры на сайте Лиги А.

HTML

Что с семантикой? Есть ли header/main/footer? Правильно ли построена разметка по макету?

Правильная ли вложенность? Если лишние обёртки? Здесь сразу видно опыт у новичков бывает много лишних дивов.

Как вставлены картинки? Предусмотрены ли webp и ретина?

Как оформлены векторные элементы? Вектор это точно SVG, а не PNG? В тестовом задании мы обращаем внимание на сжатие SVG (вручную или через таск-менеджеры) и как элементы вставлены в разметку (лучше всего использовать спрайты для иконок, а не псевдоэлементы или img).

Вот что может случиться, если не подумать о графике заранее:

Внеклассное чтение:

Как свёрстана форма? Есть ли ховеры/фокусы? Какая кликабельность у элементов?

Что сделано для обеспечения доступности? Это не обязательно в тестовом задании, но будет плюсом и хорошим знаком.

CSS

Прибит ли футер к низу экрана? Очень практическая штука, которая показывает опыт кандидата.

Вот здесь не прибит, например. Но мы всё равно вас любимВот здесь не прибит, например. Но мы всё равно вас любим

Как написана сетка? Используются гриды или флексы? Если сетка кривая, то или человеку всё равно, или он ещё джун.

Как подключаются шрифты? Если как-то странно, например, в каждом font-face в качестве шрифтового семейства прописаны montserrat-thin, montserrat-bold вместо montserrat и указания жирности отдельным свойством, то это джун. Используются ли новые свойства вроде font-display или unicode-range? Они не обязательны, но если есть и они действительно там нужны, это плюс.

Используются ли препроцессоры? Это необязательно в тестовом задании, но упрощает разработку.

В JavaScript-коде

Эти требования, в основном, для мидлов. Джуну достаточно знаний HTML/CSS и аккуратной сборки проекта.

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

let a = 1let b = 2setTimeout(() => {[a, b] = [b, a]console.log(a) // 2console.log(b) // 1}, 0)

Странный код для обмена значений двух переменных

Какая версия языка используется? Есть ли единообразие? Есть ли такое, что весь проект на ES5, а потом блок на ES6? Обычно это показатель того, что какой-то блока кода писал кто-то другой.

Пример смешивания:

Как разбит код? Это один огромный модуль (плохо) или есть деление на папки/скрипты, где 1 скрипт = 1 задача (хорошо)? Также не должно быть слишком много файлов, а вызов и обработка функции происходит в одном файле, а не в нескольких.

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

Spoiler
const mailRegEx = /[a-zA-Z0-9]{1}([a-zA-Z0-9-.]{1,})?@[a-zA-Z]{1}([a-zA-Z0-9.]{1,})?[a-zA-Z0-9]{1}.[a-zA-Z]{2,}/;const PHONEMINLENGTH = 18;const showErrorIcon = (sth) => {const input = sth.target || sth;const errorIcon = input.closest('.custom-input').querySelector('.custom-inputerror');if (!errorIcon.classList.contains('custom-inputerror--shown')) {errorIcon.classList.add('custom-input_error--shown');}};function IsNumeric(sText) {var ValidChars = "0123456789.";var IsNumber = true;var Char;for (i = 0; i < sText.length && IsNumber == true; i++) {Char = sText.charAt(i);if (ValidChars.indexOf(Char) == -1) {IsNumber = false;}}return IsNumber;}

Как выбрать нормальный плагин. Например, мы ищем слайдер и гугл выдал несколько вариантов:

  • https://kenwheeler.github.io/slick/

  • https://glidejs.com/

  • https://swiperjs.com/

Slick требует jQuery, у нас в проекте он не используется. Вычеркиваем.

Смотрим документацию. У glide она подробная, у swiper тоже. Если бы её не было, мы бы вычеркнули один из пунктов.

Переходим на гитхаб, посмотрим, как давно обновляли репозиторий.

  • https://github.com/nolimits4web/swiper - 11 минут назад

  • https://github.com/glidejs/glide - 23 дня назад

Оба варианты хороши. Если бы последние обновления были 2-3 года назад, мы бы вычеркнули один из пунктов.

Далее смотрим на вес. glide ~23kb, swiper ~140kb значит, одно очко за glide.

Зачем нам плагин? У нас большой сайт с кучей анимаций, где нужно сделать слайдер в слайдере с 3D-эффектом перехода? Берем swiper, он как швейцарский нож, в котором есть почти всё. У нас одна страница с простыми переходами? Берём glide, в нём ничего лишнего.


Пример тестового задания

Сверстать макет (тут у каждой компании будет своя ссылка на фигму).

Учебный проект Барбершоп из курса HTML и CSS. Профессиональная вёрстка сайтовУчебный проект Барбершоп из курса HTML и CSS. Профессиональная вёрстка сайтов

Требования:

  • Шапка всегда закреплена, у неё белый фон;

  • Фильтр должен сортировать карточки;

  • Кнопка сбросить фильтр показывается после того, как выбрали что-нибудь;

  • Адаптив на своё усмотрение.

  • Нельзя использовать jQuery;

  • Возможно использование плагинов JavaScript;

  • Использование Gulp или Webpack для сборки будет преимуществом.

С таким заданием будет гораздо проще искать фронтендера хоть джуна, хоть мидла.

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

Подробнее..

Разбираем тестовое задание на должность фронтенд-разработчика на Vue.js

22.09.2020 20:11:13 | Автор: admin

Первое правило тестовых заданий - никогда не делайте тестовые задания!

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

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

Для ознакомления с заданием, которое я получил, прошу под спойлер:

Техническое задание:

Средствами Vue.js реализуйте небольшое SPA приложение для заметок.

Каждая заметка имеет название и список задач (todo list), далее - Todo. Каждый пункт Todo состоит из чекбокса и относящейся к нему текстовой подписи.

Приложение состоит всего из 2х страниц.

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

  • перейти к созданию новой заметки

  • перейти к изменению

  • удалить (необходимо подтверждение)

Страница изменения заметки позволяет определенную заметку отредактировать, отметить пункты Todo, а после сохранить изменения. Действия с заметкой:

  • сохранить изменения

  • отменить редактирование (необходимо подтверждение)

  • удалить (необходимо подтверждение)

  • отменить внесенное изменение

  • повторить отмененное изменение Действия с пунктами Todo:

  • добавить

  • удалить

  • отредактировать текст

  • отметить как выполненный

Требования к функционалу:

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

  • Подтверждение действий (удалить заметку) выполняется с помощью диалогового окна.

  • Интерфейс должен отвечать требованиям usability.

  • После перезагрузки страницы состояние списка заметок должно сохраняться.

  • Можно пренебречь несоответствием редактирования текста с помощью кнопок отменить/повторить и аналогичным действиям с помощью комбинацияй клавиш (Ctrl+Z, Command+Z, etc.).

Технические требования:

  • Диалоговые окна должны быть реализованы без использования "alert", "prompt" и "confirm".

  • В качестве языка разработки допускается использовать JavaScript или TypeScript.

  • В качестве сборщика, если это необходимо, используйте Webpack.

  • Верстка должна быть выполнена без использования UI библиотек (например Vuetify).

  • Адаптивность не обязательна, но приветствуется.

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

Особое внимание стоит обратить на следующие моменты:

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

  • Читабельность и наличие элементарной архитектуры.

  • Чистота и оформление кода не менее важный фактор. Код должен быть написан в едином стиле (желательно в рекомендуемом для конкретного языка). Также к чистоте относятся отсутствие копипаста и дублирования логики.

Тестовое задание должно быть предоставлено в следующем виде:

  • Ссылка на публичный репозиторий (GitHub, BitBucket, GitLab) с исходным кодом.

  • Ссылка на сайт для тестирования функционала. Или Dockerfile и docker-compose.yaml, позволяющие развернуть локально командой docker-compose up работоспособную копию сайта.ехническое заданиеехническое заданиеехническое задание

Вот что у меня в итоге получилось.

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

Разберем по пунктам задание и возможные способы его решения:

Средствами Vue.js реализуйте небольшое SPA приложение для заметок. Тут все просто: используем Vue CLI для создания проекта.

Каждая заметка имеет название и список задач todo list, (далее - Todo). Каждый пункт Todo состоит из чекбокса и относящейся к нему текстовой подписи. - А вот и первая сложность, у нас будет два уровня абстракции: множество заметок и множество дел, которые составляют заметку.

Приложение состоит всего из 2х страниц. Тут возник вопрос - использовать ли Vue Router? Это же всего две страницы. Дальше из задания мы узнаем, что первая страница используется для отображения списка заметок, а вторая - для редактирования отдельной заметки. Конечно, можно переключать компоненты условным оператором, но раутер даст возможность перехода на сгенерированные страницы для каждой заметки. Но это уже больше двух страниц, или сгенерированные страницы считаются за одну, так как они по одному шаблону сделаны? После недолгих колебаний я решил все-таки его использовать.

Дальше следуют подробности по каждой странице, обратим внимание на два пункта:

  • отменить внесенное изменение

  • повторить отмененное изменение

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

Do и RedoDo и Redo
  • Все действия на сайте должны происходить без перезагрузки страницы. Это означает стандартное SPA, мы и так используем Vue CLI.

  • Подтверждение действий (удалить заметку) выполняется с помощью диалогового окна.

  • Диалоговые окна должны быть реализованы без использования "alert", "prompt" и "confirm".

    Диалоговое окно должно создавать Promise, который зависит от решения юзера. Желательно, чтобы решение было переиспользуемым для всех наших случаев. Помучавшись над решением, я пришел к выводу, что лучше использовать готовое решение, к тому же запретов на пакеты не было. Я использовал vue-modal-dialogs - очень удобная библиотека, рекомендую. Надеюсь её перепишут для Vue 3.

  • Интерфейс должен отвечать требованиям usability. Другими словами, он должен быть удобным. Лучше бы написали конкретные требования, так не очень понятно.

  • После перезагрузки страницы состояние списка заметок должно сохраняться. - Так как серверной части у нашего приложения не планируется, заметки следует сохранять на стороне клиента, для этого есть два решения Cookie и localStorage. Выбираем кому что ближе. Я выбрал localStorage. К тому же я решил не использовать Vuex, а вместо него использовать локальное хранилище, как единыйисточник истины. Для небольшого приложения без бэка это выглядит разумным решением, экономящем время, в других случаях я не рекомендовал бы так делать.

  • В качестве языка разработки допускается использовать JavaScript или TypeScript. - а разве есть еще варианты? Честно говоря, ТЗ оставляет ощущение, что тот кто его составлял плохо знаком с Vue. TypeScript на Vue 2 спорно применять, слабая поддержка. Посмотрим, что будет на Vue 3.

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

  • В качестве сборщика, если это необходимо, используйте Webpack. Vue CLI это и есть Webpack, настроенный для удобства создания SPA на Vue.js

  • Верстка должна быть выполнена без использования UI библиотек (например Vuetify) - это минус. Для того чтобы "оживить" приложение, я использовал Material Icons от Гугла, вместо кнопок. Не знаю, оценил ли заказчик, он так и не ответил.

  • Адаптивность не обязательна, но приветствуется. - flexbox в помощь.

  • Логика приложения должна быть разбита на разумное количество самодостаточных Vue-компонентов. - у меня вышло семь: 2 на страницы, еще заметка, тудушка, заголовок заметки, кнопка-иконка и диалоговое окно.

    Остальные пункты менее важны.

Еще из вкусностей:

Я использовал пакет v-click-outside. Название говорит само за себя. Он добавляет директиву, которая срабатывает при клике вне элемента. Можно было написать самому, но я решил не изобретать велосипед. Использовал для отмены редактирования тудушки, если пользователь кликнул где-то еще. Это в задании не было, включим это в юзабилити.

Еще мне пришла в голову такая мысль: а что делать, если юзер захочет покинуть страницу редактирования заметки? Куда повесить вызов диалогового окна: на историю браузера, на кнопки меню? Есть элегантное решение. Vue-Router добавляет хуки жизненного цикла в компонент. Хук beforeRouteLeave поможет нам во всех ситуациях когда пользователь пытается покинуть страницу. Пусть наш хук вызывает модальное окно. Только не забыть сделать его асинхронным, ведь окно возвращает промис. Например, вот так:

  async beforeRouteLeave (to, from, next) {    if (await confirm('Do you realy want to leave this page?',       'All unsaved changes will be lost.')) {        this.clearNote()        next()      } else{        next(from)      }  }

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

Если возникли вопросы и замечания, прошу в комментарии или личку.

Подробнее..

Резюме, тестовые и прочие неприятности

28.04.2021 12:07:29 | Автор: admin

Резюме и ответ на тестовое задание первое, что работодатель получает от кандидата. Если на этом этапе что-то не так, до собеседования дело не доходит. Только кандидату не всегда сообщают, в чём конкретно проблема.

Мы попросили наших студентов, выпускников и подписчиков поделиться воспоминаниями о том, как они искали работу. Спустя месяцы кто-то так и не понял, почему его или её не пригласили на собеседование, остались догадки и вопросы. Мы показали эти истории тем, кто нанимает разработчиков, и получился целый диалог теперь на все ситуации можно посмотреть с обеих сторон. Каждый пункт прокомментировали технический директор HTML Academy Алексей Малейков и HR фронтенд-аутсорса Лига А. София Петлякова.

В итоге получился список советов и для соискателей, и для работодателей.

Отклик на вакансию

Мне вообще не отвечают

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

Подписчики HTML Aсademy о неотвеченных откликахПодписчики HTML Aсademy о неотвеченных откликах

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

Дмитрий, студент

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

Алексей Малейков

Отказали после просмотра резюме

Кто-то считает, что в резюме надо расписать все свои (или не совсем свои) лучшие качества и рассказать обо всём, что он когда-то делал. Мало ли что пригодится! Но работодатели смотрят на это по-другому и могут отказать, даже не предложив выполнить тестовое задание.

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

Анна, выпускница

Мы отказываем, когда понимаем, что не сможем дать кандидату то, на что он рассчитывает: определённый уровень или разнообразие задач, график работы, заработная плата. Ещё влияет содержание или отсутствие сопроводительного письма. Или явное понимание того, что человек не сможет разделить наших ценностей и корпоративной культуры.

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

София Петлякова

Ответили, но прошла куча времени

Компании реагируют на отклики по-разному: кто-то через пару дней, некоторые спустя пару недель. Но иногда это занимает намного больше времени. Вот, что рассказали подписчики Академии.

Подписчики HTML Academy об ответах работодателейПодписчики HTML Academy об ответах работодателей

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

Некоторые работодатели мне до сих пор не отвечают, спустя год. Одному из них я даже написал: Вы ещё не проверили моё тестовое задание?. Случился нелепый диалог, человек сказал, что посмотрит тестовое сегодня вечером, и на этом опять тишина.

Вячеслав, выпускник

Оптимальный срок для ответа два-три рабочих дня. Конечно, в разных компаниях процессы устроены по-разному, но отвечать человеку спустя месяц странно. За это время в компании может что-то поменяться, сам человек уже может передумать или устроиться на другое место. Может быть простительна неделя, максимум две. А когда ответы приходят через месяц, закрадываются сомнения: а работа тоже построена так, с задержками и проблемами? В серьёзных структурах, компаниях могут проводиться дополнительные проверки, например, службой безопасности, что может повлиять на скорость ответа, но обычно это происходит уже на следующих этапах.

Алексей Малейков

Почему я должен редактировать резюме под каждую компанию?

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

В резюме я кратко пишу о себе: что умею (2-3 пункта, самых значимых по моему мнению), причина, по которой хочу поменять работу, почему мне понравилась вакансия и чем я могу быть им полезна. В разные компании отправляю одно и тоже резюме, но графу О себе немного меняю под вакансию или компанию.

Анна, выпускница

Плохой пример сопроводительного письмаПлохой пример сопроводительного письма

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

Алексей Малейков

Когда человек откликается, например, на вакансию менеджера проектов, а в шапке написано QA Engineer Junior, это вызывает вопросы и создаёт впечатление, что человек ещё не определился с выбором.

София Петлякова

Хороший пример настоящего сопроводительного письмаХороший пример настоящего сопроводительного письма

Что запомнить

Кандидатам

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

  • Составьте резюме в официально-деловом стиле. Покажите, что вы умеете вести деловую переписку.

  • Опишите только тот опыт, который относится к должности.

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

Эйчарам

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

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


Заметка на полях: нужно ли делать резюме красивеньким?

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

Я составлял своё резюме в Word. Думаю, что работодатель не обращает внимание на оформление. Главное чтобы оно было аккуратно составлено.

Антон, выпускник

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

Алексей Малейков

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

София Петлякова


Тестовое задание

У меня есть портфолио, зачем тестовое задание?

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

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

Марина, выпускница

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

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

Алексей Малейков

Не хочу тратить много времени на тестовое задание

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

Я отказывался выполнять тестовое задание, если по объёму оно занимало более 20 часов и выглядело как вполне реальная задача (например, сделать полноценную галерею или Masonry сетку). Создаётся впечатление, что хотят сделать реальную работу бесплатно.

Константин, подписчик

Пример тестового задания сверстать виджетПример тестового задания сверстать виджет

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

Даже для работодателя невыгодно давать сверстать целый макет: проверять его слишком долго. Это большая затрата времени для всех. Оптимальное тестовое задание должно выполняться не больше четырёх часов.

Алексей Малейков

Не хочу бесплатно делать для вас работу

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

Некоторые тестовые задания были очень объёмными, и я спрашивал, будут ли они оплачиваться. Мне отвечали отказом, и я их просто не выполнял.

Александр, выпускник

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

Алексей Малейков

Моё тестовое украдут и используют без спроса

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

В качестве тестового задания мне предложили сверстать всю главную страницу макета, включая меню на JavaScript и попап. Из-за большого объёма, появилось подозрение, что это реальный проект. Когда я спросил руководителя, так ли это, он ответил: А что, бывают тестовые не по реальным проектам?

Александр, выпускник

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

Алексей Малейков

Прислали отписку вместо подробного ответа на тестовое

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

Мне приходила обратная связь, но очень служебная, типа: Сделанное тестовое задание не на том уровне, на котором мы ожидали. То есть текст, который отправляют всем. И никакой конкретики нет. Чего они ожидали? Какие проблемы?

Александр, выпускник

Пример неудачного ответа на откликПример неудачного ответа на отклик

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

Ещё хорошо отметить, в чём сильные стороны кандидата, а что необходимо подтянуть или изучить. Если по какой-то причине работодатель так не сделал, то стоит проявить активность и запросить этот фидбек. В этом нет ничего такого. Эта информация 100% будет полезна для кандидата и его дальнейшего развития.

София Петлякова

Пример развёрнутой обратной связи Пример развёрнутой обратной связи

Что запомнить

Кандидатам

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

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

Эйчарам

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

  • Задания, рассчитанные на несколько дней, тянут на полноценную работу. В таком случае не исключено, что кандидат спросит про оплату.

  • Давайте развёрнутую обратную связь, даже если результат совсем не очень.

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

Ну и не забывайте, что без навыков найти работу во фронтенде тяжеловато. Приходите на профессию Фронтенд-разработчик в HTML Academy, мы всему научим, простажируем и поможем с поиском работы. А там и советы из этой статьи пригодятся.

Внеклассное чтение

Что написать в резюме, если нет опыта работы

17 ошибок, которые испортят любое резюме Блог HTML Academy

Тестовое задание для фронтендера

Как провалить собеседование Блог HTML Academy

Устроиться веб-разработчиком: 5 шагов для подготовки к собеседованию

Подробнее..

Категории

Последние комментарии

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru