LINUX.ORG.RU

Вопросы на python-собеседовании

 ,


5

5

Накидайте вопросов, которые вам задавали или вы задаёте при собеседовании на python-программиста.

Вопросы с собеседований нужны чтобы получить представление и готовиться. Хотел бы освоить python (скорее подтянуть, т.к. что-то я уже знаю) и походить по себеседованиями.


Ответ на: комментарий от WitcherGeralt

Кстати мне постоянно нужен этот to_bytes и подобное. Но я никак не запомню где они определены и как называются. Но мне это не мешает.

mxrd2
() автор топика
Ответ на: комментарий от WitcherGeralt

Так вот непонятно, что делать на собеседовании, если ожидается, что я должен помнить стандартную библиотеку.

mxrd2
() автор топика
Ответ на: комментарий от mxrd2

Вообще, ты, похоже, уже забыл, что тема про собеседования. На попрос про нужно или нет в контексте собеседования — однозначное «да». С этим спорить бессмысленно, вот спросят тебя и что? Снажешь, что не нужно?

WitcherGeralt ★★
()
Ответ на: комментарий от mxrd2

Хз, что делать. Если это конкретная задача и надо «писать на доске», то сказать что хз как точно и описать на словах.

Я бы такую херню не спрашивал, но я из прогеров только джунов собеседовал.

WitcherGeralt ★★
()
Ответ на: комментарий от WitcherGeralt

Снажешь, что не нужно?

В том-то и вопрос как вести себя и вообще.

Ведь действительно «не нужно». Я же доказал, что вполне можно нормально программировать без запоминания стандартной библиотеки. Я даже только что показал тебе, что даже «знать о существовании» это тоже кукареку.

Причем мне ведь отлично известно, что все эти собещедующие «помнильщики» стандартной библиотеки и прочей мутотени в реальности на 100% гугло-зависимы и гуглят постоянно. Я же хоть и не помню стандартную библиотеку вообще, но у меня-то и гугло-зависимость куда ниже. Во многих ситуациях, когда он как полезет в гугл я обойдусь без интернета вообще.

Соврешенно нечестное требование (судя по отписавшимся выше) которое непонятно как обходить.

mxrd2
() автор топика
Ответ на: комментарий от mxrd2

Да никак, только не говори, что нихера не помнишь. Кого угодно, даже если он Гвидо, на собеседовании завалить можно. Ну завалишься и завалишься, вакансий же дофига.

WitcherGeralt ★★
()
Последнее исправление: WitcherGeralt (всего исправлений: 1)
Ответ на: комментарий от Mirage1_

Правильным ответом уже лет десять является «str есть, а unicode нет».

t184256 ★★★★★
()

Напиши класс, который можно использовать как ключ в словаре

anonymous
()
Ответ на: комментарий от anonymous

ты не имеешь права спрашивать такое на собеседовании у программиста.

Почему нет? Если заказчик пробрался к программистам и терроризирует их французскими глаголами, его нужно аккуратно обезвредить чашкой кофия и натравить на него аналитиков. А они уже будут вести заказчика дальше.

i-rinat ★★★★★
()
Ответ на: комментарий от t184256

Напиши кеширующий декоратор. Расскажи, что плохо в твоем решении и как это фиксить.

На собеседовании?

dem ★★
()
Ответ на: комментарий от t184256

Это реальный вопрос, который мне задали на собеседовании.

seiken ★★★★★
()
Ответ на: комментарий от t184256

Я например написал декораторов штук 500 за свою жизнь, но 1) Декоратор надо писать ТОЛЬКО если надо. тоесть если хочется - сначала подумай, это как метакласс. 2) Всегда перед тем как писать открываю гугл.

dem ★★
()
Ответ на: комментарий от t184256

Кстати вот ходил и думал, а что меня это выворачивает... Ну давай представим что мы пишем УНИВЕРСАЛЬНЫЙ кеширующий декоратор.

Ну для синуса все ясно. Деократор создает в пространстве имен cache = dict() потом функция получила параметр и если его нет в cache вызвала того кого обернули и вернула результат запомнив в cache. Ну что 5 строк...

А теперь предположим что этот декоратор пашет в сервисе на ядерной электростанции... И каков размер cache? Нужно чистить. При каждом вызове? Удалять свыше 1000 или параметр декоратора?

