Подведение итогов конкурса самых странных заданий на собеседованиях

td429kb7dkiptp0joj3bsh-tacu.png

Настало время подвести итоги конкурса, который был в статье «Программисты, ходите на собеседования». Условия конкурса были следующие: привести пример самого необычного задания, которое было на вашем собеседовании. Пришло время подвести итоги конкурса и провести финальное голосование! Поехали!

Задание, которое прислали читатели


Мы отобрали, на наш взгляд, самые интересные задания и вы можете провести их оценку. Мы не ограничивали количество примеров, поэтому некоторые пользователи привели сразу несколько.

1. Пользователь с ником jakushev привёл два задания (первое и второе).
Первое задание:

Ну, не знаю, на сколько интересное, но абсолютно глупое задание: «Написать «Hellow, World!» без единой ';' ». На Си.


Второе задание:

На «бареметалл» еще такое любят: Есть очень простой контроллер, с минимальным ОЗУ, допустим, PIC16F873, он «нюхает» RS-485. По интерфейсу передается пакет, состоящий из 32х битных чисел. Формат, начало и конец пакета известны, известно, что каждое число передается четное количество раз. Так же известно, что канал 100% надежен. А поток может быть ОЧЕНЬ длинный. Но 1 число из выборки передается нечетное количество раз. Как его найти?


2. Пользователь с ником nick758привёл следующую задачу:

Задачка с собеседования. Что выведет программа? Решить без запуска. В тексте незначительные ошибки, чтобы сразу не скомпилировалось.
Самая наркоманская задачка такого рода из тех, что я видел :)
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;
}


3. Пример с собеседования от пользователя vladshulkevich:

  • интерпретатор простого ЯП (подмножество паскаль кажется): переменные, арифметика,
  • задача на выявление рассинхронизации тактовых генераторов двух компьютеров с вымышленными (?) архитектурой и ассемблером с простейший одноранговой сеткой, скорее даже прямым соединением
  • удалённый лайвкодинг: написать и поднять простой CRUD на symfony без генераторов в докере (не помню Докер условием был или сам решил)
  • нарисовать грубую модель предметной области jira, нарисовать схему сервисов: серверы, сторы, очереди, СУБД и т. п.


4. Пользователь iamdev95 привёл занимательную задачку:

Есть два регистра: R1 и R2
Есть две команды:
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 — целое.


5. Шуточная (но вполне реальная) задача от vadim_bv

Задача из физтеховской шутки «решала вся кафедра, но к экзамену решила»: Отсортировать 8-терабайтный массив байтов.


В ваших силах определить победителя! Голосуем за самое интересное задание на интервью. По результатам голосования победитель получит интересный приз! Результаты голосования подведём в воскресенье 11 октября.

© Habrahabr.ru