Илья Леонтьев идет давить Питона
Жил был один программист-либерал по имени Илья. Мордор щедро оплачивал его фриланс-услуги по 1С, в размере 2500 рублей в час.
Но не хватало господину свободы, задыхался он в России, опасался швабр и бутылок от шампанского. Приход полицейских вообще чуть не привел его к панической атаке.
И поэтому задумал этот программист уехать за границу с женой и ребенком. Причем не только из-за того, что в России человеку не дают жить «свободно». Илья считал, что его не ценят. Работая в 1С, он получает намного меньше, чем мог бы получать в мире большого заграничного IT.
Вот так и сложилось, что из комбинации измены родине и жадности выкристаллизовалось твердое желание уехать за границу, где трава зеленее.
Но для этого нужно было сначала изучить язык программирования. Первой попыткой стала Java:
Было изучено много уроков в JavaRush, язык освоен, но появилась проблема трудоустройства. Как говорится, 30-летний джун в Java оказался не востребован.
Тогда Илья временно отказался от переезда за границу, где ему светила только неквалифицированная работа по уборки санузлов.
Но давление Мордора не ослабевало. А цифры доходов true-программистов все также давили на сознание.
В итоге Илья предпринял еще одну попытку и начал изучать Python. Причем на этот раз он сжег за собой мосты — передал другим всех своих клиентов и ушел из мира 1С. Более полугода он жил на сбережения и героически учил Python, самостоятельно и на курсах.
Разместил резюме, ходил на собеседования. И вот, когда надежда и деньги в подушке заканчивались, его взяли Джуном с окладом 120.000 рублей. Так что мечта Ильи о настоящих больших зарплатах начала сбываться. Глядишь, скоро станет true-программистом и сможет уехать за границу, как мечтал.
Вот только одно не учел Илья. Мир изменился и жизнь за границей может оказаться не сладкой. В USA предчувствие гражданской войны, Германия будет замерзать без российского газа, в Израиль его не возьмут.
Так что как бы через 10-20 лет не пришлось бы ему заново изучать 1С и проситься на Родину. Но говорят, вспоминать не изучать, так что будет полегче.
А вообще, конечно же, пожелаем ему успехов на новом поприще, космических окладов с большим количеством нулей и творческих узбеков.
Взяли, кстати, его после этого эпичного собеседования:
Собеседовавших было двое.
Теоретическая часть длилась час двадцать.
Начали за здравие: что такое изменяемые типы, что — неизменяемые. Это спрашивают всегда.
Затем — какие контейнеры данных бывают (списки, множества и т.д.)
Потом спросили, что такое словарь, и как-то незаметно сползли в вопросы про хэш-функции, хэш-таблицы, хэш-цепочки и т.д.
Спросили, чем отличаются списки от массивов.
Спросили про контекстный менеджер. Попросили на бумажке написать код чтения из файла с помощью контекстного менеджера. Затем то же самое — но через блок исключений.
Потом стали спрашивать про HTTP. Что это за протокол, какие бывают запросы, заголовки и т.д. Чем отличается GET от POST. Попросили на бумажке написать url, в котором через GET передается два параметра.
Дальше — базы данных.
Надо было нарисовать схему таблиц для книжного магазина. Книги, авторы, заказы… Обозначить ключи, стрелками все соединить. Что такое primary key, foreign key. Можно ли в primary key поместить null.
Потом надо было на листочке написать запрос, который соединит три таблички и сгрупириует их по author_id.
Затем началась ассинхронка… Спросили про основные термины asyncio. Чем отличается от threading. Написали на бумажке код, и я должен был сообщить, какой будет вывод у всей этой красоты (ответил неправильно, потому что эту тему еще глубоко не копал).
Спросили, что я знаю про Kafka (тут порадовать их также было нечем 🙂 )
Напоследок спросили что-то про Docker и Git, но я уже не помню, что.
Затем задача.
Написать на бумажке код, который для целого числа n выведет заданную последовательность.
Для n = 3 последовательность должна быть такой:
3 2 1
3 2
3 1
3
Для n = 4 — такой:
4 3 2 1
4 3 2
4 3 1
4 3
4 2 1
4 2
4 1
4
Оставили меня одного, короче, а я сидел, и писал на листочках.
Эта задача взорвала мне мозг )
Целый час просидел, но так до истины и не докопался.
Честно скажу, в какой-то момент хотелось просто встать, попрощаться и пойти домой )
Но было стыдно, и часть меня все же надеялась найти решение.
Спустя час я показал свои наработки )
Затем каждый из собеседовавших меня парней показал мне по своему любимому решению этой задачи, а я подумал: «Ни хрена себе решения, я бы до такого не додумался, пожалуй».
И чувствуя себя тупым, отправился домой.
Конец.
А что тут эпичного ? Перебор подмножеств, обычные вопросы по бэкенд разработке, знании базы языка, современных инструментов (git, docker ) и архитектурных подходов (Кафка) Вполне нормальное собеседование.