Інженер виклав розшифровку невдалої співбесіди в Google

27.10.2016, 19:27

Розробник П'єр Готьє проходив співбесіду на позицію технічного директора в Google. На роботу його не взяли, але він не посоромився викласти розшифровку питань і відповідей з невдалої співбесіди.

Він вирішив написати про це, оскільки, за його словами, рекрутер не хотів або не міг через незнання обговорювати правильні відповіді, а очікував відповідей "за підручником". Один з коментарів, які цитує П'єр: "Це не та відповідь, яка вказана у мене на папірці".

Самій публікації вже кілька місяців, але пост П'єра виклало співтовариство Hacker News, де повідомлення викликало бурхливу дискусію. Одні учасники обговорення звинувачували П'єра в тому, що жодного разу не зустрічали таких питань на співбесіді в компанії, інші підтверджували його дані.

Публікуємо переклад самого поста.

Нещодавно я проводив співбесіду по телефону з фахівецем з підбору кадрів Google. Оскільки я підходив за критеріями на таке інтерв'ю, але не пройшов тест, у цьому блозі перераховані питання й очікувані відповіді. Це може стати в пригоді, якщо Google одного разу вам подзвонить.

Щоб прояснити контекст: я почав займатися програмуванням 37 років тому, коли мені було 11, і ніколи не зупинявся з тих пір. У 24 роки мене призначили R&D-директором в TWD, я розробляв найбільш відповідальні частини проектів.

Представник Google вказав, що потрібні як менеджерські навички, так і навички сучасного програмування (рідкісне поєднання). Я займався першим близько 20 років, а останнім – близько 40 років поспіль – цього виявилося недостатньо: я не зміг дати правильних відповідей. Можливо, в Google і справді занадто висока планка, а можливо, їх HR-фахівців не вистачає тих умінь, які вони покликані оцінювати?

Тест Google на позицію технічного директора

Нижче представлені питання на "високу технічну кваліфікацію" з відповідями – до тих пір, поки мене не перервали, оскільки стало очевидно, що я не підходжу.

1. Питання: Яка функція протилежна malloc () в C?

Я: free ().

Інтерв'юер: Правильно.

Думки про себе: У такі рідкісні моменти, напевно, потрібно пишатися своїми 35 роками досвіду програмування на 40-річному С.

2. Питання: Яка функція в Unix дозволяє сокету отримувати з'єднання?

Я: listen ().

Інтерв'юер: Правильно.

Думки про себе: Невже це кваліфікує мене як гуру по мережах?

3. Питання: Скільки байтів потрібно для зберігання MAC-адреси?

Я: 6.

Інтерв'юер: Правильно.

Думки про себе: Думаю, я щойно заслужив значок знавця Ethernet.

4. Питання: Відсортуйте по тимчасових витратах такі завдання: читання регістра ЦП, пошук на диску, перемикання контексту, читання системної пам'яті.

Я: Читання регістра ЦП, читання системної пам'яті, переключення контексту, пошук на диску.

Інтерв'юер: Правильно.

Думки про себе: Таке розповідають на першому курсі будь-якого IT-вишу.

5. Питання: Що таке індексний дескриптор Linux?

Я: Унікальний ідентифікатор файлу для будь-якої даної файлової системи.

Інтерв'юер: Неправильно, це метадані файлу.

Мій коментар: Це – індекс, що дозволяє унікально ідентифікувати файл у даній файловій системі, з нього можна отримувати атрибути файлу: розмір, час,дозволи, у деяких файлових системах можна навіть додавати власні атрибути.

Інтерв'юер: Неправильно, що не "атрибути", а "метадані".

Думки про себе: "Метадані" звучить більш інформативно, ніж "атрибути", ви серйозно?

6. Питання: Яка функція в Linux повертає дескриптор по шляху файлу?

Я: Я писав кастомізовані LIBC для нашого сервера додатків G-WAN, але не пам'ятаю жодної syscall, що повертає дескриптор.

Інтерв'юер: stat ()

Я: stat (), fstat (), lstat () і fstatat () всі повертають код помилки. Вони заповнюють stat-структуру, яка містить атрибути файлу, а не тільки індексний дескриптор.

Інтерв'юер: Це не відповідь, дескриптор містить всі метадані.

Думки про себе: Можливо, Google таємно купив ліцензію на одіозного чат-бота від Microsoft?

7. Питання: Як називається KILL-сигнал?

Я: SIGKILL, #define для якого встановлено як 9.

Інтерв'юер: Ні, правильна відповідь TERMINATE.

Я: SIGKILL зі значенням 15 відрізняється від сигналу KILL зі значенням 9.

Інтерв'юер: Це не та відповідь, яка вказана у мене на папірці.

Думки про себе: Ось що трапляється, коли чат-боти відкривають для себе легкі наркотики.

8. Питання: Чому Quicksort – це найкращий метод сортування?

Я: Це не так, він не завжди підходить.

Інтерв'юер: Але у Quicksort кращі оцінки Big-O.

Думки про себе: Коли ж влада нарешті визнають вплив тютюнового скандалу на психічне здоров'я суспільства? Ядро Linux (яке викорис сам Google) обрало Heapsort, а не Quicksort, оскільки перший економніше використовує пам'ять і більш передбачуваний за часом виконання.

9. Питання: Є масив з 10 000 16-бітних значень, як найефективніше порахувати біти?

Я: Потрібно зрушити біти на всіх 64-бітових словах за методом Кернігана.

Інтерв'юер: Ні.

....

10. Питання: Який тип пакетів, якими обмінюються при встановленні з'єднання з TCP?

Я: У 16-річній системі: 0x02, 0x12, 0x10, що буквально означає "синхронізувати" і "підтвердити".

Інтерв'юер: Неправильно. Це SYN, SYN-ACK і ACK. Якщо Google зіткнеться з проблемами, ви повинні це знати, щоб діагностувати їх. На цьому моменті ми припиняємо інтерв'ю, оскільки очевидно, що у вас немає потрібних умінь, щоб писати або перевіряти мережеві додатки. Вам необхідно вивчити виклики функцій в Linux, як працює стек в TCP/IP і що означає Big-O, якщо ви надумаєте подаватися ще раз. Успіху і до побачення.

Думки про себе: Коли вам потрібно прочитати дампи шістнадцятирічних пакетів, щоб з'ясувати, що сталося, трибуквені коди не допоможуть вам вирішити проблему з падінням мережевого сервісу. Можливо, Google потрібно окремо вказати, що подібні вміння не потрібні для такої роботи.

З іншого боку, мої результати в тесті – 4 з 10, що краще, ніж мій найкращий Google-пейджранк!

Підказка: Наймати людей, які знають те, чого не знаєте ви, краще, ніж наймати людей, які знають те, що знають всі.

Читайте також: Google зробить з українок успішних бізнес-леді

Пропозиції партнерів