Полезный совет для тех, кто готовится к интервью

Всем привет,

Я недавно общалась с несколькими знакомыми, которые сейчас как раз интенсивно готовятся к интервью. В процессе я поняла важную вещь, о которой я никогда не писала и даже не думала. Важное, поэтому делюсь.

Задача

 

Вот вам пример довольно типичной задачи на разогрев для интервью:

Найти максимальный префикс для всех строк в массиве.

Вот два правильных решения с leetcode:

Один:

solution2

Два:

solution3

Какое решение лучше?

Оба решения правильные и про каждое можно поспорить, что оно лучше. Первое более читабельное. Второе короче. Для интервьюера оба ответа будут равноценно хороши. Сложность одинаковая. Оба рабочие. Код в обоих чистый и без багов.

Но они не будут равноценно хороши для вас, как для кандидата. Почему? Потому, что на то, чтобы банально написать первый код на доске, вам понадобится больше времени. Это значит, что у вас будет меньше времени на решение следующей задачи.

Смотрите. Интервью – это 45 минут. Из них минут 10 уходит на всякую болтовню. Техническая часть занимает 35 минут. И чем больше задач вы за эти 35 минут решите, тем лучше.

Что делают те, кто готовятся? Они учат алгоритмы, учатся решать задачи и писать к ним код. Но тут есть один момент, который некоторые упускают.

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

Совет

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

for (int n : nums) { … }

написать быстрее, чем

for (int i = 0; i < nums.size(); i++) { … }

Или

auto object = GetObject();

написать быстрее, чем

SomeObjectName object = GetObject();

Всегда ищите “идеальные” (в том числе – короткие) решения задач, которые вы решаете, и сравнивайте со своими. Всегда ищите способы укоротить свой код. Подмечайте приемчики, которыми пользуются другие.

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

И главное – целенаправленно учитесь писать не просто правильный и оптимальный код. Но еще и старайтесь минимизировать число используемых символов. Обязательно обращайте на это внимание во время подготовки.