Подготовка к собеседованию на Python Developer
Менторы
Специалисты своей области, которые смогут помочь вам
Middle .Net Developer
Senior Product Manager
Middle Python Developer
Ведущий программист
Backend Software Engineer (PHP)
Senior .NET/C# developer
Middle DevOps Engineer | Tbilisi, Georgia
Middle C# .NET
Senior PHP-разработчик
Middle python developer
Каналы
Полезные Telegram каналы и чаты
Транскрипция видео:
Привет Привет Да да все прекрасно В общем Добро пожаловать на Python собеседование Давай начнем сразу потому что чуть не времени мало Расскажи пожалуйста о себе о своем опыте что учил если есть фриланс там например курсы хорошо На данный момент я сейчас учусь 4 курсе Универа и как начался мой путь после же поступления в году 2020 я начал интересоваться всякими разными технологиями и на тот момент я уже базу знал и потом мне захотелось собирать приложение на тот момент Как мне казалось она как-то проще языку
00:00:02 - 00:01:42
[музыка] все дела потом какое-то время я шел курсы и после них уже получается нашел первый заказ на фрилансе Это был значит сайт и коммерс там обычный магазин игрушек категориями все дела потом Спустя время я поработал над еще каким-то фриланс проектом тоже было больше не под и коммерса под [музыка] менеджмент менеджмент по-моему каких-то судов кораблейскими делами и после этого я уже нашел практику на которой потом я качался до Джуна работал я там с мая по ноябрь пришлось остановить за несовместимости дело в том числе не смог
00:01:05 - 00:02:44
там платить у меня полегче с этим как-то так Может я сам себя так слышу Нет уже пропала работает хорошо хорошо Давай начнем спать [музыка] Давай обсудим генераторы чем они отличаются хорошо начну с итератора это как бы более такой широкий термин для обычной литераторы то есть что у нас это по сути класс для Объект который реализует методы Интер и next и по нему поможем или форму а генератор Это обычно который создается с помощью функции с использованием ключевого слова но еще генератор компрессия
00:01:57 - 00:03:36
Немного более специфичный корутина корутина это функции Это не функция Объект который мы создаем по сути дают нам возможность асинхронно запускать рутины какой-то одной функции дать его каком-то другом пока другая функция обычно делается чтобы конструкция [музыка] [музыка] а значит точно не могу сказать но вот что я помню ранних версиях пайтона с помощью генераторов сделали себе картины с помощью но позже уже был ведется синтаксический сахар с этим ну ты чуть-чуть отходишь время то что она может себя принимать значение
00:03:03 - 00:04:37
вот братья внутри себя елд да находится с другой стороны если там равно будет с другой стороны То есть если тебя будет какая-то переменная обозначена у тебя там с другой стороны [музыка] Давай пойдем дальше мы знаем есть такая конструкция поэтому что для него может быть ключом ключом по сути Любой объект который можно хешировать примитивная типа не изменяем флот string некоторые свои классов которых мы реализуем для [музыка] определенных случаях если он им комментирует этот хэш тандермед И еще он должен быть
00:04:26 - 00:06:00
Ну сделать ли классы и мутабельным от того что например находится атрибут какой-то атрибут например артикул в котором будет список название статьи если не будет какой-либо список атрибутов сделать его табельным или не сделал по сути Нет его уже можно мутить если получить доступ к этому не дает такую полноценную капсуляцию Хорошо давай не будем копать эту тему пойдем дальше у нас есть например какая-то последовательность допустим лист Да как бы ты сделал его сделал все значения этого листа уникальными
00:05:33 - 00:07:04
уникальными можно это сделать хорошее решение как бы ты взял бы такой же лист и добавил бы этот же лист к этому листу еще раз вопрос пожалуйста берешь этот же лист и конкретно и тише его к этому же листу ты это сделал Значит тоже У нас есть несколько моментов первый это кулинарный оператор плюс равно второй это экстент он то есть не возвращает ничего модифицирует который на котором вызывается еще можно сделать так типа открыть с квадратными скобками туда же это звездочкой [музыка] Давай поговорим про
00:06:25 - 00:08:08
такой метод Items Что произойдет если я его воспользуюсь им на каком-либо диккшиноре iTunes он значит возвращает нам список таплов в котором которые хранятся значит пара ключе значения система пишем форму и там айтом который мы также можем распаковать на 2 и таким образом Это что-то вроде супер Давай Прошли мы функции Давай только последние три Я думаю это не функция возможно класса под капотом просто с маленькой буквы начинается Не факт что-то мне подсказывает что там есть нет на самом деле уже сказали
00:07:33 - 00:09:08
очень сильно дружат а это Map фильтр reduce эти Пойдемте по порядку он нам возвращает значит объект Maps который то есть сам по себе является генератором что он делает он Принимает два аргумента первый это колобал То есть это может быть функция и лямбда и второй это список и он в общем нам возвращает новый генератор в котором все значения списка мутированы Согласно этой функции которая в него передается первым аргументом фильтр это чтобы у нас сортировать лист по сравнению ничего не мутирует Он
00:08:37 - 00:09:59
всего лишь добавляется генератор те значения для которых эта функция возвращает это чтобы пройтись по списку и аккумулировать все его значение Согласно какой-то функции она еще Кстати может принимать опционально 3 аргумент это будет первый элемент того листа супер супер закончили короче с этими функциями я вот хочу отметить ребятам джуниором который учит теорию вот важно знать скажем так не генераторы не там драйкис вот как раз таки Вот например то же самое стенды Потому что некоторые люди хорошо рассказывают теорию Они
00:09:24 - 00:10:42
понимают как списки между собой вообще с ними взаимодействовать Вот супер Давай тогда двинемся к более такой штуке вот мро Может ли про него рассказать и поэтому такие факты знаешь то есть больше отсылка Поэтому два поэтому два - это три как поменял семь ро И вообще всё это дело раскрыть сразу скажу немного но я в целом в курсе что он делает внутри это в общем такая штука чтобы находить [музыка] следует от C и B эти C и B наследуются А и вся если имплементирует один метод какой-то мро как раз позволяет нам выбрать самый
00:10:11 - 00:11:40
скажем актуальный для него там Понятно В общем лист классов которые Как сказать этот ключевой класс наследуется самый последний там всегда бывает [музыка] родительский класс всего строится Давай функции Вернемся Забыл спросить тебя я пытаюсь разнообразить сравнить с предыдущими собеседованиями чем разница между копией то есть Ну просто копии обычная копия сделать что создать такой же идентичный класс значение она просто возьмет скопирует по ссылке для этого класса по всем его атрибутом и для них тоже
00:11:04 - 00:12:36
и соответственно он более дорогой в плане времени да да в принципе более дорогой Окей давай тогда сейчас последний вопрос по поэту на какой-то возьмем и закроем тему и перейдем на Джанго фреймбург Я считаю что там Junior и так далее level он прям вероятно нужный вот знаешь чем отличается потоки от процессов Да могу сказать Значит потоки они ограничены дживом вообще начать уровня операционная система то процесс это что-то более глобальное То есть у каждого процесса есть свои потоки и каждый процесс это как отдельная
00:12:11 - 00:13:23
программа внутри операционной системы потоки уже принадлежат самим процессом в чем же их разница конкретно есть такая штука он не позволяет одним и тем же потоком получать доступ интерпретатор потому что там как бы каждый просто это отдельная программа потоки работают [музыка] всё Абсолютно верно можешь еще добавить если хочешь принципе где можно бесконечно раскрывать да Про это можно много говорить но еще хотел отметить джил надумал это нужно чтобы циклические ссылки там жил блокировал да Да действительно так оно есть давай
00:12:49 - 00:14:18
перейдем к джан У нас сегодня особенный модуль джанга он у нас практически вот по большей части я буду спрашивать вопросы сделал свой магазин Это был Джанго Оскар или просто ты писала там с продуктами и так далее первый магазин который я сделал Хорошо тогда давай представим такую ситуацию я тебе дам несколько моделей Вот и просто буду предлагать кейсы а то будешь рассказывать как бы ты их реализовал Вот у тебя есть статья артикул Да и принципе у тебя есть ID этой article вот у тебя есть URL у тебя период спайтам айди каким-то
00:13:47 - 00:15:17
же и вкидывает его в твою какую-то девушку и ты на выходе возвращаешь темплейт как раз таки со всей этой статье Задача Первое это Какая бы у тебя была модель пройдемся Какие Поляны должны быть что нам вообще нужно для неё и ДТИ если это не убивайте какой-нибудь потом [музыка] а потом что же еще еще я бы Вот поэкспериментировал поставил бы индексы если у нас был title там Но кстати еще забыл сказать возможно имеет смысл добавить полис лак чтобы это красиво выглядело действительно вот еще пару полей забыл которые стоило все-таки
00:14:43 - 00:16:10
добавить Значит так что же я сказал может быть и еще клей тут Да просто все поля которые [музыка] давай как раз таки к этой теме ты сказал за монет знаешь Кстати мы не тумане работает под капотом именно на уровне рынки именно на уровне Что происходит вообще создать монету майнить к одному другой форме другому который соединяется они вместе должны быть уникальными да Давай двигаться дальше модель у нас есть принципе какие-то методы там у нас есть например там можно еще для админки сделать чтобы все красиво было Ну допустим мы не
00:15:52 - 00:17:28
идем Какую бы ты использовал для этого View я вот последнее время предпочитаю класс Почему если у нас вот скажем так несколько преимуществ мы можем разделять логику на какие-то миксеры или же использовать готовые очень мясо занимают Функции там будет если писать наследование доминирующих но и функции тоже доступны Ну давай тогда определимся что это будет все-таки у тебя есть там ряд всяких дженериков которые ты можешь использовать для нашей окей о чем майонез со страницы листа до листвию потому что там начнется вся эта
00:17:06 - 00:18:41
навигация значит там мы напишем лист View напишем еще 5 какой-нибудь Ну кстати вот я сейчас точно не уверен динамическим атрибутом чтобы его можно было передавать чтобы можно было сделать из которого непосредственно сам Джанго будет искать то есть эти артиклы листать их можно кстати например сделать такую фичу чтобы там было там были только те артиклы которые мы Например считаем подобными чтобы все туда не попадалось потом я бы еще есть пойти так будет там значит detail detail уже читать тоже помимо темплейта
00:18:18 - 00:19:54
При желании какие-нибудь контактные данные которые будут еще не поговорил про клей апдейт Да тоже в идеале нужно создать Возможно они будут со стороны Что у нас там будет вклеить мы можем передать форму джанскую требуется похожие истории мы прошли сейчас [музыка] логике потому что это очень просто если скажем так у нас Ну есть просто какая-то модель нет этой модели Да вот если у нас эта модель нету то что должно произойти то есть в базе данных не найден роули что не найдено просто нет такой записи мы пытаемся по Славу которого не
00:19:22 - 00:21:08
существует дойти до этой модели класс по идее поднимет 404 ошибку для него поскольку можно написать глобальный какой-то темплей остается 4 тоже можно дать кастомную страницу поэтому у нас добавится бульон филд артист то есть архивирована И если стать архивирована то ты как бы должен сказать что она заархивирована как будто это обработал и где Окей здесь вот очень напрашиваются менеджеры можно аккуратно написать менеджер с методом например актив Only например будет делать что он возвращает этот ритуал точка поскольку я помню
00:20:29 - 00:22:26
фильтр там напишем актив фильтруешь менеджером и ты хочешь получить убрать скажем так архивированные Если ты их уберешь что-то не сможет человеку что это Потому что при поиске пресеты у тебя не будет тебя просто 404 существует тогда то есть Нам нужно конкретно выдать сообщение что это работает а Ну в таком случае не получится использовать Но тогда уже придется модифицировать один из методов detail Да значит там мы что делаем мы после того как уже у нас находится значит это называется метод не знаю как она
00:21:41 - 00:23:14
называется мы можем мы возвращаем кастомную ошибку и туда Передаем сообщение что данная статья кстати интересный вопрос по сути тут напрашивается 43 потому что статья существует Но прочитать не дает приложение потому что тогда принципе с этой практической задачи все давай еще поговорим про Дженга два метода slack что происходит когда мы их используем что он нам дает по сути это очень такой хороший метод для оптимизации запросов его Суть в том что если у нас есть модель у которой есть парень кита вернее relation с
00:22:35 - 00:24:10
каким-нибудь другим Table И если мы передадим его в темплей без селекторы обратимся к этой связи то у нас что произойдет 2 или более запроса на базу зависимость от того сколько раз мы будем обращаться это очень может сильно снизить производительность приложения но такая штука помогает со стороны и вместе с этим возвращает еще его это работает вместе оригинальным запросом еще делать Окей давай тогда пойдем дальше поджанго Точнее по Джанг горы смотри морковку Да что такое там сериал лазер серия лазер это если вот очень грубо на
00:23:46 - 00:25:29
джанговском языке сказать это форма для респонцев и рекордов которые мы отправляем получаем зачастую там валидируется джейсоны самые валидируем что и те же слова которые присылает в качестве тела запроса и сон который мы отправляли компьютер в качестве тела там мы сможем сразу несколько вещей делать мы пишем представление разных полейшником мы можем Туда писать какой-то свой сериал лазер который для того чтобы [музыка] Окей ну по сути да это принципе репрезентация для того В каком-то смысле вот
00:25:01 - 00:26:26
принципе ничего другого парня не сказать просто в dto это принципе трансферных а серия лазер это больше еще про валидацию вот Хотя из поединком это тоже все позиционирует как штука в которой ты еще можешь делать кучу всякой разной логики и она там делается Чем проще чем это на поединке Давай тогда перейдем необычный блог сначала спрошу Готов ли ты к нему вообще работали с тестирование когда-либо я работал там какие-то тесты интеграционный для каких-то отдельные компании зачастую это действие работают джамкой
00:26:05 - 00:27:22
там тесты которые тестируют эти девушки через клиентов мог Зачем вообще используется делать Окей мог это значит для того чтобы как бы вот например у нас вызов какого-то request внутри функции Да но мы не хотим чтобы во время тестирования это дело мы с помощью мог представляем ему как бы свой заходненный какой-то чтобы эта функция не тратила время на отправку запроса иначе говоря когда мы меняем разные компоненты коды ничего не меняя самом Ну допустим делаем какой-то квест до чем еще может быть полезным мог
00:26:43 - 00:28:15
чтобы например скажем у нас программа вызывает мы можем всегда чтобы предугадывать числа которые же например могнуть действующее время чтобы он мог все это правильно проанализировать какой-то метод Например у нас есть какой-то сервис создали это просто класс и мы один из методов которые как бы мы поняли что действительно год вызывает Это определенный метод в этом определенным сервисе и он вызывает два раза а то есть нам нужно понять Вызывает ли наш тест этот метод или нет затрагивает ли его или нет да потому что есть такие кейсы
00:27:38 - 00:29:21
что мы косвенно Тестируем что-либо и нам например важно что вот там каким-то именно был вызван этот метод какой-то определенной количество раз вот и да Это можно сказать какое-то того что произошло какой-то плане теста насчет количество раз не уверен я думаю речь идет про ковры нет это просто покрытие тестами здесь речь идет именно промок и про методы которые он имеет я сейчас даже говорю достаточно обширные все используют они все кто то смог методы которые есть у мокро Я скорее хочу сейчас название этих методов вообще
00:28:34 - 00:29:56
работал с ними работал Окей звука я зачастую использовал Patcher это понятно Вот насчет этого я не особо уверен про что идет речь разве что единственное что я думаю можно сделать То есть муки должность какая-то функция которая типа вызывает ту же функцию но имеет свой каунтеры считает насколько она там называлась Что такое по идее Да ну там на самом деле все проще если ты замокл какую-то функцию каком-то сервисе то это функции является моком и когда кто-то либо делает к ней какой-то request он принципе делает так мог и мог есть такое
00:29:20 - 00:30:45
например то есть ты вызываешь метод и Подтверждаю что например вот один раз мог был там вызван вот то есть такая простая логика то есть мог Если можешь посмотреть куча там разных методов есть которые тебе вот этим помогает решать Окей принципе я не думаю что имеет смысл переходить к базам данным вопросом потому что я это уже сделал миллион раз собеседованиях я вижу что ты Судя по тому как ты понимаешь таблицы индексы и так далее в этом разбираешься на необходимом уровне Вот давай тогда завершим принципе
00:30:01 - 00:31:26
все таки интересным вопросом Какая синтетическая оценка сложности вот и все оценка сложности что это такое зачем она нужна что она может дать оценки сложности функций время которое занимает это время в целом и это даже не время а именно скорее именно в таком ключе не только время А еще и память вот а да точно есть же еще Space Complex насчет времени она то есть у нас показывает как наша функция работает Если мы имеем в виду есть разные временные сложности логарифмическая Линейная линейно логарифмическая экспонентная То
00:30:48 - 00:32:35
есть если мы там делаем два пор лупа это у нас [музыка] просто перебирать логарифмический Да просто мне интересно Понимаешь ли ты как это работает и все достаточно давай туда в части с фидбэком вот у нас сегодня максимально короткий Интервью это оптимизация формата я пытаюсь спрашивать новые вопросы вот в целом Ты очень хорошо справился не понравилось что ты понимаешь как работают базовые методы то есть и номер рейтима придется фильтр это то с чем можно встретиться это очень можно обойти там использование каких-то
00:31:59 - 00:33:15
вложенных списков до входе То есть это именно те методы которые улучшают твой код Ты знаешь как они работают Это очень хорошо понимаю в принципе про потоки процессы понимаешь полную разницу это тот самый хайлами вопрос который часто задают интервью это супер касательно У тебя есть реальный опыт с дженг Вот это очень важно то есть я понимаю что практически твой опыт ты можешь скажем так статус определить это как бы уже такие знаешь практически девелопные навыки Вот то есть тоже круто вот минус конечно по тестированию
00:32:43 - 00:34:02
Тестируем потестированию Вот потому что поскольку поскольку Дженга когда-нибудь закончится когда-нибудь у тебя уже будет проект Ну в компании Да с командой и тестирование это вопросы которые спрашивают и ты должен уметь написать не просто знаешь там какой-то заюзанный там Джанг от кейс какой-то делать да именно понимать как работает текстуру делать свои текстуры Да еще есть такой такая штука называется миксер вот набирать популярность понимать как она работает вот то есть уметь скажем так разбираться в тестах
00:33:22 - 00:34:33
разбираться там интеграции интеграции что нужно могут что не нужно мокать вот и чтобы стоит тестировать Вот это тебе советовал на это сделать уклон потому что Ну поджанка я понимаю что ты когда-нибудь эту тему уже добьёшь до конца там развиваешь там максимум А вот тесты начинать другие формы не проходили но я пока не вижу смысла скажем так вот такой как я понял наши собеседование кстати был проект который я хотел показать значит в чем дело это я значит писал на фастафе его я так сейчас я его запущу
00:33:58 - 00:35:25
ры есть различные тесты как раз все это сейчас продемонстрирую для патина это по-моему уже нужно переходить [музыка] докер тоже есть отчеты не поднимаешь а пишешь став пузырьские сервиса не знаю это на самом деле займет время Ну вот на самом деле докер должен дать тебе одну команду которая уже ты поднял сервер понимаешь Вот как раз таки должен полностью поднимать свою приложу локально в зависимости от конфига вот [музыка] как я понимаю какая-то ошибка так минуточку сделаю это само приложение [музыка]
00:34:54 - 00:36:29
[музыка] [музыка] это у нас есть получается Здесь поиск друзья добавлять современное время можно претендовать на метла позицию Мне кажется вполне спокойно потому что это очень ценится как минимум тут Если ты можешь такое написать и там реально оно валидно работает вот то мне кажется это очень ценный [музыка] Спасибо я еще кстати могу скинуть ну ребятам будет если он тебя открытым доступе то я могу просто ссылку под видео закинуть чтобы люди посмотрели как референс паблик подымалась кинуть ссылку чтобы потеряется
00:37:34 - 00:39:07
принципе все это наш собеседование раз 45 минут слышал Я тебе желаю Желаю эту тему развивать чтобы вот составе проекта проект хорошего пока спасибо
00:39:17 - 00:39:47