Степан Саржан собеседование junior python разработчик. Вопросы из Тинькова

Подготовка к собеседованию на Python Developer

Транскрипция видео:

  • Всем привет Добро пожаловать с вами я Андрей Пронин с нами Ольга улыбашкина улыбашка извините и Степан Это значит что очередной Собес ждет вас надеяться на многое вы сейчас его увидите Собес будет базироваться на настоящих задачках которые задают в одном банке с названием которое начинается на т вот не будем говорить что это за банк довольно большой поэтому все максимально по правде но традиционно у нас сначала некоторая часть посвящена софтам а потом уже начнем всякое Ольга тебе слово Привет а я студент третьего курса начинающий

    00:00:00 - 00:01:36

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

    00:01:15 - 00:02:50

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

    00:02:19 - 00:03:50

  • поможет тебе создать какую-то картину Расскажи про проекты которые ты делал а на курсах или помимо курсов Ну если есть ну давай так Расскажи про проекты которые вот которым ты гордишься больше всего неважно учебные коммерческие Ну вот в данный момент разрабатываю коммерческий сайт небольшой командой сайт генератора мемов там Мы там два бэкендера У нас есть мы с ним вдвоем решаем что лучше сделать как лучше сделать И это для меня хороший опыт решаешь все проблемы сам какие-то неожиданные проблемы появляются не

    00:03:03 - 00:04:34

  • понимаю что с ними делать и приходится выкручиваться и решать а в твоем резюме я не увидела дополнительных проектов Расскажи тогда это единственный проект над которым ты работаешь или есть еще какие-то хочется узнать поподробнее под выбран Ну из более менее такого коммерческого опыта это единственный проект есть еще различные выполнен тестовые задания вот также пытался сделать для себя ботов в телеграме один год год ежедневник Да там пользователь может записывать свои события И вот напоминал бы

    00:03:53 - 00:05:25

  • событиях и недавно создал Бота вот магазин категории категории все такое А как давно ты уже ищешь работу в активном поиске наверное месяца два Ну там еще месяцок Я так просто приглядывался смотрел Что есть на рынке Сколько у тебя было сравнении с другими компаниями рассматривают другие предложения тестовых не помню сколько было может штук шесть семь было три собеседования два из них я успешно не прошел третья практически прошел мне готовы были сделать оффер но сказали что не подхожу из-за того что

    00:04:43 - 00:06:23

  • надо было время чтобы переехать в Москву я слишком большой срок загнул на переезд Но им нужен был работник здесь сейчас поэтому вы Понятно Расскажи случай [музыка] [музыка] [музыка] вот Было пару разногласий вот в моем проекте Ну не моем проекте от проекта на котором я работаю генератором мемов когда мы с коллегой решали Как лучше реализовать определенную функцию я приводился в и аргументы товарищ приводил свои аргументы на по итогу мы согласились на том что лучше попробовать новые технологии и реализовать функцию

    00:05:39 - 00:07:16

  • автоматическое удаление данных через selery вот Спасибо Приведи пример когда тебе приходилось таких случаев не было пока что такой вопрос [музыка] Ну были подобные случаи когда я начинал делать какой-то проект и не мог решить какую-то простую функцию что-то реализовать и не в депрессию кажется впадал но было тяжело потому что не понимал что надо сделать как выкрутиться а порой решение было Ну совсем простым и я смотрел намного дальше чем где проблема находилась Вот если бы такое Дело было на реальном

    00:06:49 - 00:08:20

  • проекте то что я делаю проект и не знаю как мне поступить Я бы наверное начал писать все чаты спрашивать у коллег Как решить проблему попытался бы максимально подробно не предвзято как-то оценить и объяснить ситуацию на помощь параллельно искать решение Ну особо с этим как-то проблем не было после в колледже учусь на данный момент после колледжа приходил и садился изучал курсы изучал тему всякие на курсах Брок как хобби в свободное время иногда конечно приходилось сидеть подольше там до ночи когда горел дедлайн или когда какая-то

    00:08:01 - 00:09:42

  • очень тяжелая тема в которой хотелось прямо сейчас разобраться но так в целом особых проблем если бы мне сроки ставил кто-то другой на решение проблемы Я честно старался бы работать и не успевал бы я бы так бы сказал что я стараюсь но не успеваю можно как-то продлить срок Ну я писал бы состояние проблемы на текущий момент полностью решена не полностью начинало ли делать расскажи вообще как проходит твой день в данный момент просыпаюсь начинаю учиться вот сейчас активно изучаю скилл потому что чувствую

    00:09:11 - 00:10:34

  • что там есть пробелы после этого выхожу на прогулку там слушаю какие-то Подкасты пройти про околойти после этого как-то немного отдыхаю разгружаюсь и потом опять начинаю учить или опять же скилл либо какие-то другие слабые темы или тема которая мне интересно Расскажи как ты планируешь Какой формат рассматриваю Full Time работу с колледжем проблем не будет можно все сдать онлайн с этим Ну окей ты сможешь работать допустим с 10 до допустим до 5 вечера или до 6 вечера до без проблем я закончила случай Спасибо тебе

    00:10:23 - 00:12:16

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

    00:11:32 - 00:13:16

  • смотрел Сколько времени занимает выполнение этой функции хорошо значит для начала напишем первую функцию уж не помню как пишется это слово здесь не страшно декоратор так здесь вложенная функция должна быть насколько я помню Она должна принимать армии гвардия и для того чтобы работать со временем Нам нужно будет библиотека тайм [музыка] начала времени у нас будет переменной Star Time [музыка] так не помню синтаксис если честно Как задать Что надо написать чтобы получить время сейчас которое [музыка]

    00:12:39 - 00:14:41

  • как это выяснить окей Не помнишь это бывает нормально Что делать будешь в если у тебя такая задача загуглю конечно [музыка] ну загуглим [музыка] так вот загуглил посмотрим надо так насколько я помню там время передается в unix формате это в принципе неважно так теперь мы вызываем [музыка] должны вызвать функцию [музыка] вроде здесь надо передать корги нам не нужны конечно но конкретно в нашей функции для сложения лучше передать потому что мы не знаем куда мы декоратор можем использовать потом и теперь записываем

    00:14:04 - 00:16:23

  • [музыка] теперь надо Вычесть из тайма стартаем и мы получим сколько секунд работал наша функция Ну можно в одну строку сделать но я думаю не особо принципиально и возвращаем нашу функцию inner и по идее декоратор должен быть готовым так нет можно без ритуального Принт тогда сделать здесь Но насколько я знаю это не очень хорошая практика то есть лучше возвращать результат от декоратора А если надо уже то в какой-то у нас задача была что выводят выйдет это Будем считать что Принт что попробуем допустим

    00:16:02 - 00:17:51

  • так Я думаю должно быть повыше [музыка] но остается надеяться что это сработает Ну ты вызвал нет [музыка] так а я не вызвал например вызвать наверное тоже надо но что-то где-то не так Ну давай допустим 12 так 8 обязательно так посмотрим сработает теперь значит ошибка у нас появляется здесь [музыка] мы не Передаем данные [музыка] попробовал это поможет [музыка] [музыка] Так ну здесь точно факт должен быть по ошибке можно понять что все-таки декоратор работает надо разобраться с тем как передаются аргументы

    00:17:19 - 00:19:39

  • Так у нас позиционный аргументы написано здесь не знаю [музыка] Если честно нет идей он есть но здесь функция имеет наверно не надо Ну давай давай тогда если нет идей Давай сделаем немножко проще Давай сделаем вот у нас есть функция Да у нас есть декоратор Давай просто возьмем и сделаем Декарт который не делает ничего и туда дадим эту функцию то есть без вот эти дать дата Time Да без вот этого всего мы можем такую штуку сделать какую-то что она работает Давай хорошо вот у нас есть декоратор то мы здесь что-то что

    00:20:14 - 00:22:00

  • вообще должен вернуть то есть надо вот это вернуть [музыка] Ну и вот здесь вот давай как-то Но на самом деле здесь уже и поправили мы возвращаем функцию а не результаты выполнения [музыка] не доглядел случае у нас хорошая давай какую-нибудь туда добавим чтобы мы могли убедиться внутрь функция чтобы она попортилась так Это вроде тайм уже нужен есть не ошибусь как-то вот приблизительно Ладно хорошо допустим Давай дальше посмотрим что ты знаешь про словари словарь у нас представлены хэш таблицей ключи нас могут быть только неизменяемые

    00:21:38 - 00:23:22

  • типы данных [музыка] а значение любое любой тип данных А если я скажу что это не так Ну или не совсем так то есть неизменяемые конечно да но могут быть на самом деле они хешируемые чем отличие хешируемых от неизменяемых можно найти хэш и вроде у них есть магический метод хэш Да хорошо вопрос давай представим что у нас есть какой-нибудь класс который вот ты сам написал можешь написать класс то он хешируемый или нет [музыка] Ну если у него нет магического методах топайте нет Ладно давай проверим Давай напишем

    00:23:05 - 00:25:14

  • какой-нибудь класс это можно все стереть [музыка] так Допустим у нас не будет хашируема не будет магического метода Хеш Давай выните что-нибудь какой-нибудь айтишник он принимает и в общем-то и в общем-то больше на ничего не нужно от этого И имя какое-нибудь ID имя [музыка] ID name вот пусть будет класс типа человека неважно так вот нас есть класс проверить сначала надо создать наверное экземпляр объект класса так насколько я знаю что не специально функция которая хеширует Я не вспомнил проверить наш

    00:24:16 - 00:26:02

  • какая функция проверяет Но мы же хотим Проверить хэшируемые у нас этот или нет а ну хэш Так мы посмотрим как используется Чтобы наверняка она просто хэш и туда засунул нужный аргумент Ну и тогда за принцем результат чтобы узнать если Хеш Какое Да есть точно Ну хорошо У него нашли получается хэшируемый но я не уверен я бы еще почитал что-то насчет этого Ну ладно хорошо то есть получается этот класс у нас может являться ключом словаря Ну судя из определения что мы сказали да но я не уверен в этом

    00:25:46 - 00:27:33

  • Ну можно проверить в принципе а Давай напишем функцию которая бы возвращала false или True в зависимости от того хэшируемая у нас объект или нет хорошо так [музыка] лучше какой-то объект принимать [музыка] так не так не получится хотел сделать через хэш и просто сюда вот это вставить например Но будут возвращать тогда собственно хеша не тру тогда можно так сделать в данном случае не нужен да Ну да Если уж на то пошло Если уж такая конструкция так хочешь делать можно fulls обязательно Ладно давай проверим эту

    00:27:08 - 00:28:47

  • функцию точно работает не уверен если честно [музыка] объект то не знаю определение Конечно я запутался немного [музыка] Ну если счета если функция хэш посчитает то вернется True если не посчитает то Фолз хорошо А что вернет Хеш если у него запихнуть не знаю Надо проваливаться дальше смотреть если там какие-то исключения что там проверяет попробуем Давай передадим в твою функцию [музыка] так посмотрим сработает она или нет допустим у нас будет [музыка] лист какой-то Это изменяемый тип данных так и

    00:28:36 - 00:30:37

  • запретим результат так Ну посмотрим он хорошо болтает То есть если а передается не хешируемый тип то по-хорошему надо поймать исключения здесь [музыка] хорошо не вернем [музыка] как звучала задача Ну ладно просто как бы а надо вернуть Фолз если typeror аналогично [музыка] Давай вернем [музыка] [музыка] так по идее должно работать проверим Так здесь у нас показывает Хеш можно удалить что загрязняла вот вы точнее и вот не хешируемый Тип и у нас fals выводятся в целом Да приемлемо единственное что я бы Return True

    00:29:54 - 00:32:01

  • наверное в самый низ поставил потому что здесь немножко нелогично стоит это не критично Так давай дальше поедем предположим что у нас есть словарик где ключами выступают буквы A B C D E Ну давай вот так вот а значениями у нас выступает цифры целые числа и ты Давай как-нибудь придумаем создать [музыка] [музыка] Ну да только давай как-то цифры чтобы числа у нас были [музыка] разнобой что ли [музыка] Давай И давай еще одно значение так он небольшое значение чтобы чтобы было давай Да отлично запятая

    00:32:00 - 00:34:08

  • теперь Наша задача написать функцию которая возвращает ключи словаря самых двух больших значений то есть мы смотрим Какие значения самые большие и возвращаем соответственно соответствующее значение ключи в нашем случае должно быть D и B да так два самых больших два самых два самых больших два ключа самых большими значениями принимается какой-то словарь так я думаю это можно как-то через функцию Макс сделать но я не уверен что Через нее можно вернуть второй по величине так ничего не написано самое наивное решение попробовать

    00:33:15 - 00:35:05

  • пройтись циклом по словарю потом отсортировать значение которое у нас есть надо вернуть именно значение Или ключи ключи Ну да получить в принципе самые большие значения которые есть и потом получить через два самых больших ключа получено и через них можно получить два самых больших значения будет получено через них получить ключи например [музыка] Ладно назовем так вот принципиально после этого сортируем так отсортировали и теперь два самых больших числа у нас будет [музыка] думаю попробовать срезом сделать

    00:34:39 - 00:36:21

  • не знаю получится ли если минус 2 сделать что получится и теперь то есть у нас получается по идее как я думаю мы получили два самых больших значения в А и B переменных и с помощью этого Теперь мы должны запечатать вывести собственно ключи Ну давай не печатать давай возвращать будем более чистый вариант придумывать [музыка] ой как-то так Так теперь проверим функцию Передаем D и результат так поехали [музыка] у нас здесь передается второе число можно так вот Наверняка есть более элегантное решение

    00:36:22 - 00:38:17

  • [музыка] что-то печатается не то 12 Так здесь у нас словарь мы значение по значению получаем ключ по идее а Как вообще можно получить ключ по значению давай вот пока временно отойдем от этой функции Да вот она задача очень простая Мы хотим написать функцию или как-то вот не функцию что-то такое куда мы Передаем значение и поэтому значение Мы хотим получить ключ Мы же можем такого захотеть странного Да можно и вроде как устроено может быть устроена уже мне кажется все у тебя лимит на гугление На сегодня хватит

    00:37:59 - 00:39:48

  • вот у нас есть словарь [музыка] Каким образом словари значение в словарях вот хранятся ключи значения вот это все они же как-то хранятся Да с помощью хеша они хранятся [музыка] так если я попытаюсь вести просто какой-то [музыка] хочется попробовать конечно прописать Да и значение но мне кажется это Не сработает и это как бы пример Ну ладно давай Я предлагаю на этом примерно закончить твой мне понятен можно остановить решение Ольга твоя любимая фраза задавайте ваши вопросы Ну первое время наверно можно по

    00:39:27 - 00:41:24

  • стажироваться Было бы неплохо поднабраться знаний как-то укрепить вот основы Но если брать на джиновскую вакансию то тысяч 40 [музыка] Да как происходит оформление в компанию [музыка] [музыка] [музыка] и еще было бы интересно узнать про проект Какие технологии там используются какая команда Андрей Наверное это я смотри на самом деле у нас не один проект и стек у нас достаточно широкий нас есть проекты на джанга вот у нас есть проекта на дрф И сейчас мы плавно переходим некоторые вещи перевозим на Go и настапе

    00:40:53 - 00:42:42

  • то есть в общем-то начать можно с того стека на котором У тебя есть достаточно много компетенций а потом плавно переехать в какой-нибудь если мы поймем что нам все устраивает в работе и тебе интересно попробовать себя в другом языке почему нет если тебе вот какой С чего бы ты начал в чем у тебя больше компетенций а больше компетенция все-таки в Джанго но нет интересно асинхронное программирование фастафе и хотел наверное больше в этом развиваться но Джанго очень большой фреймворк там очень много функций так что с ним

    00:42:32 - 00:44:01

  • развиваться Работать тоже Довольно интересно и в принципе по вот эту вакансию у нас работа до Джанги есть Ну и больше вопросов в принципе нет лично если в матросов нет вопросов то давайте плавно переходить к фидбэку Олька Давай тебе слово Ну да смотри тут в целом ты неплохо рассказал о себе вопросы которые тебе задавала меня только смутил момент когда я тебя начала выпытывать про то как долго ты работают и там очень подробно рассказал что несколько месяцев рассказал что тебя были стажировки несколько офферов вот эту информацию Я

    00:43:23 - 00:44:53

  • бы рекомендовала брать или сократить в целом это такие твои можно сказать козыри через слабости на всякий случай Не стоит так подробно рассказывать про это все особенно где-то нашел не очень корректный вопрос Угу достаточно просто ограничиться фразой что Ну тогда вот течение нескольких месяцев еще активно работу Есть предложение есть все дальше уходить подобные вот Ну все я бы пропустила тебя следующий этап Я бы сказала свое Да вот поэтому спасибо Ну ладно теперь я да Ну смотри на всяких мелких вопросах как

    00:44:22 - 00:46:09

  • ты ну ты понял все ок то что немножко запутался с тем что возвращает декоратор Ну видимо это есть такая штука Как волнение с определенной подсказки нормально бы понял где проблема в целом не сказать что это прям критично то что я не помнишь некоторых вещей типа стандартных всяких тайм-аутов и прочего это вообще Ок никто их не помнит Если ты их часто не употребляешь в работе ну главное знаешь как гуглить и быстро понимаешь что это можно использовать про кусочек с со словарем начало было нормальное то есть

    00:45:20 - 00:46:54

  • единственный момент что ключами словаря хешируемые элементы должны быть это строго То есть неизменяемое это другое шируемое они в общем Почитай разницу между каширом не изменяем Не вполне корректный ответ сильно как бы погода не портит но если говорить про точность значит это вот так по поводу функции которая Мы проверяли на хэшируемость честно говоря здесь уже начались некоторые тормоза не знаю чем связано вот как бы здесь можно было вопрос сразу задать что возвращает собственно проверка перед тем как писать эту функцию имеет

    00:46:11 - 00:47:50

  • смысл когда-то Вот и впишешь все-таки подумать про эту штуку Если ты не вполне уверен что она возвращает тоже наизусть это помнить Но не все это помнят это тоже нормально Вот всегда можно спросить что вообще она должна возвращать себе по логике языка что она должна сделать если бы ты такую функцию писал что получилось то есть она как вот эта проверка то есть возвращает Хеш если нет хеша что она должна защитить но нелогично то есть логика языка она должна быть где-то внутри Если бы ты просто это рассуждение перед тем как

    00:47:03 - 00:48:26

  • писать сказал а потом уже сказал наверное Не сработает поэтому Давайте попробуем сразу обернуть в и чтобы у нас все заработал было бы Эта история сильнее значительна сам понимаешь не сказать что это прям страшно в общем-то как бы но [музыка] на Стажеры это нормально для Джуна я бы сказал что хотелось бы уже видеть понимание немножко более глубокое о задачки со словарем Задачка сложная на самом деле Вот это метловая Задачка неджа новая но тем не менее Да Задачка она не решена по факту Вот и более простой вариант

    00:47:45 - 00:49:26

  • задачки получить ключ по значению как-то Я ответа тоже вроде не услышал С чем это связано Мне сложно сказать есть у меня стойкое ощущение что у тебя есть проседание решения алгоритмов и кажется эту историю имеет смысл некоторым вроде подтянуть Потому что если у тебя придет алгоритмическая Задачка алгоритмическая секция даже вот такого но это такая чуть-чуть выше легкой Задачка То есть если декомпозировать как бы ты эту штуку не пройдешь это будет обидно поэтому порешай немножечко вот эти все истории

    00:48:35 - 00:50:03

  • они их не так много там алгоритмов которые которые имеют смысла знать Так что я бы сказал что нет но с меткой что это не режектор а это в том что как бы пока не хватило походам и этого человека можно через полгода еще раз посмотреть в целом база есть определенная но на данный момент я бы не сделал вот как-то так вот Надеюсь что Расстраивает Ну что на сегодня наверное это все спасибо что смотрели ставьте лайки и прочее прочее а ты не уходи у тебя будет отдельное закрытый по нашей традиции сейчас закончили

    00:49:22 - 00:51:13