3 марта LeetCode сделал специальное объявление на своем общем дискуссионном форуме. 🎁 Ограниченное по времени испытание для экспертов по Javascript!

Объявление гласило:

Вы эксперт по JavaScript и хотите изменить мир к лучшему в глобальном сообществе разработчиков?

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

Некоторое время я программировал в основном на TypeScript в Intuit и думал, что это будет интересная задача. Участникам конкурса было предложено представить только две задачи в виде игровой площадки LeetCode с тест-кейсами и кратким описанием задачи. Я помню, как друг рассказал мне о вопросе, который ему задали на собеседовании в Google, где его попросили реализовать JSON.stringify(), и я решил отправить его как мой первый вопрос. Следующей была более простая проблема, которую я нашел в видео на YouTube, заключалась в реализации Array.flat(). Обе мои игровые площадки LeetCode можно найти здесь:

Реализовать строку JSON
Реализовать Array.flat()

6 марта я отправил оба и ждал, надеясь, что меня выберут одним из победителей. В сообщении говорилось, что первые 3 пользователя получат LeetCode Backpack и LeetCode Premium. Также было сказано, что победители получат возможность поработать с LeetCode над захватывающим и важным проектом.

Честно говоря, я хотел только рюкзак. 9 марта я получил электронное письмо от главы Talent в LeetCode, в котором он благодарил меня за заявку и спрашивал о моем присутствии. Обменявшись несколькими электронными письмами, мы поговорили по телефону. Она сказала мне, что LeetCode собирается начать проект по написанию задач, полностью сосредоточенных на интерфейсе, и что главному операционному директору нужны создатели контента, которые являются экспертами в JavaScript и TypeScript. Я бы не назвал себя экспертом, но я не собирался упускать возможность написать вопросы для платформы, на решение которой я потратил дни своей жизни.

Почти каждый инженер-программист в какой-то момент своей карьеры нашел себя в LeetCode, и я был рад внести значимый вклад в сообщество LeetCoding. Я лично заметил, что меньше компаний проводят общие собеседования по программированию и вместо этого делят должности на фронтенд и бэкэнд. Бэкенд-интервью по-прежнему очень похожи на исходные общие интервью по программированию, к которым привыкли многие из нас, инженеров, но в фронтенд-интервью ощущается дух Дикого Запада. Эти интервью могут сильно различаться: от сосредоточения внимания на концепциях JavaScript, таких как промисы и замыкания, до написания html и выполнения запросов на выборку. Круг возможных вопросов был головокружительно широк, и требовалась последовательность. LeetCode, будучи крупнейшей платформой для решения проблем кодирования, мог влиять на этот процесс собеседования, предлагая стандартный набор вопросов по внешнему кодированию, которые другие инженеры могли практиковать и потенциально использовать при проведении своих собственных интервью по внешнему кодированию.

Я познакомился с главным операционным директором и вскоре встретил еще одного победителя конкурса. Нам было поручено составить список вопросов и спланировать сроки проекта. Мы сотрудничали, создавали прототипы и писали задачи, которые станут первыми проблемами интерфейса, выпущенными на LeetCode с поддержкой JavaScript и TypeScript. Попутно я также расширил свои знания JavaScript и TypeScript специально для решения этих задач. Это был взрыв, и через несколько недель к нам присоединилось больше людей, чтобы помочь с развертыванием. К сожалению, я не мог уделять столько же времени, сколько мои товарищи по команде, и решил уйти из проекта, чтобы сосредоточиться на вещах в своей личной жизни.

Я знал, что проект в надежных руках, и был уверен, что они будут опираться на созданную мной базу. На момент написания этой статьи LeetCode находился на 17-м дне 30-дневного конкурса JavaScript, и я рад видеть, что многие другие проблемы, которые я предложил, вошли в этот конкурс. Команда LeetCode также анонсировала новую категорию задач, полностью посвященную JavaScript, которую можно найти здесь. Что меня действительно впечатлило, так это скорость, с которой сообщество LeetCode сотрудничает, чтобы создать самые уникальные и эффективные способы решения этих проблем способами, о которых я даже не думал. Видеть, как мое исходное 40-строчное решение JSON.stringify было сокращено сообществом всего до 5 чистых строк кода, было унизительным опытом.

function jsonStringify(object: any): string {
    if (typeof object === 'number' || typeof object === 'boolean' || object === undefined) return object;

    if (object === null) return 'null';

    if (typeof object === 'string') return `"${object}"`;

    if (Array.isArray(object)) return `[${object.map(jsonStringify).join(',')}]`;

    return '{' + Object.keys(object).map(key => `"${key}":${jsonStringify(object[key])}`) + '}';
};

Спасибо за чтение и удачного кодирования!