Итог можно посмотреть тут: https://route-editor-test.herokuapp.com/
Или запустить локально:
$ git clone https://github.com/NikFedoseev/funbox-task.git
$ cd funbox-task
$ npm run build
$ node index.js
В браузере перейти по адресу
127.0.0.1:5000
Расскажите, чем, на ваш взгляд, отличается хорошее клиентское приложение от плохого с точки зрения
- пользователя;
- менеджера проекта;
- дизайнера;
- верстальщика;
- серверного программиста.
Ответ
Хорошее приложение | |
---|---|
Пользователь | - Интуитивно-понятный и удобный интерфейс - Высокая Скорость пииложения - Приложение должно иметь функциональность, которая способна полностью удовлетворить потребности пользователя - Отсутствие багов, лагов |
Менеджер проектов | - Достаточный бюджет и человеческие ресурсы - Приложение должно развиваться и удовлетворять заказчика |
Дизайнер | - Идеальный внешний современный вид |
Верстальщик | - Отсутсвие необходимости поддержки древних браузеров - Использование новых технологий при верстке |
Серверный программист | - Приложение должно быть безопасным - Приложение легко масштабировать - Возможность использования новых инструментов |
Опишите основные особенности разработки крупных многостраничных сайтов, функциональность которых может меняться в процессе реализации и поддержки. Расскажите о своем опыте работы над подобными сайтами: какие подходы, инструменты и технологии вы применяли на практике, с какими проблемами сталкивались и как их решали.
Ответ
При разработке крупных многостраничных сайтов, главное грамотная продуманная архитектура и инструменты который будут решать задачу наиболее правильно и удобно. Необходимо придерживаться единих методологий при разработке чтобы в последующем облегчить поддержку и развитие проекта.
При работе над таким проектов сталкивался с проблемами, что есть куча кода и написан в разных стилях, нет единой методологии. Некоторый код был неиспользуемым и только запутывал. Была сложная и не сразу понятная структура проекта. Решение - время потраченное на понимание что, к чему и как.
При разработке интерфейсов с использованием компонентной архитектуры часто используются термины Presentational Сomponents и Сontainer Сomponents. Что означают данные термины? Зачем нужно такое разделение, какие у него есть плюсы и минусы?
Ответ
Впервые с такими терминами встретился в React.
Presentational components – это компоненты, не имеющие внутреннего состояния. Их роль – показать определенные части пользовательского интерфейса, они только получают данные и отображают. Container components имеют дело с логикой. Они обычно обладают некоторым состоянием и отображают только Presentational components на основе логики.
Плюс в такое разделения в быстродействии приложения и упрощении отладки
Минус, думаю, в том что если приложение придется расширять то некоторые Presentational components должны будут иметь какую то логику и эти компоненты нужно будет затратнее по времени переписывать.
Как устроено наследование в JS? Расскажите о своем опыте реализации JSнаследования без использования фреймворков.
Ответ
Наследование в JS устроено с помощью прототипов. Если при чтении в объекте нет содержится свойства или метода, то они будут искаться в другом объекте на который указывает ссылка _proto_ (если таковой имеется у объекта). И так далее по цепочке прототипов.
Особого опыта в реализации наследования без фреймворков нет, решал только задачи по этой теме с learn.javascript.ru
Какие библиотеки можно использовать для написания тестов end-to-end во фронтенде? Расскажите о своем опыте тестирования веб-приложений.
Ответ
Знаю что используют Jest + Puppeteer для тестирования React приложений, но самому, к сожалению, не приходилось с этим сталкиваться.
Вам нужно реализовать форму для отправки данных на сервер, состоящую из нескольких шагов. В вашем распоряжении дизайн формы и статичная верстка, в которой не показано, как форма должна работать в динамике. Подробного описания, как должны вести себя различные поля в зависимости от действий пользователя, в требованиях к проекту нет. Ваши действия?
Ответ
Думаю, что стоит обратиться к руководителю проекта или к тим лиду, для уточнения этого вопроса.
Расскажите, какие инструменты помогают вам экономить время в процессе написания, проверки и отладки кода.
Ответ
Конечно сама IDE упрощает написание кода. Использование препроцессоров, для HTML пользовался PUG, для CSS - SCSS. ESLint позволяет сэкономить время и уберечь от глупых ошибок. Также использую React DevTools и REDUX DevTools, что сильно помогает в процессе отладки кода.
Какие ресурсы вы используете для развития в профессиональной сфере? Приведите несколько конкретных примеров (сайты, блоги и так далее). Какие ещё области знаний, кроме тех, что непосредственно относятся к работе, вам интересны?
Ответ
Читаю хабр, статьи на медиуме, слушаю подкасты на ютубе. По темам веб разработки читаю документацию на developer.mozilla.org. Решаю задачи на codewars (пока 5 kyu, но еще решаю). Занимался на некоторых курсах на stepik.org и hexlet.io. Пару раз посещал БЭМапы в Яндексе
Помимо тех областей, которые относятся непосредственно к работе, интересно еще программирование на ардуино и raspberry и тема интернета вещей.
Расскажите нам немного о себе и предоставьте несколько ссылок на последние работы, выполненные вами.
Ответ
В меру перфекционист, способен к самообучению, английским владею на уровне чтения статей, ответов на stackoverflow и умею гуглить перед тем как задавать вопросы.
Последние выполненные работы
- https://github.com/NikFedoseev/test-task-tr-logic-llc (приложение Авторизации/Регистрации с защищенным роутингом)
- https://github.com/NikFedoseev/aviasales-task (простое React приложение, сортирующие карточки с билетами)
- https://github.com/NikFedoseev/vk-bot-nodejs (чат-бот с расписание для ВК)