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

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

1. Две суммы

Вопрос: Учитывая массив целых чисел nums и целое число target, верните индексы двух чисел, сумма которых равна target.

Почему это задается. Эта задача проверяет базовое понимание использования хэш-таблиц для быстрого поиска.

def twoSum(nums: List[int], target: int) -> List[int]:
    num_map = {}
    for i, num in enumerate(nums):
        complement = target - num
        if complement in num_map:
            return [num_map[complement], i]
        num_map[num] = i

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

2. Групповые анаграммы

Вопрос: Учитывая массив строк, сгруппируйте анаграммы вместе.

Почему это задается: Этот вопрос углубляется в манипулирование строками и их правильное хеширование.

def groupAnagrams(strs: List[str]) -> List[List[str]]:
    anagram_map = {}
    for s in strs:
        sorted_str = "".join(sorted(s))
        if sorted_str in anagram_map:
            anagram_map[sorted_str].append(s)
        else:
            anagram_map[sorted_str] = [s]
    return list(anagram_map.values())

Получите более высокую зарплату с помощью Grokking Comp Negotiation в сфере технологий.

3. Первый уникальный символ в строке

Вопрос: Учитывая строку, найдите первый неповторяющийся символ и верните его индекс.

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

def firstUniqChar(s: str) -> int:
    char_count = {}…