Бог с ней с электростанцией. У нас CAD мы вычисляем площадь фигуры. Мы получаем фигуру - хотим площадь. Ой. Мы не можем ключом делать Object... Значит что id? Но он будет разный у одной и той же фигуры просто созданной в разное время.

Далее взять джангу. Мы тестируем права юзера. делаем user1 = User.objects.get(pk=100); user2.objects.get(pk=100)

Далее мы юзеру 1 меняем права. Но перед этим мы проверили права юзера 1 и вызвали проверку.

Даже если ты воткнешь лямбду которая вытащит PK юзера то твой кеш кто инвалидировать будет.....

Повбывавбы.

dem ★★
()

Накидайте вопросов, которые вам задавали или вы задаёте при собеседовании на python-программиста.

1) Вы женаты?

2) Есть ли у вас дети?

3) Есть ли у вас водительские права и автомобиль?

4) Готовы ли вы по просьбе начальства работать в выходные без дополнительной оплаты?

5) Некоторые головки капусты - паровозы. Некоторые паровозы играют на рояле. Значит, некоторые головки капусты играют на рояле. Это верно?

te111011010
()
Ответ на: комментарий от dem

Вот что-то такое я бы и послушал, только покогерентнее и с терминологией почище.

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

Далее мы юзеру 1 меняем права. Но перед этим мы проверили права юзера 1 и вызвали проверку.

Повбывавбы.

Лол, сам придумал кешировать функцию от мутабельных объектов, сам себе и вбывай теперь. Зависимость от полей объекта, не меняющих при изменении его identity делает твою функцию недетерминированной, а их результаты, как и результаты грязных функций, кешировать — очевидно плохая идея.

t184256 ★★★★★
()
Ответ на: комментарий от Jopich1

Не видишь что ли, человеку мало универсального кеширующего декоратора, ему нужен УНИВЕРСАЛЬНЫЙ. Чтобы и для недетерминированных функций подходил, и для грязных, и чтобы все проблемы архитектур с мутирующим состоянием куда-то рассосались, и чтобы еще питон стал подходить для систем, где нужны надежность и жесткий реалтайм. А то повбывает.

Вот сколько сразу информации можно получить с моего невиннейшего вопроса.

t184256 ★★★★★
()
Ответ на: комментарий от t184256

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

Я прошел тест? )))

очевидно плохая идея.

Яж и говорю что меня тошнит от этого.

dem ★★
()
Ответ на: комментарий от dem

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

Конкретно для выводов по этому кусочку теста нужно смотреть на твой бэкграунд. Поясню на экстремумах: если ты самоучка и не скрываешь этого, программирования систематически не изучал и вообще в этой сфере еще не работал, то ты, возможно, идеальный джун или интерн с шикарным чутьем и интуицией. Если ты — сеньор помидор с десятью лет программирования на питоне за плечами, то это, наоборот, может свидетельствовать о твоей неспособности усваивать цельные архитектурные знания и принятую терминологию.

Ну и это, опять оговорюсь, что я диванный мимокрокодил и все это лишь мои фантазии.

t184256 ★★★★★
()
Ответ на: комментарий от t184256

Пишу с 2000 года примерно. Самоучка. Автор самой быстрой либы для работы с DBF. Автор дров для кассого аппарата Штрих ФР-К, еще 2-х купюроприемников (но то под НДА). Отметился в aiohttp. Я не знаю как излагать. Я говорю что я НЕ хочу писать от балды декораторы. Это ПЛОХО.

Потому вопрос на собеседовании про «напишите декоратор» это хреновый вопрос. Ибо я это не запоминаю ПРИНЦИПИАЛЬНО потому, что если ты пишешь декоратор или метакласс - явно что то пошло не так. Я открываю гугл и смотрю как их писать. Потом смотрю на то что я пишу. И потом или пишу или говорю - извините это срань господня.

dem ★★
()
Ответ на: комментарий от Jopich1

Когда тебя просят сделать на коленке какое-то решение, от тебя ждут именно написания этого решения, а не pip install либа_где_за_меня_всё_уже_сделпли.

WitcherGeralt ★★
()
Ответ на: комментарий от dem

если ты пишешь метакласс - явно что то пошло не так

Истину глаголешь!

Но декоратор, прости меня, просто сахарок к применению функции к функции. Это нельзя не запоминать принципиально, это просто незабываемо.

А если твой посыл на самом деле значил «если ты пишешь функцию высшего порядка — явно что-то пошло не так», то это уже звоночек.

