Настало время подвести итоги конкурса, который был в статье "Программисты, ходите на собеседования". Условия конкурса были следующие: привести пример самого необычного задания, которое было на вашем собеседовании. Пришло время подвести итоги конкурса и провести финальное голосование! Поехали!
Задание, которое прислали читатели
Мы отобрали, на наш взгляд, самые интересные задания и вы можете провести их оценку. Мы не ограничивали количество примеров, поэтому некоторые пользователи привели сразу несколько.
1. Пользователь с ником jakushev привёл два задания (первое и второе).
Первое задание:
Ну, не знаю, на сколько интересное, но абсолютно глупое задание:«Написать „Hellow, World!“ без единой ';' ». На Си.Второе задание:
На «бареметалл» еще такое любят: Есть очень простой контроллер, с минимальным ОЗУ, допустим, PIC16F873, он «нюхает» RS-485. По интерфейсу передается пакет, состоящий из 32х битных чисел. Формат, начало и конец пакета известны, известно, что каждое число передается четное количество раз. Так же известно, что канал 100% надежен. А поток может быть ОЧЕНЬ длинный. Но 1 число из выборки передается нечетное количество раз. Как его найти?2. Пользователь с ником nick758 привёл следующую задачу:
Задачка с собеседования. Что выведет программа? Решить без запуска. В тексте незначительные ошибки, чтобы сразу не скомпилировалось.3. Пример с собеседования от пользователя VolCh
Самая наркоманская задачка такого рода из тех, что я видел.
float bon_jovi[4][4]= { {0, 2, 0.5, 2}, {1, 3, 3 , 0}, {2, 0.5, 0, 1}, {0, 0, 0, 0} } #define FIRST_SONG 3 #define LAST_SONG 1 #define CD 0 #define ARTIST 1 void f(float *p, int jazz, int hiphop) { int high_rating=0; int low_rating=high_rating int music; float sum=0.0; for (music = jazz; music <= hiphop; music++) { sum += *(p++) if ( p[music]) high_rating++; else ++low_rating } p--; sum += *(--p) printf("%d %d %f", high_rating, low_rating, sum) } int main() { f(&bon_jovi[CD][ARTIST], LAST_SONG, FIRST_SONG) return 0; }
:
- интерпретатор простого ЯП (подмножество паскаль кажется): переменные, арифметика,
- задача на выявление рассинхронизации тактовых генераторов двух компьютеров с вымышленными(?) архитектурой и ассемблером с простейший одноранговой сеткой, скорее даже прямым соединением
- удалённый лайвкодинг: написать и поднять простой CRUD на symfony без генераторов в докере (не помню Докер условием был или сам решил)
- нарисовать грубую модель предметной области jira, нарисовать схему сервисов: серверы, сторы, очереди, СУБД и т. п.
4. Пользователь iamdev95 привёл занимательную задачку:
Есть два регистра: R1 и R25. Шуточная (но вполне реальная) задача от vadim_bv
Есть две команды:
C1: R1 := K*R2 — R1
C2: R2 := K*R1 + R2
Есть целевое число N
На входе: K, N, R1, R2
Нужно: распечатать минимальную последовательность из команд, позволяющую получить N в R1 или в R2 (в любом из двух регистров)
Либо напечатать ничего
Известно, что K != 0, R1 != R2, K, R1, R2 — натуральные, N — целое.
Задача из физтеховской шутки «решала вся кафедра, но к экзамену решила»: Отсортировать 8-терабайтный массив байтов.В ваших силах определить победителя! Голосуем за самое интересное задание на интервью. По результатам голосования победитель получит интересный приз! Результаты голосования подведём в воскресенье 11 октября.
leremin
Первое легко
if (printf("hello")) {}
А return 0; в некоторых компиляторах можно не писать
qrck13
Второе тоже элементарно — xor-им все и делов то. Любой системщик это сразу поймет.
AllexIn
Не просто элементарно, а вполне адекватно.
Было похожее задание на собеседовании, недоумения у меня не вызвало. Идея проверить знает ли кандидат битики и умеет ли их применять хотя бы на простом уровне.
Wesha
Да, это очевидно с самого начала.
"Мы говорим "чётное" — подразумеваем XOR,
Мы говорим "XOR" — подразумеваем чётное!" ©