1. Расскажите, чем, на ваш взгляд, отличается хорошее клиентское приложение от плохого с точки зрения
- интуитивно-понятное
- отзывчивое
- быстрое
- приятно выглядящее
- не вызывает лишних вопросов со стороны заказчика/начальства
- сделано в заявленные сроки
- учтены и реализованы его идеи
- грамотно продумано дизайнером
- не требует написания костылей
- просто интегрируется с имеющимся API
2. Опишите основные особенности разработки крупных многостраничных сайтов, функциональность которых может меняться в процессе реализации и поддержки.
- использование методологии БЭМ (или другой) в вёрстке
- применение лучших практик при использовании жс-фреймворков: единое состояние, хоки, грамотная структура проекта и пр.
- использование готовых open-source решений
- покрытие кода тестами
Расскажите о своем опыте работы над подобными сайтами: какие подходы, инструменты и технологии вы применяли на практике, с какими проблемами сталкивались и как их решали.
На данный момент написал два средних приложения на react + redux. Иногда сталкивался с дублированием кода – выносил в отдельный модуль. Также выносил в отдельные функции/модули код, в котором потенциально легко было допустить ошибку.
3. При разработке интерфейсов с использованием компонентной архитектуры часто используются термины Presentational Сomponents и Сontainer Сomponents. Что означают данные термины? Зачем нужно такое разделение, какие у него есть плюсы и минусы?
Сontainer Сomponents – получают данные извне (сервер/стор), обрабатывают и передают в presentational components.
Presentational Сomponents – получают готовые данные и отрисовывают на экране.
Подобное разделение помогает переиспользовать presentational components, передавая данные из разных контейнер-компонентов.
4. Как устроено наследование в JS? Расскажите о своем опыте реализации JSнаследования без использования фреймворков.
В джаваскрипте механизм наследования реализован с помощью прототипов, то есть каждый дочерний объект хранит ссылку на своего родителя и родителей родителя (вверх по цепочке). Начиная со стандарта ES6 в языке появилась возможность писать классы минуя работу с prototype напрямую.
Мне же, помимо class MyClass extends React.Component
не приходилось работать с наследованием.
5. Какие библиотеки можно использовать для написания тестов end-to-end во фронтенде? Расскажите о своем опыте тестирования веб-приложений.
У меня есть опыт только с юнит тестами с помощью Jest. Для написания е2е подойдет тот же Jest, Mocha, Cypress.
6. Вам нужно реализовать форму для отправки данных на сервер, состоящую из нескольких шагов. В вашем распоряжении дизайн формы и статичная верстка, в которой не показано, как форма должна работать в динамике. Подробного описания, как должны вести себя различные поля в зависимости от действий пользователя, в требованиях к проекту нет. Ваши действия?
Для начала поинтересуюсь у дизайнера и верстальщика как оно должно быть. Возможно кто-то из них забыл это учесть. В результате я либо получу исправленную вёрстку либо макет. Если ни того ни другого, сделаю на свое усмотрение в соответствии с дизайном остального сайта.
7. Расскажите, какие инструменты помогают вам экономить время в процессе написания, проверки и отладки кода.
Emmet, линтеры, debugger/console.log, react-devtools, redux-devtools.
8. Какие ресурсы вы используете для развития в профессиональной сфере? Приведите несколько конкретных примеров (сайты, блоги и так далее).
Несколько месяцев назад прошел курс "js фронтенд-программист" от Хекслет. Смотрю их канал на youtube. Также смотрю стримы Юрия Артюха по анимациям в вебе. Подписан на forweb – удобная лента о новостях и инструментах фронтенда.
Интересуюсь музыкой – как прослушиванием так и игрой.
9. Расскажите нам немного о себе и предоставьте несколько ссылок на последние работы, выполненные вами.
На данный момент я ищу удаленную работу фронтенд-разработчиком на React стеке. Продакшен опыта на нём пока не имею, но есть несколько своих проектов + теория и практика полученные на курсах Хекслет: современный js, основы функционального программирования, работа с React как раз.
Помимо этого два года работал верстальщиком в веб-студии.
Примеры работ:
- Поисковик по гитхабу
- Упрощенный аналог Slackа (осторожно, бесплатная хероку! заводится с толкача)