Тебе предстоит решить кодовую задачу на языке JavaScript. Начнём с общей информации для более лёгкого понимания, зачем и как выполнять Тестовое задание.
Frontend-разработчик - создаёт интуитивные интерфейсы и эффектные веб-сайты, используя языки вёрстки HTML и CSS. Сайты, которыми ты скорее всего пользуешься: Microsoft, Gmail, Dropbox, Facebook, WhatsApp и даже Netflix, были созданы с помощью JavaScript. Такие приложения, как Uber, Instagram, Skype, Pinterest, Facebook написаны на JavaScript. Представляешь, частью какого глобального сообщества ты станешь?
JavaScript-разработчики гипер востребованы. Сайт hh.ru выдает 15 тыс. открытых вакансий по всей России для Frontend-разработчиков любого уровня, в том числе начинающих. Это профессия будущего. Спрос на этих специалистов год от года только растёт, сейчас это одна из самых дефицитных профессий в сфере информационных технологий (IT).
JavaScript-разработчики требуются в следующих компаниях: Сбербанк, ВТБ, EPAM, Росбанк, Ай-Теко, Тинькофф Банк, Банк Хоум Кредит, Райффайзенбанк, TWINO, Спортмастер, Банк Открытие, Wildberries и других. Здесь уже работают наши выпускники!
Выполнение Тестового задания поможет тебе окончательно определиться, интересно ли тебе заниматься программированием или это слишком сложное, скучное и ни разу не увлекательное дело. А нам поможет принять решение о твоём зачислении в Академию.
Для твоего удобства Тестовое задание разбито на 5 уроков:
Урок 1. Введение
Это краткое описание твоей будущей профессии, которое ты только что прочитал.
Урок 2. Среда разработки
В нём ты найдёшь ссылку на задачу на платформе repl.it и инструкцию со скринкастом о том, как пользоваться этой платформой. Это и будет твоей средой разработки.
Урок 3. Список материалов
Это список тем с активными ссылками, которые надо изучить для выполнения Тестового задания. Строго придерживайся рекомендаций в этом уроке, чтобы не терять время на изучение лишней информации. Мы сделали последовательную подборку именно тех тем, которые нужны для решения задачи.
Урок 4.Тестовая задача Калькулятор
Практическая задача с данными и требованиями к её решению. В этом уроке тебе нужно будет решить задачку с помощью кода.
Урок 5. Q&A (вопросы и ответы)
Здесь ты найдёшь ответы на часто задаваемый вопросы и некоторые подсказки по выполнению Тестового задания.
ВНИМАНИЕ! На выполнение Тестового задания даётся 7 дней, поэтому дочитывай Введение, переходи к Уроку 2, далее приступай к изучению материалов из списка в Уроке 3 и начинай писать код сразу, одновременно с изучением материалов, не откладывая на потом!
Вот тут ссылка на чат поддержки в Телеграм для тех, кто выполняет Тестовое задание по Frontend, где ты можешь задавать вопросы о том, что тебе непонятно.
В комьюнити время от времени заходят и те, кто уже поступил в Академию, и выпускники. Так что ты сможешь общаться не только с другими абитуриентами, но и получать ответ от более опытных ребят. Важно сразу начать тренировать в себе навык - задавать вопросы, которые у тебя возникают. Помни, нет глупых вопросов, на начальном этапе нормально, если есть сложности. Отбрасывай в сторону стеснение и страх глупо выглядеть! Это самый верный способ освоить новые знания и профессию!
- Копируй задачу для решения, нажав на кнопку “Fork repl” (потребуется логин, можно через gmail)
- Далее откроется онлайн редактор. Слева файлы проекта (
calculator.js
/calculator.test.js
/README.md
). По центру редактор кода. Справа консоль. - Читай условие задачи в
README.md
(там где консоль есть вкладка ‘Markdown’ - это более приятное отображение содержимого файлаREADME.md
) - В файле
calculator.js
внутри функцииcalculator
пиши свое решение согласно условию задачи (Внимание! Не меняй название функции и не удаляй последнюю строку, они нужны для корректной работы тестов) - После того как ты закончил(а) - запускай код, нажав на кнопку “Run”. После некоторого времени в консоли будет результат исполнения твоего кода. Если все хорошо - копируй ссылку на задачу и отправляй решение на проверку. Если какие-то условия не выполнены, то в консоли будет информация что именно не учтено. Анализируй ошибки, исправляй решение и запускай снова до тех пор, пока решение не окажется верным.
- Файл с описанием задания
- 1.1. Текст задания
- 1.2. Отформатированный текст задания, более удобный для чтения
2. Кнопка “Run” для запуска кода
- Список файлов
- 3.1 - файл для решения
- 3.2 - файл с тестами
- 3.3 - файл с условием задачи
- Редактор кода
- 4.1 - функция, внутри которой пишем свой код
- Консоль, где будут выводиться результаты работы вашего кода
6. Тесты, которые будут применены к твоему коду. Например expect(calculator('1 + 1')).toBe('2'); означает, что при входных данных в виде строки "1 + 1" внутрь вашей функции, выходные данные должны быть строкой в виде “2”)
- Результат проверки кода
- 7.1 - Какая проверка не была пройдена
- 7.2 - Что ожидалось (expected) и что вернула функция (received)
- 7.3 - Как была вызвана функция
- 7.4 - Сколько тестов было пройдено
- 7.8 - Все тесты успешно пройдены! Задание выполнено!
- Типы данных
- Переменные
- Преобразование типов
- Числа
- Строки
- Объекты
- Методы объектов
- Логические операторы
- Тернарный оператор. Switch-case
- Функции
- Базовые методы массивов
- Перебирающие методы массивов
- Ошибки в JavaScript
- Конструкция try catch finally
ВАЖНО! Не нужно смотреть все видео из плейлиста! Также не нужно проходить курсы от начала и до конца, не трать время впустую! Сверься со списком базовых тем выше и посмотри выборочно материалы только по этим темам! Для того, чтобы сэкономить своё время, выбери один-два источника из предложенных и используй их для решения тестового задания. Помни, твоя цель - решить задачу, а не изучить JS полностью самостоятельно, это ты сможешь сделать на курсе обучения в Ката Академии.
- https://youtu.be/Bluxbh9CaQ0 - канал Владилена Минина. В данном видео рассматривается база языка для начинающих. На начальном этапе, для выполнения тестового задания, будет полезно посмотреть всё, кроме последних трех частей по тайм-кодам (Асинхронность, Работа с DOM, Заключение)
- https://ru.code-basics.com/languages/javascript - интерактивный курс по основам. Полное прохождение курса займет неделю, лучше совместить с параллельным изучением других источников, для решения тестового задания одного этого курса будет мало.
- https://learn.javascript.ru/first-steps / https://learn.javascript.ru/data-types / https://learn.javascript.ru/error-handling - основы языка в виде коротких статей. Этот ресурс используй как справочник по определённым темам.
РЕКОМЕНДАЦИИ:
- Не стесняйся загуглить текст ошибки.
- Если не работает большой кусок кода - попробуй исправлять его частями. Мысленно пройдись последовательно по коду, записывая значения переменных и результат работы.
- Постарайся разбить большую задачу на маленькие подзадачи и решать их по отдельности - так гораздо проще. Или упрости задачу до варианта, который ты можешь решить, а потом дорабатывай ее до необходимых требований.
- Если не знаешь, как работать с римскими числами, воспользуйся преобразованием римских чисел в арабские. Как это сделать можно легко найти в интернете.
Создайте функцию calculate. Функция должна принимать арифметические операции двух чисел в виде строки и возвращать строку с результатом их выполнения.
Функция принимает данные из аргументов и возвращает с помощью return.
- Решение должно пройти все тесты.
- Калькулятор умеет выполнять операции сложения, вычитания, умножения и деления с двумя числами: a + b, a - b, a * b, a / b. Данные передаются в виде одной строки!
- Калькулятор умеет работать как с арабскими (1,2,3,4,5…), так и с римскими (I,II,III,IV,V…) числами. Оба операнда должны быть либо арабскими, либо римскими.
- Операнды должны лежать в диапазоне от 1 до 10 включительно, без ноля. Ответ может быть больше 10.
- Калькулятор умеет работать только с целыми числами, принимает и возвращает.
- Результат на выходе всегда строка с целым числом. В делении учитываем только целую часть - десятичную отбрасываем, например 2 / 4 = 0,5 - вернём 0.
- Калькулятор умеет работать только с арабскими или римскими цифрами одновременно, при вводе пользователем строки вроде 3 + II калькулятор должен выбросить исключение (ошибку) и прекратить свою работу.
- Поскольку в римской системе счисления нет нуля и отрицательных чисел, то вместо них возвращаем пустую строку. (например I - II = '')
- При вызове калькулятора с неподходящими числами, функция выбрасывает исключение и завершает свою работу.
- При вызове калькулятора со строкой, которая не является математическим примером с одной из арифметических операций, описанных в требовании, приложение выбрасывает исключение и завершает свою работу.
calculate('1 + 2'); // вернется строка '3'
calculate('VI / III'); // вернется строка 'II'
calculate('VII / III'); // вернётся строка II'
calculate('I + II'); // вернется строка 'III'
calculate('I - II'); // вернётся строка '' (пустая строка) т.к. в римской системе нет отрицательных чисел
calculate('I + 1'); // вернётся исключение (ошибка) throws Error т.к. используются одновременно разные системы счисления
calculate('I'); // вернётся исключение throws Error т.к. строка не является математической операцией
calculate('1 + 1 + 1'); // вернётся исключение throws Error т.к. формат математической операции не удовлетворяет заданию - два операнда и один оператор (+, -, /, *)
Я знаю другой язык программирования, но не знаю JavaScript, что можно посмотреть/почитать о сходствах и различиях языков?
- Side-by-side code snippets - Выбери язык, который знаешь и javascript - изучи сходства/различия
- Learn X in Y minutes - JS - Короткий обзор синтаксиса языка.
Что пошло не так? Устранение ошибок JavaScript
- Абстрагируйся от кода и решай задачу логически
- Разбей решение на маленькие шаги (подзадачи) так, чтобы вместе они решали одну глобальную задачу
- Поступательно решай кажду из подзадач, выстраивая их в цепочку единого кода
- Мысленно пройдись последовательно по коду, записывая значения переменных и результат работы.
- Сопостовляй фактическую работу кода и желаемую. Если обнаружил ошибку - ищи её на предыдущих этапах работы программы
- Решив локальную ошибку - снова пройдись по работе кода. Не забывай пользоваться выводом в консоль и помни, что
1
и"1"
с точки зрения кода - это разные ответы.1
- это тип данных число, а"1"
- тип данных строка
Воспользуйся онлайн преобразователем римских чисел в арабские.
Статья о Римских цифрах в Википедии.
Решение сохраняется на платформе под уникальным url. После решения задачи, сохрани ссылку на решение (скопировать url) и отправь её нам на почту [email protected] с темой "Тестовое задание Front-end".