Python собеседования
Python собеседования
  • 13
  • 140 546
Собеседование на позицию Senior Python Developer 5000$ #12
00:00 - асинхронность
04:48 - redis
07:44 - celery
11:34 - load testing
13:05 - шардирование
15:25 - репликация
16:50 - оптимизация долгих запросов
19:32 - миграция больших данных
#собеседование #backend #python #асинхронность #async #redis #celery #loadtesting #шардирование #репликация #оптимизация #миграция #senior #сеньор #интервью #программирование #sql #review #dataMigration #optimisation
Переглядів: 2 844

Відео

Подборка практических задач с собеседований #1
Переглядів 2,8 тис.Рік тому
Небольшая подборка лайф-коддинга с различных собеседований на позиции middle/senior python developer. 00:00 - throttling декоратор 32:57 - retry декоратор 42:56 - сжатие строк 51:40 - multiarg декоратор
Собеседование на позицию Senior Python Developer 4000-5000$ #11
Переглядів 11 тис.Рік тому
00:00 - как сделать select из 2 таблиц одним запросом 01:31 - как работает индекс в БД 02:36 - как найти медленный запрос 04:00 - что такое транзакция 04:51 - блокировки в БД 08:50 - как посмотреть список процессов 09:43 - что такое pid 10:58 - разница между процессом и потоком 12:04 - как посмотреть кол-во свободной оперативки 14:20 - что такое docker 15:40 - что такое docker-compose 16:35 - к...
Собеседование на позицию Senior Python Developer 350т.р. #10
Переглядів 15 тис.Рік тому
00:00 - первая задача по python 01:05 - вторая задача по python 02:31 - третья задача по python 05:00 - что такое асинхронность 07:02 - что такое django middleware 08:21 - запрос на sql 10:08 - отличие реляционной базы от нереляционной 12:43 - минусы использования индексов 13:16 - задача на архитектуру #собеседование #backend #python #senior #сеньор #интервью #программирование #sql
Собеседование на позицию Senior Python Developer 4000$ #9
Переглядів 15 тис.2 роки тому
[Python] 00:00 - какие бывают типы данных 00:53 - как устроен список [Задачи] 04:22 - как можно развернуть список 06:12 - как пересечь 2 массива [Python] 07:25 - лямбда-функции 09:20 - замыкания 11:15 - менеджеры контекста 15:00 - исключения 17:23 - ООП 20:45 - MRO2 vs MRO3 23:15 - mixins 24:17 - абстрактный класс 27:22 - полиморфизм 28:27 - мета-классы 29:57 - функциональное программирование v...
Собеседование на позицию Backend Developer Python Middle #8
Переглядів 8 тис.2 роки тому
По результатам собеседования был получен оффер в размере 140 т.р. Тайминги [Общие вопросы] 00:00 - что такое HTTP протокол 01:07 - отличия GET от POST запроса [Python] 01:40 - типы данных 03:20 - ООП в питоне 05:20 - наследование 06:13 - абстракция 06:52 - полиморфизм 07:33 - как создать контекстный менеджер 08:17 - магические методы [Django] 09:20 - django middleware 10:49 - наследование модел...
Собеседование на позицию Backend Developer Python Middle #7
Переглядів 19 тис.2 роки тому
Python 00:00 - принципы ООП 01:56 - миксины 02:19 - виды сокрытия 02:46 - магические методы 04:17 - PEP8 04:46 - асинхронность GIL 12:39 - датаклассы namedtuple 14:34 - MRO 15:30 - stderr 16:36 - slots 17:19 - декораторы classmethod и staticmethod 18:41 - моржовый оператор 20:09 - метаклассы 22:45 - asyncio Django 24:32 - IntegerChoices для чего используется 25:35 - insert/update (как джанга оп...
Практические задачи с собеседования Backend Developer Python Middle #6
Переглядів 5 тис.2 роки тому
Шестой выпуск из серии собеседований на позицию middle python разработчика. Снова собеседование, состоящее из практических задач. 00:00 задача на условия 08:44 задача про отрезки 29:14 код ревью #собеседование #backend #python #middle #мидл #программирование #лайфкодинг #практическиезадачи
Собеседование на позицию Backend Developer Python Middle #5
Переглядів 5 тис.2 роки тому
00:00 - Уровни изоляции транзакций 03:06 - asyncio 04:44 - GIL 06:17 - WebSocket 11:16 - Разработка веб-сервера 19:30 - System Design (переход от монолита к микросервисам) Полезные ссылки по вопросам, которые были на собеседовании: 1. Уровни изоляции транзакций postres - postgrespro.ru/docs/postgrespro/9.5/transaction-iso 2. asyncio - habr.com/ru/post/337420/ 3. GIL - tproger.ru/translations/gl...
Практические задачи с собеседования Backend Developer Python Middle #4
Переглядів 7 тис.2 роки тому
Четвертый выпуск из серии собеседований на позицию middle python разработчика. В этот раз собеседование состояло из практических задач и лайф кодинга. 00:00 задача по sql 10:45 копирование списков 11:26 лямбда-функция 13:27 mro3 14:44 преобразование многомерного массива в одномерный 18:58 проверка анаграмм #собеседование #backend #python #middle #мидл #программирование #лайфкодинг #практические...
Собеседование на позицию Backend Developer Python + FastAPI Middle #3
Переглядів 11 тис.2 роки тому
Третий выпуск из серии собеседований на позицию middle python разработчика. В этот раз в компании на бэкенде используется FastAPI. Также было немного лайф-кодинга. Python 00:00 инкапсуляция 01:37 модули и пакеты 02:12 наследование 03:35 приватность в питоне 05:10 магические методы 06:40 исключения 09:30 comprehensions 10:10 рекурсия vs итерирование 12:19 декораторы практическая реализация 14:42...
Собеседование на позицию Backend Developer Python + Django Middle #2
Переглядів 12 тис.2 роки тому
Второй выпуск собеседования на позицию middle python разработчика. Общие вопросы 00:00 логи 00:48 отличия git merge от git rebase Python 01:11 отличия is от 01:27 lambda функции 02:03 генераторы и итераторы 04:16 контекстный менеджер 05:03 множественное наследование 06:10 hash map 08:36 метаклассы 10:53 многопроцессорность, многопоточность, асинхронность 13:31 SOLID 15:17 сложности алгоритмов 1...
Собеседование на позицию Backend Developer Python + Django Middle #1
Переглядів 25 тис.2 роки тому
Пример собеседования на позицию middle python разработчика. Python 00:00 отличия new от init 01:33 слоты 02:30 метаклассы 04:20 SOLID Django 13:00 наследование моделей 15:00 где лучше расположить логику (модели vs сериализаторы) 18:30 где лучше расположить логику (модели vs менеджеры) 20:30 django middleware 21:25 drf permissions Общие вопросы 24:52 REST API 28:09 индексы в postgres 29:40 celer...

КОМЕНТАРІ

  • @cfhel1
    @cfhel1 День тому

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

  • @user-yc7rq8iu1g
    @user-yc7rq8iu1g 2 дні тому

    54:25 - о чем он спросил? Неразборчиво продиктовано

  • @user-he4st2ro5h
    @user-he4st2ro5h 3 дні тому

    Я бы за такой собес попросил зп не менее 500к

  • @umni_kot
    @umni_kot 5 днів тому

    3 собес: интервьюер приебался что получение элемента по индексу долго работает хотя это константа и это быстро. Не факт что перезапись переменной для хранения предыдущего значения будет быстрее чем за константу. Надо было спросить у него че замеры есть? Что за идиоты собесят аж тошнит от таких. Да и в принципе вторая задача в 3 собесе была идиотская))

  • @Rulezzz3
    @Rulezzz3 7 днів тому

    - вы занимались фронтендом? - нет - но давайте представим, что вы фронтендер 😂

  • @whitelightcoding1847
    @whitelightcoding1847 7 днів тому

    Спасибо большое автор!! Продолжая в том же духе❤

  • @NOVOSTYTYAN-wq8ev
    @NOVOSTYTYAN-wq8ev 8 днів тому

    Какое же бессмысленное собеседование, жуть. Переплюнуть этот бред можно только лайвкодингом.

  • @user-co9rc1kp7p
    @user-co9rc1kp7p 9 днів тому

    - Зачем состриг? - Базар гастрит

  • @leeroyjenkns5182
    @leeroyjenkns5182 14 днів тому

    Кто тоже смотрит собесы на сеньора, чтобы в 2024 пройти на джуна? 🙋‍♂

  • @user-nu3ot7td1j
    @user-nu3ot7td1j 16 днів тому

    собеседующего понять можно. Ему деньги платят, сиди и задавай вопросы. Потом тебе за это время заплатят. Но лично мое мнение, что так глубоко спрашивать не надо. Лучше наверно понять какой у человека тип мышления, сможет ли он разобраться в чем-то, если срочно нужно. А тут да, как на экзамен пришел и тебе вместо 3 вопросов попался билет, где все 150. В любом случае, ты приходя в компанию, в первый день не будешь лезть на прод и что-то менять. Недельку тебе дадут осмотреться и если с чем-то не знаком, как раз будет время ознакомиться

  • @issm5170
    @issm5170 18 днів тому

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

  • @ruslankirzhanov510
    @ruslankirzhanov510 26 днів тому

    Этот канал заслуживает большего) Нажмите там на кнопки под видео

  • @bgs12
    @bgs12 Місяць тому

    Набрел на канал. Супер полезный. Спасибо!

  • @molochnikzero
    @molochnikzero Місяць тому

    На счёт poetry не соглашусь - pip сейчас сам хорошо справляется с выбором нужной версии библиотеки. Основная и главная фишка poetry, pipenv, pdm и прочих подобных пакетных меннаджеров - это избегание ситуации, когда какой-нибудь малолетний дебил в твою зависимость версии берёт и форспушит. lock-file - это то, ради чего стоит использовать эти штуки. И по этому, когда в какой-то момент на проде у тебя не собирается пакет из-за проблем с зависимостями - не поленись и посмотри что там отъебнуло, вместо удаления и создания заново локфайла, анон!

  • @user-zt2ob3le7e
    @user-zt2ob3le7e Місяць тому

    Со всем уважением, но как по мне, так все заданные вопросы должен знать мидл. С сеньором стоит разговаривать на более фундаментальные темы или про интересные фишки.

  • @user-vt7wu4rv4o
    @user-vt7wu4rv4o Місяць тому

    Во ты наваливаешь, я аж со стула каждый раз падаю XD

  • @Vasilii_Furi
    @Vasilii_Furi Місяць тому

    4:40 Пустой словарь как bool, будет как True или False ? Ответ False И интервьюер говорит такой: НЕПРАВИЛЬНО. Мой ахуй в ахуе.

  • @DoctorSmail
    @DoctorSmail Місяць тому

    Кролик это Rabbit Mq?

  • @nicsolov9821
    @nicsolov9821 Місяць тому

    Новый видосик, круто! Как вы там поживаете?

    • @python_interview
      @python_interview Місяць тому

      Да все хорошо вроде) Работа работается и ладно

  • @user-lg8dj8lw8f
    @user-lg8dj8lw8f Місяць тому

    Прикольно. Вопросы не сложные, но то, как уверено ты говоришь наверняка является большим плюсом, чем знание

  • @user-rp6cz7gf8d
    @user-rp6cz7gf8d Місяць тому

    Автор красава. Судя по интонации интервьюров - токсичный климат в комманде. Не особо хочется им этим всем заниматься и новых людей в комманду набирать. Ну раз уж начальство из-под палки заставило то что поделать....

  • @user-cx8kh4sb2i
    @user-cx8kh4sb2i Місяць тому

    ребят, если это на $5000 то это просто смех ебаный)

  • @tumysov
    @tumysov Місяць тому

    Годный контент! Спасибо!

  • @user-xn2hb5qk9m
    @user-xn2hb5qk9m Місяць тому

    На субтитры лучше не опираться: селери - сцена, воркеры - бургеры =D А так спасибо, интересно!

    • @tumysov
      @tumysov Місяць тому

      Да, должно быть yield вместо elt в самом начале и т.д. :)

  • @user-uo7ko7ej9x
    @user-uo7ko7ej9x 2 місяці тому

    Уже на сеньора) какая была обратная связь от компании? Вроде отлично на все ответил

    • @python_interview
      @python_interview 2 місяці тому

      Абстрактная с "не готовы пригласить вас дальше"

  • @user-xg8qt8ky1s
    @user-xg8qt8ky1s 2 місяці тому

    Ну взяли тебя или как?

    • @python_interview
      @python_interview 2 місяці тому

      нет)

    • @user-xg8qt8ky1s
      @user-xg8qt8ky1s Місяць тому

      @@python_interview Я бы тебя тоже не взял. Похоже что там какая то унылая компания, так что для тебя это даже к лучшему.

    • @dot.4069
      @dot.4069 11 днів тому

      @@user-xg8qt8ky1s почему не взял бы?

    • @user-xg8qt8ky1s
      @user-xg8qt8ky1s 10 днів тому

      @@dot.4069 Он SQL не знает.

  • @user-ei5ge3qk5u
    @user-ei5ge3qk5u 2 місяці тому

    Ура

  • @nnnlik
    @nnnlik 2 місяці тому

    вопросы ни о чем, ответы тем более

  • @VintHeXer
    @VintHeXer 2 місяці тому

    Я уже кидал год назад задачку от Сбера, привожу один из ответов, который на данный момент не был описан. "# Задача: найти 1 уникальное значение, дубликатов всегда по 2: values = [1, 1, 2, 2, 3, 3, 4, 5, 5, 6, 6]" Как многие догадались, можно и через dict, counter, дополнительные структурки для временного хранения (в тот же список добавлять элемент, если его в списке нет, убирать если есть), и всё идёт к вопросу алгоритмической сложности. Сам виноват с условием, что не указал про элементы - исключительно цифры (со строками не сработает) Один из ответов - использовать xor (^, крышечку): values = [1, 1, 2, 2, 3, 3, 4, 5, 5, 6, 6] def find_unique(values: list) -> int: result = 0 for elem in values: result = result ^ elem return result print(find_unique(values)) Прикол данного решения заключается в том, что написав такой ответ можно показать себя "шибко умным" в контексте собеса на определённую должность, и из-за этого не пройти, т.к. написанный вами код должен понимать другой разработчик, а не все вспомнят про XOR. Так что необходимо будет хотя бы обозначить этот момент при прохождении интервью

  • @user-dh5ip3uu8k
    @user-dh5ip3uu8k 2 місяці тому

    офер дали в итоге?

  • @yakolast6164
    @yakolast6164 3 місяці тому

    почему так плохо слышно отвечающего то:(печаль

  • @user-ez1ni2jj6t
    @user-ez1ni2jj6t 3 місяці тому

    Мамкины собеседователи

  • @rawanqurmet3795
    @rawanqurmet3795 4 місяці тому

    это мок-интервью или настоящее? ощущение будто друг другу не особо рады)

    • @python_interview
      @python_interview 4 місяці тому

      Настоящее)

    • @rawanqurmet3795
      @rawanqurmet3795 3 місяці тому

      @@python_interview если нужны такие интервью, можем слелать колл, думаю ответы будут хорошего качества. Посмотрим докуда можно планку повысить. Я senior, пишу 15+ лет

    • @rawanqurmet3795
      @rawanqurmet3795 3 місяці тому

      @@python_interview гоу к вам приду на собес, чисто для контента. обещаю качественные ответы, хочу посмотреть до каких рамок можно себя толкнуть. Senior Python Engineer, 15+ опыта

  • @nylinary
    @nylinary 4 місяці тому

    Мне всегда казалось что требования для мидла гораздо выше. Теперь не так страшно идти на собес..

  • @TheDelwish
    @TheDelwish 4 місяці тому

    не смотрел все, тыкнул случайно, на 1:01:00 . ну как сказать в чем проблема? видно, что спрашивающие сами несильно дотягивают до уровня сеньоров ибо в этой шаблонке куча проблем и намеренный мистайпинг, это малая часть этих проблем. там с ООП все очень плохо, зачем-то передается структура данных со свойствами, которая внутри размазывается на публичные поля (что создает потенциально сильную связность, если у вас прям логика завязана на эти данные ну так запихните их в класс, как это стандартно делается в питоне). класс Dog без особых на то причин нарушает интерфейс публичный Animal добавляя новое свойство , при этом нигде не описывается, что такое новое поведение добавлено, аля какое-нибуль breedable . Вершина ужаса это класс Коровы, которая вообще ничего не делает только добавляет публичные методы несовместимые с интерфейсом (базовым классом). т.е. написана ниочемная логика, а уже поломано поведение т.о. что придется на каждом участке программы писать кучу проверок, что за класс, и что он умеет. подобный код сразу в помойку. совет новичкам - когда пишете сразу думайте о двух вещах - как вы это тестировать будете (пускай даже гипотетически) и как вы этим пользоваться будете в разичных сценариях программы. данным кодом пользоваться нельзя, тут ООП (наследование) не помогает , а делает все только хуже, ибо написано криво

  • @user-zr4yq5mk1o
    @user-zr4yq5mk1o 4 місяці тому

    ааааа, выключите музыку!!!!

  • @trevizez
    @trevizez 4 місяці тому

    Приоткрыл балкон, все равно не помогло, душно) офер то дали?

    • @python_interview
      @python_interview 4 місяці тому

      Не помню уже) скорее всего нет

  • @yehoryehemberdinov635
    @yehoryehemberdinov635 4 місяці тому

    Сложилось впечатление что собеседующий сам плохо понимает celery и все что рядом с ним)

  • @codingjerk
    @codingjerk 4 місяці тому

    Обратная связь от меня, раз уж вам компания ничего не дала :) 2. 01:05 Плаваете в поведении стандартных методов, но имхо, это не то, что должно от зубов отскакивать 3. 02:31 Ошибки. Интервьювер рассказал про обе. 4. 05:00 Объяснение с фактическими ошибками, без указания на ключевые отличия разных моделей выполнения 6. 08:21 Второй запрос не заработает, если там просто айдишник на имя заменить 9. 13:16 Мне кажется интервьювер дал задачу не на архитектуру, а на общий проблем солвинг и хотел узнать как ты бы подошёл к решению, не уверен мне послышалось или нет, но вроде он упомянул SQL, возможно он хотел узнать, как бы ты подошёл к отладке и оптимизации запроса. В целом я думаю норм, я бы взял, но даю моменты для развития: - Пробежаться ещё раз по Лутцу, чтобы знать как работают условные extend / and и т.д. - Подтянуть asyncio, можно написать свой реактор на генераторах например, чтобы лучше разобраться во внутренностях и особенностях - Docker тоже хорошо было бы подтянуть - Не совсем уверен в текущем уровне, но рекомендовал бы поботать system design (или хотябы подтоговиться к system design интервью)

  • @Anshegar
    @Anshegar 4 місяці тому

    Я в начале непонял, разница между изменяемыми и неизменяемыми, он сказал что первые передаются по ссылке а вторые по значению(это как вообще)? А разве не все данные из памяти передаются по ссылке? З.Ы. Слушаю собес, думаю чет както сложноваты вопросы, я большую часть знаю но некоторые прям заставляют задуматься, тяжеловато для собеса на Джуна.. и тут я вижу что я оказывается на90% вопросов собеса Синьера знаю ответы XD

    • @kafychannel
      @kafychannel 4 місяці тому

      так вопросы в большинчтые одинаковы, отличие джуна от сеньора в глубине ответа либо заучивается, для cpu bound юзайте multiprocessing, а для io - asyncio/threading, либо рассказывается а почему, почему дороги контекст свичи в тредах и выгоднее запустить один тред , который будет из event loop таски для выполнения брать(механизм , что asyncio реализует) также для сеньора архитектурные вопросы задают, как задизайнить систему, а почему ты выбираешь эту бд, а не ту и тд

    • @Anshegar
      @Anshegar 4 місяці тому

      @@kafychannel а , ясно.

  • @qrthack3233
    @qrthack3233 5 місяців тому

    Привет, у меня такой вопрос, коммерческого опыта нет, знаю C, люблю Computer Science. Хочу в backend, выбираю между Python, Java, C#, Golang что посоветуете, чтобы легче было устроиться на работу, слышал, что Python-программистов уровня Junior слишком много и труднее будет устроиться?

    • @python_interview
      @python_interview 5 місяців тому

      Привет, я к сожалению не специалист в этой теме. Скорее всего да, много джунов на питоне, т.к. язык простой для входа в IT. Но лучше посмотреть статистику) Если есть знания, то я бы посоветовал смотреть в сторону GO. Он щас активно развивается, и будут открываться новые вакансии. Плюс он достаточно новый, а значит у всех небольшой опыт работы с ним, и меньше конкуренция)

    • @qrthack3233
      @qrthack3233 5 місяців тому

      @@python_interview спасибо большое за ответ

    • @dimarogov4687
      @dimarogov4687 Місяць тому

      судя по вопросм на собесе, можешь сразу идти на пайтон синьора

  • @user-no5hc7eo8t
    @user-no5hc7eo8t 5 місяців тому

    на 4 минуте подумал, что тут собеседование по 1С проходят)

  • @myacc2517
    @myacc2517 5 місяців тому

    На 3 собесах на джуна меня спрашивали то же самое

    • @calmius24
      @calmius24 4 місяці тому

      Люди просто ищут мидла на зп джуна

  • @quansumonner
    @quansumonner 5 місяців тому

    Извените, Я бы хотел узнать ваше мнение. Как вы относитесь к накрутки опыта в разработке? Если другие варианты? У меня сейчас 2 резюме и единственное, что в них различается, это количество опыта, но на одном 2 отлика (о опыта), а на другом 26 (1.6 опыта).

    • @python_interview
      @python_interview 5 місяців тому

      Зависит от ситуации. Если у тебя год опыта, но знаний на 3 года, то не будет ничего плохого, если ты эти 2 года накрутишь, чтобы пройти отбор в лице HR. Если ты знаешь больше своего опыта, то работодатель не расстроится) Другое дело, если знаний на 1 год, а пишешь, что опыт 5 лет. Тогда тут тебя раскроют на собеседовании, и получится, что зря потратил время интервьювера.

    • @quansumonner
      @quansumonner 5 місяців тому

      @@python_interview спасибо за ответ. Я не хочу накручивать более 2 лет, это не очень:) Я просто хочу сделать своё резюме, где 1.6 - основным и подаваться по нему. Не очень кайфово, когда проходишь интвью во 'фейку', а по реальному тупо не зовут. Как вы считаете это можно сделать?) Извените за обилие текса. Спасибо!

    • @python_interview
      @python_interview 5 місяців тому

      @@quansumonner отчаянные времена требуют отчаянных мер) не вижу в этом чего-то криминального, но и не мне судить

    • @quansumonner
      @quansumonner 5 місяців тому

      @@python_interview Cпасибо, мне действильно было это интересно, Последний вопрос, вы бы так сделали?

    • @python_interview
      @python_interview 5 місяців тому

      @@quansumonner ну я несколько месяцев прибавлял как-то к опыту, чтобы солиднее выглядело)

  • @aleksei_stereo
    @aleksei_stereo 5 місяців тому

    Зачем адекватному разработчику знать, что будет, если применить булевые операции к данным небулевых типов? Адекватный программист такой код сам не напишет, и другому такое запушить в продакшн не даст

  • @dasshrs
    @dasshrs 5 місяців тому

    Предлагаю такой подход к первой задаче (сделал более адванст версию) У нас есть фабрика, которая может сделать декоратор под разные лимиты. def limit_function_fabric(limit): def limit_function(func): times = [] def wrapper(): nonlocal times if len(times)>=limit: # Clear extra items (no need store more than limit) times = times[-limit:] if time.time()-times[-limit] < 1: print('Skip function') return func() times.append(time.time()) return wrapper return limit_function @limit_function_fabric(4) def func(): print('Executed') func() func() func() func() func() func() time.sleep(2) func() func() func() func()

    • @user-io2kp7jm6z
      @user-io2kp7jm6z 4 місяці тому

      def dec_f(func: Callable) -> Callable: count = 0 last_call = time.time() def inner_func(*args, **kwargs): nonlocal count nonlocal last_call if time.time() - last_call < 3 and count >= 3: print(f'Вызов функции пропущен, {func.__name__}') return func(*args, **kwargs) count = count + 1 if count < 3 else 1 last_call = time.time() return inner_func

  • @t0xicav3ng3r4
    @t0xicav3ng3r4 5 місяців тому

    Очень улыбнул момент, когда после вопроса о корутинах, тасках и футурах, перешли к Джанго) почему так-то вообще? Как это связано

  • @user-zd2ii1zn5q
    @user-zd2ii1zn5q 5 місяців тому

    Музыка на фоне совершенно лишняя

  • @borismish3017
    @borismish3017 6 місяців тому

    Назовите админские команды - это шедевр

  • @borismish3017
    @borismish3017 6 місяців тому

    Вопросы уровня мидл.