Собеседование на позицию Middle JavaScript разработчика: примеры задач и необходимые знания

Kate

Administrator
Команда форума

Дмитрий Шостак​

ведущий Frontend-разработчик IT-компании MediaSoft

Многие разработчики не любят, когда на собеседовании их просят писать код, но иногда это неизбежно. В этом материале я разберу несколько задач, с которыми вы можете столкнуться при прохождении интервью на позицию Middle JavaScript разработчика.

Какие знания понадобятся:

  • JavaScript;
  • базовые структуры данных;
  • большое O.
Как подойти к решению задач:

  • размышляйте вслух;
  • не торопитесь и не сдавайтесь;
  • работайте с энтузиазмом.

JavaScript​

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

Ресурсы для изучения:

  • «Современный учебник JavaScript» (перевод Ильи Кантора);
  • Eloquent JavaScript («Красноречивый JavaScript») (автор Marijn Haverbeke);
  • JavaScript Ninja (автор John Resig).

Структуры данных​

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

  • массивами;
  • объектами/Хэш-мапами;
  • связанными списками;
  • стеками;
  • очередями;
  • деревьями;
  • графами.

Большое О​

О большое описывает эффективность выполнения кода — то есть то, насколько быстро выполняется алгоритм с учётом входных данных (time complexity).

https://tproger.ru/jobs/middle-js-razrabotchik-react-typescript-holyweb/?utm_source=in_text
После того, как вы напишете свое решение, важно назвать его сложность и время выполнения.

Большое О к задаче пишется комментарием над решением.

Пример:

// O(n) time | O(1) space

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

Размышляйте вслух​

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

Не торопитесь и не сдавайтесь​

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

Не поддавайтесь панике и не опускайте руки, если подойти к решению никак не получается. Это ещё не конец, и вы всё ещё можете успешно пройти интервью. Обдумайте проблему и попросите у собеседующего небольшую подсказку – это лучше, чем молча сидеть и надеяться, что вам помогут.

Работайте с энтузиазмом​

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

Задачи уровня Middle​

Сумма двух чисел​

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

Пример входных данных:

array = [3, 5, -4, 8, 11, 1, -1, 6]
targetSum = 10
На выходе:

[-1, 11] или [11, -1], так как -1 + 11 = 10 = targetSum

Решение 1


Решение 2


Преобразование массива в объект с группировкой и фильтрацией элементов​

Напишите функцию, которая на вход принимает массив из студентов, где студент — это объект с полями «имя», «возраст» и «номер группы» {name: string, age: number, groupId: number}, а на выходе возвращает объект, где ключ — это номер группы, а значение — массив из студентов старше 17 лет.

Решение 1


Решение 2



Проверка строки на палиндром​

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

Палиндром — слово или текст, одинаково читающееся в обоих направлениях.

Решение 1






Решение 2





Решение 3





Найти ближайшее значение в бинарном дереве​

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

Node = { value: number | null, left: Node | null, right: Node | null }

Решение



Итог​

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

Поэтому дерзайте и удачи на собеседовании 🙂


Источник статьи: https://tproger.ru/problems/sobesed...otchika-primery-zadach-i-neobhodimye-znanija/


 
Сверху