Автор вспоминает собеседование на летнюю стажировку в Microsoft в 1994 году. Тогда он понятия не имел, что его ждут классические «программистские вопросы», — интернета с советами по подготовке ещё не было. Решать задачи на месте ему приходилось впервые, но, по его словам, это было чертовски весело. Он запомнил все четыре вопроса и собирается разобрать их по одному в ближайших постах, сравнив ответы «тогда» и «сейчас» с учётом эволюции железа.
Первый вопрос оказался самым простым: написать на C функцию копирования прямоугольника из одного буфера в другой. Никаких требований по производительности не было — просто проверка базового понимания указателей и работы с памятью.
Второй вопрос был странным — копирование ASCII-Z строки (однобайтовые символы, null-terminated). Автор до сих пор гадает, почему интервьюер задал эту тему после копирования прямоугольника, и подозревает, что тот сам не до конца разбирался в материале.
Третий вопрос — самый интересный и сложный для неопытного автора. Речь шла об оптимизации flood fill'а для графической библиотеки Microsoft (кажется, для какой-то версии BASIC). Конкретная задача: определить, содержит ли байт пиксель заданного цвета. Подвох в том, что режим был four-color CGA, где на один байт приходится четыре двухбитных пикселя, и никаких SIMD-инструкций тогда не существовало. Решение требовало битовой магии — по сути, программирования в стиле SIMD без SIMD. Несмотря на то, что автор не справился, эта задача осталась его любимой.
Четвёртый вопрос — написать алгоритм отрисовки окружности (только контур) через целочисленную арифметику. В 1994 году float на десктопах всё ещё был слишком медленным для графики. Задача проверяла скорее начитанность кандидата: додуматься до алгоритма на месте практически невозможно. Автор признаётся, что не осилил её, и интервьюер буквально водил его за руку.
Все четыре вопроса автор опубликует с подробными ответами в ближайшие дни и предлагает читателям попробовать решить их самостоятельно.