Системний адміністратор Гаріма Раджпут поділилася корисними джерелами і порадами, які допомогли їй влаштуватися в Google. Вони стануть в нагоді тим, кому потрібно підготуватися до співбесіди в компанію.
Теми
Нижче наведено список тем, з яких варто почати підготовку.
- Аналіз алгоритмів: асимптотичні позначення.
- Алгоритми пошуку та сортування.
- Парадигми розробки алгоритмів: розділяй і володарюй, жадібний алгоритм, динамічне програмування, пошук з поверненням.
- Структури даних: масив, список, дерево, граф, хеш-таблиця, стек, черга.
- Обхід графа/дерева: пошук в глибину, пошук в ширину.
Джерела
У процесі підготовки до співбесіди важливо вибрати якісні джерела інформації. Щоб не заплутатися в достатку онлайн-ресурсів і навчальних матеріалів дотримуйтеся наступних рекомендацій.
- Новачкам варто почати з книги «Алгоритми: побудова й аналіз» (Introduction to Algorithms, CLRS): вона ознайомить з усіма темами, переліченими вище. GeeksForGeeks – ще один корисний ресурс.
- Відточити навички допоможуть ці платформи: InterviewBit, LeetCode, HackerRank. Також зверніть увагу на розділ «Обговорення» на LeetCode: там можна знайти теми, які стануть в нагоді для співбесід і в інші компанії.
- З’ясуйте, які підходи використовують інші фахівці. Це допоможе по-новому поглянути на проблему.
- Беріть участь в щотижневих змаганнях, проводьте пробні співбесіди, а також відстежуйте свої успіхи і аналізуйте помилки.
- Дивіться ролики про рішення задач LeetCode на YouTube.
Поради
- Готуйтеся поступово. Починайте з вирішення завдань простого рівня. Виробіть звичку робити це регулярно.
- Не турбуйтеся, якщо рішення приходить не відразу.
- Постарайтеся виявити закономірності в схожих питаннях.
- Розширюйте кількість використовуваних інструментів.
- Не поспішайте відправляти готове рішення. Пробно запустіть код і продумайте крайні випадки. Ця вправа допоможе на цій співбесіді.
- Спробуйте взяти участь в змаганнях з програмування. Це не обов’язково, але допоможе розвивати корисні навички.
Завдання
- Двійковий пошук. Розв’яжіть цю задачу. Розберіться, як можна застосовувати двійковий пошук для вирішення подібних проблем. Також зверніть увагу на цей пост.
- Динамічне програмування. Спробуйте застосувати цей метод при вирішенні таких завдань, як House Robber і Min Cost.
- Граф. Розв’яжіть ці дві задачі (перша і друга) та проаналізуйте тимчасову і просторову складність алгоритму.
- Дерево. Зверніть увагу на цю проблему.
- Тут ще одна цікава задача.