2 простых вопроса на собеседовании, на которые вы не можете ответить.
Предисловие
Это два вопроса, которые мой друг задал в недавнем интервью. Честно говоря, мне не нравится, когда на собеседовании мне задают вопросы по алгоритмам, потому что это вообще неэффективный способ проверить способности кандидата.
1. Как предотвратить повторную отправку нескольких запросов?
1.1 Информация о вопросе
В нашей работе часто бывает необходимо отправить запрос только один раз, чтобы пользователи не кликали повторно.
Передайте метод запроса (верните обещание после выполнения) и верните новый метод. При постоянном срабатывании будет отправлен только один запрос.
Пример
1.2 Анализ вопроса
По сравнению с задачами алгоритма, эта проблема относительно проста, нам нужно только использовать характеристики замыканий и «Promise» для завершения.
Протестируйте
2. Две суммы
Советы: это оригинальный вопрос на LeetCode, нажмите здесь, чтобы просмотреть.
Учитывая массив целых чисел nums и целочисленную цель, вернуть индексы двух чисел так, чтобы они складывались в цель.
Вы можете предположить, что каждый вход будет иметь ровно одно решение, и вы не можете использовать один и тот же элемент дважды.
Вы можете вернуть ответ в любом порядке.
Пример 1:
Пример 2:
Пример 3:
Ограничения:
2 ‹= nums.length ‹= 104
-109 ‹= числа[i] ‹= 109
-109 ‹= цель ‹= 109
Существует только один правильный ответ.
2.1 Используйте два цикла for для решения проблемы
Когда моя подруга увидела этот вопрос, она подумала, что ей повезло, потому что он казался таким простым. Поэтому она сразу написала ответ и ждала, пока интервьюер задаст следующий вопрос.
Это ее ответ
Интервьюер похвалил ее за быстрый ответ, но результат его не удовлетворил, и он подумал, что есть возможность дальнейшей оптимизации.
2.2 Используйте «Карту» для решения проблемы
Обычно при использовании двух циклов for для решения задачи необходимо понимать, что временная сложность (o(n2)) алгоритма может быть оптимизирована.
На самом деле, мы можем использовать для этого цикл for, пока зависимость становится вычитанием, а пройденное значение сохраняется в объекте sumCache
.
Например:
Ввод: [2,7,11,15]
Шаг 1
Шаг 2
Считаете ли вы, что способ использования «Карты» прост и понятен, что намного проще, чем цикл for?
Замечательно. Мы получили лучшие результаты. Мы использовали только на 1,5 млн больше места и сократили время почти вдвое.
Окончательно
Спасибо, что прочитали. С нетерпениемс нетерпением жду ваших подписчиков и новых статей высокого качества.
Интервьюер: Может ли «x !== x возвращать True в JavaScript?
Пять волшебных знаний в области JavaScript, о которых вы, возможно, не знали!javascript.plainenglish.io»
Дополнительные материалы на PlainEnglish.io. Подпишитесь на нашу бесплатную еженедельную рассылку новостей. Подпишитесь на нас в Twitter и LinkedIn. Присоединяйтесь к нашему сообществу Discord.