NikFedoseev / funbox-task

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

FunBox test-task

Итог можно посмотреть тут: 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

Q1

Расскажите, чем, на ваш взгляд, отличается хорошее клиентское приложение от плохого с точки зрения

  • пользователя;
  • менеджера проекта;
  • дизайнера;
  • верстальщика;
  • серверного программиста.

Ответ

Хорошее приложение
Пользователь - Интуитивно-понятный и удобный интерфейс
- Высокая Скорость пииложения
- Приложение должно иметь функциональность, которая способна полностью удовлетворить потребности пользователя
- Отсутствие багов, лагов
Менеджер проектов - Достаточный бюджет и человеческие ресурсы
- Приложение должно развиваться и удовлетворять заказчика
Дизайнер - Идеальный внешний современный вид
Верстальщик - Отсутсвие необходимости поддержки древних браузеров
- Использование новых технологий при верстке
Серверный программист - Приложение должно быть безопасным
- Приложение легко масштабировать
- Возможность использования новых инструментов

Q2

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

Ответ

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

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

Q3

При разработке интерфейсов с использованием компонентной архитектуры часто используются термины Presentational Сomponents и Сontainer Сomponents. Что означают данные термины? Зачем нужно такое разделение, какие у него есть плюсы и минусы?

Ответ

Впервые с такими терминами встретился в React.

Presentational components – это компоненты, не имеющие внутреннего состояния. Их роль – показать определенные части пользовательского интерфейса, они только получают данные и отображают. Container components имеют дело с логикой. Они обычно обладают некоторым состоянием и отображают только Presentational components на основе логики.

Плюс в такое разделения в быстродействии приложения и упрощении отладки

Минус, думаю, в том что если приложение придется расширять то некоторые Presentational components должны будут иметь какую то логику и эти компоненты нужно будет затратнее по времени переписывать.

Q4

Как устроено наследование в JS? Расскажите о своем опыте реализации JSнаследования без использования фреймворков.

Ответ

Наследование в JS устроено с помощью прототипов. Если при чтении в объекте нет содержится свойства или метода, то они будут искаться в другом объекте на который указывает ссылка _proto_ (если таковой имеется у объекта). И так далее по цепочке прототипов.

Особого опыта в реализации наследования без фреймворков нет, решал только задачи по этой теме с learn.javascript.ru

Q5

Какие библиотеки можно использовать для написания тестов end-to-end во фронтенде? Расскажите о своем опыте тестирования веб-приложений.

Ответ

Знаю что используют Jest + Puppeteer для тестирования React приложений, но самому, к сожалению, не приходилось с этим сталкиваться.

Q6

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

Ответ

Думаю, что стоит обратиться к руководителю проекта или к тим лиду, для уточнения этого вопроса.

Q7

Расскажите, какие инструменты помогают вам экономить время в процессе написания, проверки и отладки кода.

Ответ

Конечно сама IDE упрощает написание кода. Использование препроцессоров, для HTML пользовался PUG, для CSS - SCSS. ESLint позволяет сэкономить время и уберечь от глупых ошибок. Также использую React DevTools и REDUX DevTools, что сильно помогает в процессе отладки кода.

Q8

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

Ответ

Читаю хабр, статьи на медиуме, слушаю подкасты на ютубе. По темам веб разработки читаю документацию на developer.mozilla.org. Решаю задачи на codewars (пока 5 kyu, но еще решаю). Занимался на некоторых курсах на stepik.org и hexlet.io. Пару раз посещал БЭМапы в Яндексе

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

Q9

Расскажите нам немного о себе и предоставьте несколько ссылок на последние работы, выполненные вами.

Ответ

В меру перфекционист, способен к самообучению, английским владею на уровне чтения статей, ответов на stackoverflow и умею гуглить перед тем как задавать вопросы.

Последние выполненные работы

About


Languages

Language:JavaScript 82.1%Language:CSS 10.4%Language:HTML 7.5%