Skip navigation.
Home

Вопросы к собеседованию

Скатался тут на собеседование. Контора оказалась отвратной, время потратил зря, но кое-что полезное могу выложить сюда. Речь пойдет о тестовых примерах, которые дают на собеседовании для программистов.

Пример 1.

Написать функцию, которая на входе принимает значение типа int, и печатает "A", если число делится без остатка на 3, печатает "Б", если число делится без остатка на 5, и печатает "АБ", если число делится без остатка на 3 И на 5.

Пример 2.

Написать функцию, которая выводит на печать n-ую строку треугольника Паскаля.

Собственно, о технических собеседованиях в моей области вообще я могу, базируясь на своем опыте, сказать следующее. Они бывают трех типов: на знание собственно, методик программирования, на алгоритмистику (сообразительность) и для дебилов.

Собеседования на методики программирования - это, например, задания следующего типа: написать пул обьектов с возможностью многопоточного доступа. Написать вычисление n-ого элемента факториала, используя рекурсию. Подразумевается, что в первом случае человек продемонстрирует знания таких вещей как синглтон, безопасный доступ в многопоточном приложении, понимание таких вещей как мьютекс или использование служебного слова syncronized. Вопросы типа "что такое remote call и при чем тут JNDI", или "сколько инстансов такого-то бина генерит Spring по умолчанию". Проверяется имел ли кандидат вообще дело с программированием, понимает ли он то, что задекларировано в его резюме.

Собеседования на алгоритмистику - это штуки типа той, что я привел выше. Проверяется понимание таких вещей, как оптимальность кода, проверку краевых условий, понимание времени исполнения алгоритма. Такие штуки обожают в Гугле. например. Наиболее интересные собеседования, проверяющие способность кандидата мыслить. Язык программирования не важен, можно вообще своими словами обьяснять алгоритм.

Собеседования для дебилов в свою очередь делятся на два типа: индусские и кубик Рубика.

Индусские собеседования - это когда Радж или Девашиш берут учебник по языку и начинают вываливать на тебя вещи, являющиеся далеко не самыми ходовыми. Например, а как изменить переменную в константном контексте? (это когда функция обьявлена константной, но ей необходимо по каким-либо причинам изменить член класса). Тот факт, что служебным словом mutable программист пользуется чуть реже чем раз в год, во внимание не привлекается. Или классическим примером высокого мудизма является вопрос о том, в чем разница между функцией mod и оператором %. Задачей индусского собеседования является демонстрация собеседующим своих глубоких знаний темных углов программирования ничтожному кандидату.

Кубик Рубика - это собеседования на проверку мудизма коры головного мозга соискателя. Вот типичные примеры вопросов на собеседованиях в стиле кубика Рубика:

- поменять местами значения переменных А и Б не пользуясь промежуточной переменной С.
- изменить обьект класса, объявленный как константный.

Для меня до сих пор является загадкой, что именно проверяется такими вопросами: жизненный опыт показывает (я видел кадра, который вживе внедрил второе в проекте), что код с использованием таких вещей абсолютно не поддается поддержке, и по-хорошему за такое надо отрывать руки и гнать поганой метлой из проекта. Тем не менее, такие собеседования случаются. Работать в таких конторах (или, по крайней мере, в одной команде с такими людьми) не стоит.

Сам факт

Сам факт предложения тестовых заданий для меня лично "красный флаг" - означающий что в данной конторе не намерены платить за работу раз, и, как правило, на руководящих постах сидят клинические мудаки, два.
Я обычно при телефонном разговоре стараюсь максимально вежливо выяснить предстоят ли тесты и сразу сказать, что я не тот человек которого они ищут дабы не тратить в пустую время.

Плюсую

Плюсую многократно. Делаю то же самое.

А откуда такая

А откуда такая ненависть к? Чем вызвана?

Ну, это не

Ну, это не ненависть, а скорее рафинированное знание :)
Конечно, на ранних этапах своей карьеры я походил по тестам с неизменно негативным результатом.
Но однажды меня занесло довольно высоко по должностной иерархии и мне приходилось лично заниматься наймом причём в разных ролях и по разным сценариям.
В любом случае тестирование используется только в тех случаях, когда человек реально не нужен.
Типичный сценарий: нанимает контора, которая занимает значимый %% от рынка труда в данном регионе. В конторе хорошо поставлен процесс и незаменимых нет. Если вывешивается объявление о найме даже на среднюю по рынку зарплату, на такую объяву народ особо не идёт - менять шило на мыло дураков нет. А чем большую долю рынка держит контора - тем меньше от средней она намерена платить. Поэтому вывешивается объявление "зарплата до $$$100500 по результатам теста". Ключевое слово здесь - "до...".
Понятно, что тест строится по принципу "а ну ка подпрыгни". А теперь подпрыгни с пятерным сальто назад, тройным хлопком за спиной и сквиртом! А!? То-то! Не можешь! Но так и быть, возьмём тебя на $0.00001 на время обучения и потом прибавим по результатам.

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

Лично у меня -

Лично у меня - все просто. Два примера:

1. Американцы.

Ебали мне мозг недели три. И тем как я и что могу. И тем что покажи. И "Ой хорошо показал, но вот еще босс хочет увидеть!". В итоге, сожрали у меня дохера времени, эскалировали интервью все выше и дождались того что я прямым текстом цитировал один из твоих старых постов про то что "Наши новые кандидаты успевают выйти на пенсию прежде чем проходят наши HR-тесты".

2. Шведы.

Им надо было чтобы я показал что "Умею работать с Апаче". Тестовое задание: "Сделай так чтобы он слушал на портах 7443 для HTTPS и 7080 для HTTP одновременно. Желательно еще чтобы ты мог написать компатибельный конфиг под nginx!"

Да идите вы нахуй! Вы определитесь сначала какой протокол вам нужен, и какой вебсервер. А потом задавайте. Ваш вопрос похож на "Сделай так чтобы ты на трехколеснике пришел 100-метровку первым!" Теоретически это возможно, но нахуя!? Я искренне не понимаю формулировки. Просто чтобы я запарился и написал кучу if-ов? Чтобы я вам vhost конфигов нахерачил? Зачем? Дайте в руки систему и скажите как надо чтобы она работала, а не вот это вот теоретическое говно, как ты описал, где надо чтобы одна переменная стала второй, без использования третьей. Можно? Да. Но никто и никогда так не делает.

На моем опыте, я не встречал ни одного тестового задания которое соответствовало бы реальности. Это всегда какая-то лютая хуйня из истории "пойди туда - не знаю куда". Вот нынешний клиент (банк) не давал таких тестов. Спросили если могу на баше, если могу вливаться в новые (ебанутые) процессы, и если справляюсь когда нагрузка давит на башню. Адекватно.
Интервью перед этим, докопались до "Откуда брал тар-болл для системы. Как ставил? А как выглядит wget комманда для установки этого тар-болла?". Да идите вы в жопу. Меня нанимают решать проблемы и делать хорошо, а не помнить какой wget я писал. Скопипастил я его, со страницы вендора. Пиздуйте формировать curl запросы, если вас так волнует каждый аргумент команды исполняемой. Там много аргументов. Кстати, для куриозы, curl лучше всего делать как - curl -kiv URL Так же как netstat лучше делать -tulpn

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.