← На главную

Собеседование в Microsoft 1994: сравниваю ответы на C тогда и сейчас

28.05.2026 08:28 · hackernews

Автор вспоминает собеседование на летнюю стажировку в Microsoft в 1994 году. Тогда он понятия не имел, что его ждут классические «программистские вопросы», — интернета с советами по подготовке ещё не было. Решать задачи на месте ему приходилось впервые, но, по его словам, это было чертовски весело. Он запомнил все четыре вопроса и собирается разобрать их по одному в ближайших постах, сравнив ответы «тогда» и «сейчас» с учётом эволюции железа.

Первый вопрос оказался самым простым: написать на C функцию копирования прямоугольника из одного буфера в другой. Никаких требований по производительности не было — просто проверка базового понимания указателей и работы с памятью.

Второй вопрос был странным — копирование ASCII-Z строки (однобайтовые символы, null-terminated). Автор до сих пор гадает, почему интервьюер задал эту тему после копирования прямоугольника, и подозревает, что тот сам не до конца разбирался в материале.

Третий вопрос — самый интересный и сложный для неопытного автора. Речь шла об оптимизации flood fill'а для графической библиотеки Microsoft (кажется, для какой-то версии BASIC). Конкретная задача: определить, содержит ли байт пиксель заданного цвета. Подвох в том, что режим был four-color CGA, где на один байт приходится четыре двухбитных пикселя, и никаких SIMD-инструкций тогда не существовало. Решение требовало битовой магии — по сути, программирования в стиле SIMD без SIMD. Несмотря на то, что автор не справился, эта задача осталась его любимой.

Четвёртый вопрос — написать алгоритм отрисовки окружности (только контур) через целочисленную арифметику. В 1994 году float на десктопах всё ещё был слишком медленным для графики. Задача проверяла скорее начитанность кандидата: додуматься до алгоритма на месте практически невозможно. Автор признаётся, что не осилил её, и интервьюер буквально водил его за руку.

Все четыре вопроса автор опубликует с подробными ответами в ближайшие дни и предлагает читателям попробовать решить их самостоятельно.

Читать оригинал →