Всем доброго времени суток!
Решил поменять работу, откликнулся в компанию N на должность front-end разраба. Прошел собеседование с HR, и вот настало время общения с ТимЛидом. После общения сошлись на тестовом задании:
Необходимо разработать javascript-компонент для сортировки таблиц с данными.
Функционал
Сортировка по столбцам: при нажатии на название столбца строки таблицы сортируются по возрастанию, при повторном клике - по убыванию. Графическим элементом или текстовым сообщением указывается направление сортировки.
Клиентская пагинация: данные необходимо отображать постранично, максимум 50 элементов на страницу. Необходимо предоставить пользовательскую навигацию для перехода по страницам.
Фильтрация: компонент предоставляет текстовое поле, в которое пользователь может ввести текст и строки таблицы, данные которых не содержат подстроку, введённую пользователем, скрываются. Перефильтрация осуществляется по нажатию на кнопку Найти.
По клике на строку таблицы значения полей выводятся в дополнительном блоке под таблицей.
Данные в таблицу загружаются с сервера. Способ загрузки с сервера на ваш выбор.
Для демонстрации работы компонента необходимо сделать простую HTML страницу. Пользователю предлагается выбрать набор данных: маленький или большой. При выборе набора данных он загружается с сервера и по данным строится таблица.
Замечания
Особое внимание следует уделить скорости работы. Зависание интерфейса при выполнении операций загрузки данных, фильтрации, сортировки недопустимо.
Во время загрузки данных стоит показать какой-то индикатор
Разрешённые библиотеки: jQuery, Lodash/Underscore, Backbone, самописный. Но вам придется объяснить выбор и причину использования. Использование сторонних библиотек будет плюсом только в случае если это оправданно и вы сможете объяснить причину выбора. Показав свои знания в грамотном применении сторонних готовых решений, вы имеете шанс повысить свою профессиональную привлекательность для нас.
Пишите код так, как бы вы его писали в работе - внутренности задания будут оцениваться даже тщательней, чем внешнее соответствие заданию. Код должен быть организован так, чтобы его можно было заново использовать.
Помните про обработку ошибок!
Верстка может быть самая простая. Визуализацию и украшение делаете на ваш вкус. Мы не против использования http://getbootstrap.com/ или похожего UI фреймворк, но только для UI представления (нельзя использовать JS код для решения задачи, но можно использовать для оформительских эффектов(анимации и тому подобное))!
Дополнительным плюсом будет:
Использование TypeScript или ES6+(babel).
Я выкладываю не весь текст тестового задания, НО самую основную часть. Еще остаются такие вещи как текстовые
схемы визуального отображения таблицы, ссылки на не работающий api (CORS со стороны сервера запрещен).
После выполнения этого тестового задания на VUE (Cli) (о котором мы много общались с ТимЛидом, который был указан в "Будет плюсом" в вакансии), которое было сделано за 5 часов. Мне поступает отказ с очень глупой отмазкой:
отмазкаТребовалось подойти к некоторым вопросам более внимательно, например к загрузке данных (не грузить всё разом, что может быть ресурсоемко). Стили вынести в теги styles внутри компонентов, а не оставлять инлайн.
мой ответНе грузить все разом - по заданию апи не работает должным образом, в комментарии гиста написана причина. Во вторых нет апи отдающее колличество страниц чтобы можно было сделать пагинацию. На основе этого и было использована загрузка всего сразу. Инлайновые стили - я считаю на это можно было закрыть глаза, это реально мелочи. В продакшене я бы все стили реализовал непосредственно в самих компонентах.
Далее я получал еще глупее варианты отмазки, типа "Задача выполнено на vue, этого не нужно было делать по условиям.", их писать не буду, т.к. смысл этого вы уловили.
Хочу лишь еще раз обратить внимание что я устраивался на только front-end разработчика.
Теперь вопросы для меня:
1. Стоит ли всерьез воспринимать подобные задания, воспринимать это на личный счет?
2. Я не против тестовых заданий, но должны ли они быть такими объемными?
3. Если я иду на фронт разработку, разве должен я заниматься проксированием api (т.к. сервером запрещено CORS)? Хотя я бы мог и это сделать, т.к. я full-stack (но back-end на php или go)
4. Кто здесь виноват, ТимЛид который испугался конкуренции в виде моего лица или политика компании - поиски бесплатной силы?
Спасибо всем поделившимся.