Розробник П'єр Готьє проходив співбесіду на позицію технічного директора в 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 зробить з українок успішних бізнес-леді