FizzBuzz 2.0: прагматичные вопросы для программистов



В прошлом году более 100 000 программистов прошли викторину Triplebyte. Приведённая ниже статистика показывает, что пять вопросов с множественным выбором легко отделяют настоящих инженеров-программистов от остальных (вопросы отобраны путём машинного обучения на базе заранее размеченных «успешных» и «неуспешных» программистов — прим. пер.)

Как и печально известный тест Fizz Buzz десятилетней давности, эти вопросы тривиальны для любого, кто профессионально занимается разработкой программного обеспечения, но обычно ставят в тупик любого другого человека. Приведённые ниже вопросы — первые пять в нашем тесте, и 98% успешных инженеров правильно отвечают по крайней мере на четыре из пяти. Я уверен, что если вы инженер-менеджер, проводящий собеседование, то не станете делать предложение никому ниже этого уровня.

Результаты


Прежде чем смотреть на вопросы, вот данные об успешности инженеров, основанные на количестве правильных ответов:



Мы называем «успешным» программиста, которому пришло хотя бы одно предложение о работе в компании, соответствующей его личным предпочтениям. Статистика нормализована по группе 5/5. В совокупности группы инженеров, которые правильно ответили на 4 или 5 вопросов, составляют 98% всех успешных пользователей нашей платформы. Напротив, 3/5 или ниже указывают на почти определённый отказ.

Вопросы


Вот первые пять вопросов из самой популярной «универсальной» викторины. Если взять один из наших специализированных тестов для ML, Data Science, DevOps, Front-End, iOS или Android, то там будут другие вопросы, но принцип тот же.

Вопрос 1


Какой оператор SQL извлекает данные из таблицы?

Выберите правильный ответ:

○ LOOKUP
○ READ
○ FETCH
○ SELECT

Этот вопрос в основном спрашивает «Вы когда-нибудь раньше видели SQL-запрос?» Правильно ответили 80%.

Вопрос 2


Добавьте недостающую строку кода



Выберите правильный ответ:

max_num += num
max_num += 1
num = max_num
max_num = num

Базовая императивная логика. Правильно ответили 76%.

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

Вопрос 3


Почему для повышения производительности чтения используется кэширование?

Выберите правильный ответ:

○ Оно ускоряет второе и последующие операции чтения
○ Оно ускоряет чётные операции чтения
○ Оно ускоряет нечётные операции чтения
○ Оно ускоряет первую операцию чтения

Кэширование возникает в таком множестве контекстов, что это в основном универсальная концепция компьютерной науки и невероятно практичная в повседневной разработке программного обеспечения. Правильно ответили 89%. Ух ты! Cамый простой вопрос из пяти.

Вопрос 4


Что из приведённого ниже используется для поддержания залогиненной сессии, когда пользователь просматривает несколько страниц на веб-сайте?

Выберите правильный ответ:

○ HTTP куки
○ HTTP keep-alive
○ Глобальные объекты Javascript
○ WebSockets

«Ты знаешь, как работают сайты?» Правильно ответили 80%.

Вопрос 5


Каково значение z после выполнения следующего кода?



Выберите правильный ответ:

'foo'
'baz'
undefined
'bar'

«Ты умеешь читать код?» Будучи представленным здесь в синтаксисе JavaScript, концепция словаря/хэша/ассоциативного массива/карты знакома любому, кто когда-либо работал с чем-нибудь более продвинутым, чем Бейсик.

Только 62% ответили правильно. Безусловно, это самый трудный из пяти вопросов. Лично я очень удивлён, что этот вопрос сложнее, чем вопрос № 2, но получен статистически значимый результат (p<0,001). Если у вас есть какие-то идеи, почему мы теряем так много людей на этом, дайте нам знать.

Данные


Из более чем 100 000 инженеров-программистов, которые в прошлом году прошли этот тест, вот распределение фактических результатов викторины:



Удивительно, но только 42% участников правильно ответили на все вопросы! Лучшие 67% правильно ответили, по крайней мере, на четыре вопроса (и на эти 67% приходится 98% успешных пользователей на нашей платформе).

Успешность в каждом из пяти вопросов не является независимым фактором. Если просто перемножить вероятности отдельных вопросов, то получается 27%, но реально на все вопросы отвечают 42%. Это в полтора раза больше ожидаемого показателя, если бы каждый вопрос был независимой случайной величиной. На самом деле, простая модель, рассматривающая все вопросы как независимые, подразумевает пик на 4/5, а также больший вес в ячейке 3/5, чем мы видели в реальных данных:



Оцените cебя


Если вы правильно ответили по крайней мере на четыре из пяти вопросов выше без какой-либо помощи, то вы прошли FizzBuzz 2.0 и, вероятно, должны попробовать тест Triplebyte (если результат 3/5 или ниже, то вряд ли мы вам чем-то поможем).

После прохождения теста вы увидите свои результаты и сможете создать профиль, который позволит технологическим компаниям связаться с вами, когда у них появятся возможности, соответствующие вашим предпочтениям, например, «размер компании 500+», «только удалённая работа», «инклюзивное рабочее место», «минимальная зарплата X», «разрешение домашних животных в офисе» — что угодно. Нынешний работодатель по умолчанию блокируется от просмотра вашего профиля.
Источник: habr.ru