Реальные задачи с собеседования "светить" некорректно, поэтому я буду рассказывать только о пробных задачах или найденных в интернете.
Задания надо выполнять на сайте hackerrank.com или аналогичном.
Пример простой задачи: "есть массив целых чисел, надо найти пропущенное число и вернуть его. Если что-то не так, то вернуть null". Несколько наборов данных для тестирования полностью открыты, несколько закрыты (показано только тест "прошел", "не прошел", "ошибка выполнения", "упал по памяти", "упал по времени" - можно исправить программу и запустить тесты заново).
Пример сложной задачи: "Есть массив из 3х элементов с линейными размерами кузова грузовика. И есть многомерный массив с линейными размерами посылок. Можно ли разместить все посылки в машине? Посылки можно поворачивать и ставить друг на друга." Если перебирать все варианты, то каждую посылку можно поставить на ее любую сторону (n^3), повернуть (n^3^2 = n^6), ставить сбоку-спереди-сверху (n^6^3 = n^18). Принципиально перебора не избежать, но можно и нужно оптимизировать: после каждого шага проверять, что если этот вариант хуже предыдущего, то не продолжать его. Можно один раз перебрать все посылки, чтобы найти лучшие и худшие варианты, их рассматривать отдельно, а не каждый-с-каждым. Проверить, что посылка не больше грузовика. Сначала грузить самые большие коробки. И т.д.
Таких оптимизаций много, и они не всегда очевидные. По-моему, идеально решить эту задачу за час невозможно - в реальности я бы оценил ее сложность в неделю, а вместе со всеми тестирования и улучшениями - в месяц.
Я решал другую задачу, но аналогичной сложности. Многие тесты падали по нехватки памяти или timeout, но мне это решение все равно зачли.
Тут хорошо подходит аналогия со спортивными соревнованиями "рогейн", когда физически невозможно выполнить всё, но надо сделать как можно больше.