t184256 ★★★★★
()
Ответ на: комментарий от t184256

излагаешь это крайне непрофессионально

Камон, если собеседующий ищет оратора, то ему следовало иначе назвать вакансию.

Умение хорошо излагать мысли на ходу, особенно устно, вообще никак не пересекается со скилами разработчика. А по терминологии… в реальности разрабы общаются сильно проще.

WitcherGeralt ★★
()
Последнее исправление: WitcherGeralt (всего исправлений: 1)
Ответ на: комментарий от t184256

если ты пишешь функцию высшего порядка

Э не.. Если ты УВЕРЕН что написал функцию ВЫСШЕГО порядка.... Ты на каком ЯП собеседование проводишь? На Python. В 99% ты не будешь получать скаляры.

На своем прошлом месте работы в Celery передавали объект User и потом отсрочено выполняли... Я когда увидел мне стало плохо. У меня кружилась голова, я смотрел вокруг и меня тошнило. Я спросил - зачем в Celery передают User (Django). Мне сказали - ну как же ты же видишь ему надо списать баксы и послать письмо. Тут после баксов у меня произошел блэкаут. Я посидел. Попил воды холодной и спросил. А что будет если User был удален? Мне сказали - тогда таск упадет. Но он не упадет. В нем в кеше были его реквизиты. И Юзер да забанен, но все поля Целери честно запиклил...

dem ★★
()
Ответ на: комментарий от dem

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

WitcherGeralt ★★
()
Ответ на: комментарий от WitcherGeralt

Кстати я на прошлой работе залепил декоратор который был почти как статичиская тпизация... Но все же я считаю что декоратор не очевиден. Ты что то там пишешь, а потом другой человек не глянет в код и не ясно что происходит. А там вдруг КЭШ. А декоратор @check_rights

dem ★★
()
Ответ на: комментарий от t184256

Как опакечивать расширения, компилирующиеся в нативный код?

Это про wheel? Кстати а кто тут это вообще делал? Ну тоесть правда..

dem ★★
()
Ответ на: комментарий от anonymous

Во французском языке две регулярные группы и одна неправильная.
В отличие от английского, в неправильной группе 13 подгрупп, 12 из которых хорошо формализованы.
В оставшейся одной абсолютно неправильной 8 глаголов типа быть, иметь, идти, приходить, хотеть... Уже не помню всех. Но самые древние абстрактные глаголы.

Shadow ★★★★★
()
Последнее исправление: Shadow (всего исправлений: 1)
Ответ на: комментарий от Shadow

Ты не умничай. Ты на собеседовании - сказали 8 - значит 8. Я вот на это и попал....

dem ★★
()
Ответ на: комментарий от dem

Ну, так принцип минимального удивления, за такое по рукам нужно бить.

А типизацию я тоже по сути делал. В RESTful API query_string так в параметры функции превращал.

WitcherGeralt ★★
()
Ответ на: комментарий от WitcherGeralt

В RESTful API query_string так в параметры функции превращал.

Это можно. Но я кстати после SWAGGER что то на JSON-RPC перешел. Как то приятнее и тут хвалят DRF - но это такое гуано, что я поел его и пока еще мне не надо, но я теперь если надо будет то буду использовать GraphQL. Не ну реально на КАЖДОЙ странице у нас JSON размером в мегабайт где ВСЕ. И имя юзера и почта и номер телефона и еще вся корзина и еще история покупок и с кем он дружит и размер его жопы, жопы жены, собаки, и чуть ли не фото его со спутника...

dem ★★
()
Ответ на: комментарий от dem

Э не.. Если ты УВЕРЕН что написал функцию ВЫСШЕГО порядка…. Ты на каком ЯП собеседование проводишь? На Python. В 99% ты не будешь получать скаляры.

Мы с тобой на каких-то разных языках говорим походу.

t184256 ★★★★★
()
Ответ на: комментарий от Shadow

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

t184256 ★★★★★
()
Ответ на: комментарий от t184256

Функция высшего порядка получает в качестве аргумента функцию и возвращает функцию. Так?

Возьмем синус он получает скаляр и возвращает скаляр - это функция высшего порядка?

Возьмем django view он получает реквест и возвращает респонс. Реквест и респонс это ОБЪЕКТЫ.

Вот я и спрашиваю у тебя ты в django пишешь вью как функцию высшего порядка?

dem ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.