Я недавно спілкувалася з кількома знайомими, які зараз якраз інтенсивно готуються до інтерв'ю. В процесі я зрозуміла важливу річ, про яку я ніколи не писала і навіть не думала. Важливе, тому ділюся.
Ось вам приклад досить типової задачі на розігрів для інтерв'ю:
Ось два правильних рішення з leetcode:
Яке рішення краще?
Обидва рішення правильні і про кожне можна посперечатися, що воно краще. Перше більш читабельним. Друге коротше. Для інтерв'юера обидві відповіді будуть рівноцінно хороші. Складність однакова. Обидва робочі. Код в обох чистий і без багів.
Але вони не будуть рівноцінно гарні для вас, як для кандидата. Чому? Тому, що на те, щоб банально написати перший код на дошці, вам знадобиться більше часу. Це означає, що у вас буде менше часу на рішення наступного завдання.
Дивіться. Інтерв'ю - це 45 хвилин. З них хвилин 10 йде на будь-яку балаканину. Технічна частина займає 35 хвилин. І чим більше завдань ви за ці 35 хвилин вирішите, тим краще.
Що роблять ті, хто готуються? Вони вчать алгоритми, вчаться вирішувати завдання і писати до них код. Але тут є один момент, який деякі упускають.
Написати хороший працює код недостатньо. Потрібно ще написати такий код, який пишеться максимально швидко і який заощадить вам час для наступного завдання.
Тому коли готуєтеся, готуйтеся прицільно до того, щоб писати максимально лаконічно. Помічайте для себе хитрощі вашої мови, на зразок того, що
написати швидше, ніж
auto object = GetObject ();
написати швидше, ніж
SomeObjectName object = GetObject ();
Завжди шукайте "ідеальні" (в тому числі - короткі) вирішення завдань, які ви вирішуєте, і порівнюйте зі своїми. Завжди шукайте способи вкоротити свій код. Помічайте прийомчики, якими користуються інші.
Якщо у вас є час, то хорошим джерелом рад можуть бути статті і сайти зі спортивного програмування. На сайтах на кшталт TopCoder завдання потрібно вирішувати швидко. Тому дивимося на код хлопців з хорошим рейтингом, які напевно знають купу хитрощів, і забираємо собі в скарбничку.
І головне - цілеспрямовано вчитеся писати не просто правильний і оптимальний код. Але ще й намагайтеся мінімізувати число використовуваних символів. Обов'язково звертайте на це увагу під час підготовки.
- Лікарні в США
- Питання на архітектуру систем: Частина 2
- Робота в Google: Ложка дьогтю
- Хочу працювати в Google: Літні стажування відкриті!