Продолжаю серию про технички в конкретных компаниях. Сегодня Pyrus и C#: я разобрал 11 записей собеседований наших учеников с мая 2025 по сентябрь 2026. Задачи там из раза в раз почти не меняются, а первая часть собеса такая же, как и 5 лет назад.
Сначала тебе дают две задачи для самостоятельного решения прямо во время собеса. После интервьюер возвращается и начинает задавать вопросы по твоему решению и уже дальше вопросы по техничке. Давайте разберем основные задачи.
🔁 Задача на удаление дубликатов (8 раз из 11)
Первая задача на удаление дубликатов из массива. Проверяют, как реализуешь, спрашивают про сложность алгоритма, а также акцентируют внимание на сохранении порядка. Дополнительные вопросы такие: "Сложность добавления в HashSet всегда O(1), в среднем или в худшем тоже?", "Какой плохой случай у Add в List?"
Как избежать ошибки. Реши задачу перед собесом и подготовься к вопросам, найдёшь их в файле со сводкой вопросов. Повтори, какие сложности у операций работы с коллекциями, особенно HashSet и List. Изучи, что происходит при коллизии при добавлении в HashSet.
🐢 FilterLast: убрать последние N элементов (8 из 11)
На 10 из 11 собеседований проверяли знания ленивой загрузки. Просят реализовать метод FilterLast, который возвращает последовательность без последних N элементов. Реализация должна выполняться за один проход, а длина коллекции неизвестна. Решается через Queue и yield return. Но решить недостаточно, потом душат вопросами.
Пример дополнительного вопроса. В источнике 12 элементов, получение каждого стоит 100 долларов, потому что он качается из облака. Сколько заплатим за src.FilterLast(3).Take(4).ToList()? Ученик ответил 1200. Правильно 700: Take остановится на четвёртом элементе, а FilterLast, чтобы его отдать, прочитает семь.
Так интервьюер проверяет понимание работы с коллекциями.
Как избежать ошибки. Подготовься заранее — реализуй метод перед собесом. Вызови его несколько раз, чтобы понять, как работает, а также как комбинируется с другими Linq операторами, например: Take, Skip, Last.
🗃 SQL (7 из 11)
На 10 из 11 собесов просили написать запрос, который вернёт имя одного сотрудника с максимальной зарплатой, и название его отдела. Нечто подобное спрашивают в Ozon.
Также были запросы типа: "Получи список отделов со средней зарплатой больше 1000", "Что изменится, если в Group By оставить имя отдела, а ID убрать?" и просили придумать данные, на которых группировка по имени даст неправильный результат.
🔒 Две транзакции в одну строку (7 из 11)
Уровни изоляции ты наверняка знаешь. Но здесь их проверяют на практике, задают вопрос: "Две транзакции одновременно делают UPDATE одной строки по первичному ключу. Что останется в базе?".
Как ответить. В PostgreSQL вторая транзакция ждёт, пока первая отпустит блокировку строки. На Read Committed после коммита первой она перезапишет значение, выигрывает последняя запись. На Repeatable Read и Serializable получит ошибку сериализации и откатится, а повтор ложится на бэкенд. Добавь к этому, как MVCC хранит версии строк, и ответ перестанет звучать как пересказ таблицы.
📌 Что ещё встречается
GC, IDisposable, async и lock были в 3 записях из 11, все до середины июня 2026.
JWT и HTTPS: как сервер проверяет токен и почему нельзя подделать сертификат.
Задачи в Pyrus можно выучить заранее. Проверяют в основном то, можешь ли ты сам найти, где твой код сломается.
Пиши в комментариях, на чём тебя ловили на собесах в Pyrus?
Полный список вопросов по С# в Pyrus в боте
Если хочешь подготовиться к собеседованиям, напиши мне
#техничка #csharp