Работа в CSSSR

Middle JavaScript-разработчикДистанционно и на фуллтайм

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

Что нужно делать:

  • разрабатывать веб‑приложения;
  • учиться у сильных, помогать слабым и делиться знаниями;
  • работать: много и хорошо.

Стек технологий:

  • JavaScript, TypeScript (как преимущество);
  • уверенное знание одного из фреймворков: React — Flux (Redux), Rx.js, Angular 1, Angular 2+, Vue;
  • знание двух и более фреймворков, опыт разработки на Node.js будет большим плюсом;
  • Babel (ES 2016+);
  • Webpack или Gulp;
  • Git;
  • БЭМ.

Кроме того, горячо приветствуем:

  • умение работать в команде;
  • технический и аналитический склад ума;
  • здоровый перфекционизм.

Взамен мы гарантируем:

  • возможности для карьерного и профессионального роста;
  • коллектив, который всегда готов помочь и поддержать;
  • адекватное руководство и четко выстроенные процессы;
  • интересные задачи и проекты, реализацией которых вы будете гордиться;
  • удалённую работу с графиком 10–19 по Москве;
  • конкурентную зарплату, официальное трудоустройство и честные правила игры;
  • никто не будет стоять за спиной и смотреть, как вы кодите.

P. S. Для жителей Санкт-Петербурга, Нижнего Новгорода и Новосибирска предлагаем вакансии в офисах компаний-партнёров.

P. P. S. Подсказка для самых внимательных и любопытных.

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

Мы приготовили для вас пять небольших кейсов. Сделать нужно хотя бы один.

React

Slomux — упрощённая, сломанная реализация Flux. Перед вами небольшое приложение, написанное на React + Slomux. Это нерабочий секундомер с настройкой интервала обновления.

Исправьте ошибки и потенциально проблемный код, почините приложение и прокомментируйте своё решение.

~ 25 минут
потребуется на решение
~ 25 минут
потребуется на решение

Angular 1

1. Реализуйте таймер обратного отсчёта. Формат — два знака после запятой. В конце работы таймер должен вызывать колбэк onFinish с параметром $endTime, куда будет передан new Date().

Ожидаемый результат .

2. Исправьте отображение статуса. В чём была проблема?

3. Попробуйте добавить 100 таймеров на страницу. Есть ли проблемы с производительностью таймеров? Если есть, то с чем они связаны и как их решить?

~ 15 минут
потребуется на решение
~ 15 минут
потребуется на решение

Angular 2

Суть: приложение реализует таблицу, которую получает через «ApiService» (его реализацию изменять не нужно). Каждые 5 секунд сервис присылает один и тот же пересортированный список.

Проблема: при пересортировке слетает значение, введённое в поле «Note».

Задача: нужно сделать так, чтобы введённое значение после пересортировки сохранилось на строке с тем же номером (№), что и до сортировки.

Актуальное поведение

Ожидаемое поведение

Нужно исправить проблему и написать в комментариях, в чём она заключалась.

После внесения изменений не забудьте сохранить (ctrl+s либо кнопка сохранения), затем нажмите кнопку «Share», скопируйте оттуда «Editor url (also works on Medium)» и пришлите его нам.

Дополнительное задание, которое сократит количество вопросов на собеседовании: как можно оптимизировать AppComponent с точки зрения работы change-detection? Реализуйте предложенную оптимизацию и расскажите об одном или нескольких способах оптимизации в комментарии.

~ 15 минут
потребуется на решение
~ 15 минут
потребуется на решение

Vue

# Челлендж от Чака

1. Тебе достаётся еле живое приложение от джуниора, который учил Vue по непонятным видео-курсам на ютубе.

2. Заказчик приложения на Vue — не кто иной, как Чак «Досчитал До Бесконечности» Норрис.

3. В приложении Чак хочет получать шутку про него из интернета, нажимая на одну кнопку.

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

5. Силой мысли Чак создал АПИ, которое находит эти шутки в интернете: https://api.chucknorris.io/.

6. Напиши максимально читабельный код, используя всю магию Vue/Vuex. Исправь ошибки предыдущего разработчика и просто неаккуратно написанный код.

~ 20 минут
потребуется на решение
~ 20 минут
потребуется на решение

Node.js

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

Дополнительные задания:

1. Если считаете, что Mailbox не хватает еще каких-то технических функций для более готового к использованию API, добавьте их или напишите, что бы вы добавили.

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

3. Какие части кода можно было бы концептуально абстрагировать из реализации Mailbox и сделать их переиспользуемыми? Попробуйте максимально разбить реализацию на переиспользуемые части.

~ 20 минут
потребуется на решение
~ 20 минут
потребуется на решение

Расскажите о себе

Дополнительные способы связи: