Собеседование junior python разработчик Евгений Путрин | Галина Трошкина и Василий Туртугешев

Конференция по кибербезопасности Positive Hack Days, 18-19 мая 2022
- Доклады и кейсы от экспертов кибербеза;
- 30-часовая кибербитва The Standoff.
Приходите на бесплатную трансляцию!
event.phdays.com/
Ваши лайки 👍 колокольчики 🔔 и подписки мотивируют продолжать.
Полное собеседование python разработчика (некоторые вопросы по сложности ближе к middle или junior+). На этот раз на вопросы отвечал мой подписчик. Надеюсь, в дальнейшем подобные вещи будем проводить с некоторой регулярностью.
00:00 Представляем участников
03:41 Начинаем. Немного рекламы и правила собеседования
05:30 Разминочные вопросы про python - плохо. Помогли Иван и Галина
11:57 Словари, списки, функции - скорее хорошо, но можно лучше
38:02 ООП. Паттерн фабрика - хорошо
52:20 Алгоритмы. Сложность - средне
55:40 Управление версиями и SQL-запросы - скорее хорошо. Помогла Галина
1:31:46 Стек - плохо. Помогла Галина
1:38:51 Общий фидбек
ИТОГО: В целом, неплохое впечатление. На оффер можно рассчитывать
🔔ПОДПИСЫВАЙТЕСЬ:🔔
🔗Вконтакте: CaptPronin
🔗Дзен: zen.yandex.ru/id/5fbd33919412...
#python #собеседование #phdays

Пікірлер: 384

  • @AndyPronin
    @AndyPronin2 жыл бұрын

    00:00 Представляем участников 03:41 Начинаем. Немного рекламы и правила собеседования 05:30 Разминочные вопросы про python - плохо. Помогли Иван и Галина 11:57 Словари, списки, функции - хорошо 38:02 ООП. Паттерн фабрика - хорошо 52:20 Алгоритмы. Сложность - средне 55:40 Управление версиями и SQL-запросы - скорее хорошо. Помогла Галина 1:31:46 Стек - плохо. Помогла Галина 1:38:51 Общий фидбек

  • @luckytima2315
    @luckytima23152 жыл бұрын

    Спасибо большое за видео, вы молодец всегда что-то новое :) По видео, ребята те кто учатся сейчас, и думаю что у них не получится и думают что в IT одни гений, в данном видео можно убедится что это не так ))Вот тут надо было пару задач накинуть на алгосы ))

  • @AndyPronin

    @AndyPronin

    2 жыл бұрын

    Надеюсь, будет полезно. Постарался хорошие вопросы подобрать. Мне Евгений признался, что смотрел-слушал мой канал перед сном) Не люблю алгосы, если честно) да ещё на полчаса бы видос затянули. Итак уже под конец устали, на самом деле. В другой раз.

  • @exe88cution
    @exe88cution2 жыл бұрын

    Ну этот формат конечно намного по приятнее) Намного больше вопросов, разнообразие. Спасибо

  • @AndyPronin

    @AndyPronin

    2 жыл бұрын

    Такое будет не всегда), но время от времени буду гонять большие собесы

  • @exe88cution

    @exe88cution

    2 жыл бұрын

    @@AndyPronin и это радует)

  • @mihhha9428
    @mihhha94282 жыл бұрын

    Класс !Смотрю и понимаю как же много всего нужно знать ....

  • @AndyPronin

    @AndyPronin

    2 жыл бұрын

    Но эти знания вполне умещаются в одном человеке) Не переключайтесь. Закончим с Лутцем, будем другие книжки читать.

  • @karasik5695

    @karasik5695

    2 жыл бұрын

    ​@@AndyPronin Лучано Ромальо надо))

  • @gamesboy4446
    @gamesboy44462 жыл бұрын

    Спасибо большое! Отличный контент.) По мне так в задаче с вызовом функции с двумя списками для вывода словаря, вместо того, чтобы создавать еще одну функцию в условие length > len(first_list) просто вставить присвоение length = len(first_list).

  • @AndyPronin

    @AndyPronin

    2 жыл бұрын

    Хороший вариант.

  • @Lena-bx4rq

    @Lena-bx4rq

    2 жыл бұрын

    я бы наверное так же сделала. А вообще ничего ты не понимаешь, чем сложнее написан код, тем меньше комментов будет в код-ревью, ибо сложно - знач так надо, и пусть живет / лень разбираться, соответственно меньше работы. (последнее предложение конечно ирония, но я проверяла, иногда так работает хД )

  • @AndyPronin

    @AndyPronin

    2 жыл бұрын

    @@Lena-bx4rq простое лучше сложного

  • @user-zn5nr1cr4b

    @user-zn5nr1cr4b

    2 жыл бұрын

    Можно было бы и присваивание не делать, а заодно и учитывать ситуацию, когда длина листов может быть разной. Например, for i in range(min(length, len(list_a), len(list_b)):

  • @lbbMHz

    @lbbMHz

    Жыл бұрын

    а я бы просто в переборе в ренж написал вот так range(length if length < len(first_list) else len(first_list))

  • @evgeniik6115
    @evgeniik61152 жыл бұрын

    Классно, здорово, спасибо что делаете такой контент. Интересно смотреть. Учусь на бэкендера, такие видео помогают мне преодолевать синдром самозванца. Мне кажется, что такой уровень сложности собеседования сейчас сложно найти джуну.

  • @AndyPronin

    @AndyPronin

    2 жыл бұрын

    нужно сложнее или проще?

  • @evgeniik6115

    @evgeniik6115

    2 жыл бұрын

    @@AndyPronin больше похоже на вопросы для стажеров, не для джунов. Быть может не прав, на реальных собесах не был.

  • @rostikniks

    @rostikniks

    Жыл бұрын

    @@evgeniik6115 Так иди тогда работать тогда, чего учишься ещё. Если это вопросы для стажёров - значит сможешь на них ответить! Через полгода напишешь, как у тебя там)

  • @katerinadevis9222

    @katerinadevis9222

    Жыл бұрын

    ПРОНИН любит делать гадости и мелкие пакости другим. Так и не повзрослел дятел стучащий по клаве.

  • @user-mj6uo9ms4f
    @user-mj6uo9ms4f2 жыл бұрын

    Очень достойно с вашей стороны Андрей, что вы даёте вашему собеседнику шанс не утопить себя, по темам ваших вопросов, сделал для себя вывод, что вдохновение вы черпаете у Дэна Бадэра, кстати очень хорошая книга и сам его проект

  • @AndyPronin

    @AndyPronin

    2 жыл бұрын

    Дэн очень хорош. Да. Постараюсь, как Лутца закончим, его книгу в разбор взять.

  • @bibus5082
    @bibus5082 Жыл бұрын

    По задачке с словарем сделал так: print({i+1 : string.ascii_lowercase[i] for i in range(20)})

  • @Nemesis-dz6me
    @Nemesis-dz6me2 жыл бұрын

    Большое спасибо за ролик . Благодарю нему понял , что я не так уж и плохо знаю Python )

  • @AndyPronin

    @AndyPronin

    2 жыл бұрын

    не переключайтесь

  • @linatroshka
    @linatroshka2 жыл бұрын

    Andrey += Pronin спасибо за этот опыт! А Евгений молодец просто!

  • @AndyPronin

    @AndyPronin

    2 жыл бұрын

    Хорошо получилось.

  • @rinput
    @rinput2 жыл бұрын

    Спасибо за собес! Было позновательно)

  • @AndyPronin

    @AndyPronin

    2 жыл бұрын

    Отлично получилось.

  • @ibrahimoglu

    @ibrahimoglu

    2 жыл бұрын

    👍

  • @legendofpain1x915
    @legendofpain1x9152 жыл бұрын

    задачку со словарем можно решить вот так result = {i: ascii_lowercase[i - 1] for i in range(1, int(input()))} . вывод у него был только z у всех чисел потому что range проходит по всем буквам и перезаписывает значение, то есть 1 == 'a' потом 1 =='b' и так до z. Это хорошо видно на отладчике если хотите посмотреть Ещё один вариант dict(range(int(input()), ascii_lowercase) :(

  • @Nemesis-dz6me

    @Nemesis-dz6me

    2 жыл бұрын

    Ещё один вариант : dict = { i : chr(96+i) for i in range(1, input()) }

  • @yukikomarise1591

    @yukikomarise1591

    2 жыл бұрын

    Или так dict1 = dict(list(zip(range(1,21), string.ascii_lowercase)))

  • @user-lb9rz2jg9l
    @user-lb9rz2jg9l2 жыл бұрын

    Со словарём просто {(chr(ord('a')+i)): i for i in range(20)} {a: i for i, a in enumerate(ascii_letters, 1) if i < 20}

  • @AndyPronin

    @AndyPronin

    2 жыл бұрын

    кстати, энумирейт очень клёвая идея.

  • @Sadownick

    @Sadownick

    2 жыл бұрын

    А добавить индекс к string.ascii_lowercase? В виде string.ascii_lowercase[a - 1], тогда как “a” в range будет от 1 до 20, а из строки букв алфавита будет выдёргиваться нужная по индексу буква p.s. enumerate да, действительно хорошая идея, если не ошибаюсь он на больших объёмах информации даже быстрее отрабатывает

  • @user-mh8rh2jp3h
    @user-mh8rh2jp3h2 жыл бұрын

    20:30 запутали парня сказав сначала что функция два словаря принимает) Он потом slice от словаря пытался сделать вместо списка и потом в цикл полез, а решение только на 33:20 Вы уже помогли. У меня так на собесах было пару раз, когда волнуешься немного и за каждым словом интервьюера следишь - мозг может от одного слова сломаться) Из прикольного можно ещё в описание кидать репку с заданиями, чтобы можно было их параллельно с просмотром проходить, тогда полноценный курс подготовки к собесам уже получается) По сложности я бы сказал что часть со структурами данных и алгоритмами ультралёгкая, ни на одном собеседовании мне не попадалось ничего подобного, как минимум легкий уровень задач с литкода, two_sum и подобная веселуха) Так что было бы более реалистично эту часть расширить. Доброжелательность и поддержка на высоком уровне, буду держать кулачки чтобы мне такие интервьюеры попадались)

  • @AndyPronin

    @AndyPronin

    2 жыл бұрын

    Отличный фидбек. Спасибо, учту. Постараюсь добавить сложности

  • @user-id5yr5jo6w
    @user-id5yr5jo6w2 жыл бұрын

    dict1 = {a: x for a in range(1, 21) for x in string.ascii_lowercase[a-1]}

  • @Ramping_up
    @Ramping_up2 жыл бұрын

    Спасибо!

  • @AndyPronin

    @AndyPronin

    2 жыл бұрын

    Рад, что было полезно

  • @AleksandrAru
    @AleksandrAru Жыл бұрын

    Прикольно получилось очень

  • @johnbane1625
    @johnbane16252 жыл бұрын

    { a : y for a, y in zip(range(1,21),string.ascii_lowercase)}, так ещё можно

  • @swimmwatch
    @swimmwatch2 жыл бұрын

    Спасибо за годный контент! Мне кажется, что можно улучшить процесс поиска людей через Google Forms. Там можно организовать сбор нужной информации. В том числе можно добавить критерий для фильтра (предполагаемый уровень, реальный уровень (если работает), и тд).

  • @AndyPronin

    @AndyPronin

    2 жыл бұрын

    Процесс отбора планирую изменить. Да. Спасибо

  • @user-ij8jc7zm7i
    @user-ij8jc7zm7i2 жыл бұрын

    Для однострочников: {__import__('string').ascii_lowercase[x - 1]: x for x in range(1, 21)} (lambda x: {__import__('string').ascii_lowercase[x - 1]: x for x in range(1, x)})(some_x)

  • @nikitabbrv5947

    @nikitabbrv5947

    2 жыл бұрын

    эт джуновский уровень? )

  • @user-ij8jc7zm7i

    @user-ij8jc7zm7i

    Жыл бұрын

    @@artyomby4125 Магические числа +1, +2. По заданию должно быть первых 20 букв, а у тебя - все. Ну и сама конструкция сложна для понимания, если человек видит её впервые

  • @paulhooks2265
    @paulhooks22652 жыл бұрын

    Ребята молодцы, может вам конечно было не слышно по ту сторону экрана, но я активно подсказывал по части SQL)))) особенно на агрегатках )))

  • @AndyPronin

    @AndyPronin

    2 жыл бұрын

    Да, жаль что не услышали)

  • @agens9538

    @agens9538

    2 жыл бұрын

    @@AndyPronin давайте онлайн собеседование с чатиком )

  • @AndyPronin

    @AndyPronin

    2 жыл бұрын

    @@agens9538 по стране из края в край ходит чатик -помогай) я подумаю, спасибо

  • @ofdarkness1725
    @ofdarkness17252 жыл бұрын

    Функция в функции конечно хорошо, но if length>len(first_list): length=len(first_list)

  • @igor_k123

    @igor_k123

    2 жыл бұрын

    ещё проще min()

  • @Pro100Sasha2014
    @Pro100Sasha2014 Жыл бұрын

    dict_1 = {a: string.ascii_lowercase[a - 1] for a in range(1, 21)}

  • @ivankuzmin1241
    @ivankuzmin1241 Жыл бұрын

    Здорово, получается у меня почти достаточно знаний для джуна, хотя углублённо прогу не изучал

  • @user-cf8dz4ix7n
    @user-cf8dz4ix7n Жыл бұрын

    import string dict1 = dict(zip([i for i in range(1, 21)], [l for l in string.ascii_lowercase])) lst = [i for i in range(1, 21)] def func(l1, l2, length): return dict(zip(l1[:length], l2[:length])) func(lst, string.ascii_lowercase, 150)

  • @user-rq1kj3hr1d
    @user-rq1kj3hr1d2 жыл бұрын

    Классный видос! Смотрел и по ходу старался решать. Со словарем вышло это (вроде без зипа даже): можно так? def func(qty): return {chr(96 + i):i for i in range(1, qty + 1)} print(func(3))

  • @AndyPronin

    @AndyPronin

    2 жыл бұрын

    Наверное, да. Почему нет. Смущают магическое число 96 - но, в целом, вполне себе решение

  • @jeen9984

    @jeen9984

    2 жыл бұрын

    Еще так можно: from string import ascii_lowercase d = {c: i+1 for i, c in enumerate(ascii_lowercase)}

  • @AndyPronin

    @AndyPronin

    2 жыл бұрын

    @@jeen9984 обычно хорошая задачка подразумевает собой нескольно решений

  • @ecogg8428
    @ecogg8428 Жыл бұрын

    Подумать над простым словарём))

  • @codecode5962
    @codecode59622 жыл бұрын

    я бы задачу со словарем сделал так: dict1 = {letter: num for letter, num in enumerate(string.ascii_lowercase, start=1)} В целом спасибо за такой выпуск, сам формат вполне годный. Понравилось.

  • @AndyPronin

    @AndyPronin

    2 жыл бұрын

    хорошее решение.

  • @d4vlL

    @d4vlL

    2 жыл бұрын

    только просили первые 20, так что нужно еще срезать строчку

  • @Vasile4e4ek

    @Vasile4e4ek

    2 жыл бұрын

    Найс, вот я и узнал, что энумерейт принимает ещё один аргумент. Годный коммент.

  • @nergal7537

    @nergal7537

    2 жыл бұрын

    Я её решил так: dict1 = {a: x for a in range(1, 21) for x in ascii_lowercase[a - 1]}

  • @Hamsters_Rage

    @Hamsters_Rage

    2 жыл бұрын

    i, chr(ord('a') + i)

  • @shinbatsu5465
    @shinbatsu5465 Жыл бұрын

    Касательно задачки со словарем: dict_1 = {chr(64 + i): i for i in range(1, 21)} можно было использовать такую конструкцию

  • @liltousin

    @liltousin

    Жыл бұрын

    dict_1 = dict(enumerate(chr(ord('a')+i) for i in range(20), start=1))

  • @mkalalaka

    @mkalalaka

    Жыл бұрын

    немного ненадежно. chr(64). я делал с вариантом ord('a') и отталкивался от кода символа. тоже так себе решение, базируется на предположении что последовательность букв постоянна и непрерывна.

  • @mkalalaka

    @mkalalaka

    Жыл бұрын

    @@liltousin enumerate дает обратный порядок полей. сначала будет буква, а потом цифра, а по заданию надо наоборот, цифра это ключ.

  • @alexseydugin8109

    @alexseydugin8109

    Жыл бұрын

    {index: char for index, char in zip(range(1, 21), ascii_letters[:20])}

  • @derekstackboy6583

    @derekstackboy6583

    Жыл бұрын

    {x: string.ascii_uppercase[x - 1] for x in range(1, 21)}

  • @tehnoblog6430
    @tehnoblog6430 Жыл бұрын

    Генератор словаря, проще простого dictionary = {key : a[key - 1] for key in range(1, 21)}

  • @user-pw9sn6ih9e
    @user-pw9sn6ih9e2 жыл бұрын

    11:20 - вывод неверный. Мы можем использовать и менять переменную, объявленную ранее в глобал скоуп внутри функции без объявления её глобальной. Ошибка вылезает не поэтому. А потому что у нас эта переменная находится по обе стороны от знака равно. Но если мы не будем так делать, а сделаем внутри функции вот так: X = 5, то не найдя в локальном скоупе ссылок на значения, интерпретатор перейдет в глобальный скоуп и переназначит ссылку с 10 на 5 для переменной Х. При этом никакой ошибки не возникнет.

  • @AndyPronin

    @AndyPronin

    2 жыл бұрын

    x = 10 def foo(): x = 5 print(x) foo() print(x) >>> 5 >>> 10 Кажется, локальная x и глобальная x -- это таки разные x. x = 10 def foo(): print(x) x = 5 print(x) foo() print(x) UnboundLocalError: local variable 'x' referenced before assignment. Получается, что он даже не идет в глобальный скоуп, если есть локальная перменная с таким именем

  • @user-pw9sn6ih9e

    @user-pw9sn6ih9e

    2 жыл бұрын

    @@AndyPronin да, если объявлена локальная переменная, то работаем только с ней. В вашем первом примере мы создали сначала глобальную переменную, затем локальную переменную, и у нас появилось две переменные, каждая в своем скоупе. Если просто начать обращаться к переменной внутри функции, то интерпретатор будет последовательно её искать: сначала в локальном скоупе. Если там не найдет, то в глобальном скоупе. Если и там не найдет, то в импортируемых модулях. Если и там не найдет, то во встроенном скоупе. Если и там не найдет - скажет, что такой переменной нет. В нашем втором примере, интерпретатор сначала смотрит весь код функции, и если там объявлена переменная (вне зависимости от того, в каком месте внутри функции это произошло), то он сразу же забывает про все вышестоящие скоупы и не лезет вверх. И поэтому во втором примере вылезает ошибка. Собственно, если бы мы изменили переменную немного по-другому, например, вместо X += 1 написали X = 11, то ничего бы не случилось. Потому что в конструкции X += 1 идет чтение и одновременно присваивание переменной Х. То есть, происходит некая коллизия - непонятно, мы должны создать новую локальную X со значением глобальной Х, к которой прибавили единицу, или это мы работаем с глобальной переменной Х, и к ней нам нужно прибавить единицу.

  • @romakostenko4016
    @romakostenko40162 жыл бұрын

    Хорошое и познавательное видео. Первую задачку можно было сделать через функцию chr(), у меня получилось так: dct = {chr(i+96): i for i in range(1, 21)}

  • @AndyPronin

    @AndyPronin

    2 жыл бұрын

    да. можно и так. Но мне хотелось еще посмотреть, как он будет вести себя при использовании незнакомой библиотеки

  • @kostya2186

    @kostya2186

    2 жыл бұрын

    @@AndyPronin или в его случае dct = {d: string.ascii_lowercase[d - 1] for d in range(1, 21)}

  • @GloryToUkrainianRus

    @GloryToUkrainianRus

    Жыл бұрын

    @@kostya2186 отлично, у меня такое же решение)

  • @johannesgarin6559

    @johannesgarin6559

    Жыл бұрын

    from string import ascii_lowercase as letters dict1 = {i+1: letters[i % len(letters)] for i in range(20)} как пример с модулем string, но я бы сделал тоже с использованием chr(): dict2 = {x+1: chr(x+97) for x in range(20)} Кстати, было интересно, с какой натяжкой была реализована функция для вывода этого же словаря с параметром длины, в то время, когда заранее уже были преобразованы 2 списка в словарь. Я бы сделал так: from string import ascii_lowercase as letters lst1 = list(range(1, 21)) lst2 = list(letters)[:20] def func(lst1, lst2, length): if length > len(lst2): length = len(lst2) return dict(zip(lst1[:length], lst2[:length])) for i in range(25): print(func(lst1, lst2, i))

  • @avm200010
    @avm200010 Жыл бұрын

    задачка со словарем была почти решена в начале, немного не дотянул. Может так не корректно, но у меня заработало. dict1 = {a: x for a in range(1, 21) for x in string.ascii_lowercase[a-1]}

  • @user-NisserBlahman
    @user-NisserBlahman2 жыл бұрын

    насколько я понял, сложность алгоритма фибоначчи заключается в том, что мы возвращаем fib(n-1) + fib(n-2), и так получается, что fib(n-1) неизбежно считает первое значение fib(n-2) , то есть предыдущие значения считаются по два раза, и весь процесс ветвится как бинарное дерево, следовательно сложность алгоритма растёт примерно как O(2**n). Если я не напутал ничего, конечно же

  • @AndyPronin

    @AndyPronin

    2 жыл бұрын

    Ага. Хороший алгоритм) быстрый

  • @user-NisserBlahman

    @user-NisserBlahman

    2 жыл бұрын

    @@AndyPronin помимо этого , может еще быть лимит по вхождениям рекурсий, в Cpython он вроде 1000 по умолчанию

  • @AndyPronin

    @AndyPronin

    2 жыл бұрын

    @@user-NisserBlahman не помню. Но да, что то типа такого

  • @user-xs3pt3lu3p
    @user-xs3pt3lu3p2 жыл бұрын

    Спасибо

  • @AndyPronin

    @AndyPronin

    2 жыл бұрын

    Рад, что нравиися

  • @pavelnabokov7300
    @pavelnabokov7300 Жыл бұрын

    Я поставил на паузу и решил......... dict1 = {a+1 : str(x) for a in range(0, 26) for x in string.ascii_lowercase[a]} # Делаем смещение в индексе чтобы начиналось с 1 >>> {a+1: print(dict1)

  • @alexmiller6844
    @alexmiller6844 Жыл бұрын

    Kstati, berite na zametku, esli nado sgeneriroat' list ot 1 do 20, to luchshe vsego eto sdelat' tak: list(range(1, 21))

  • @agens9538
    @agens95382 жыл бұрын

    не смог досмотреть до конца, ребята вы монстры :)

  • @AndyPronin

    @AndyPronin

    2 жыл бұрын

    Там есть тайминги) всегда можно вернуться к просмотру. Но в целом, примерно так и выглядит хардовое собеседование полного цикла

  • @agens9538

    @agens9538

    2 жыл бұрын

    @@AndyPronin позже досмотрю, Сишарперу трудновато понять Питониста :)

  • @agens9538

    @agens9538

    2 жыл бұрын

    @@AndyPronin, есть с чем сравнить, особенно пару предыдущих через один собеседования...

  • @AndyPronin

    @AndyPronin

    2 жыл бұрын

    @@agens9538 там кусок с скюэл будет боль менее понятным)

  • @killerslopatoy
    @killerslopatoy2 жыл бұрын

    >ИТОГО: В целом, неплохое впечатление. На оффер можно рассчитывать куда?

  • @AndyPronin

    @AndyPronin

    2 жыл бұрын

    Вообще, он уже работает. )

  • @yan200go
    @yan200go2 жыл бұрын

    Как же я хорошо прогаю по сравнению с ними. Спасибо за поднятие самооценки

  • @AndyPronin

    @AndyPronin

    2 жыл бұрын

    не переключайтесь

  • @san9blin

    @san9blin

    2 жыл бұрын

    )))

  • @serhiipavlenko9024

    @serhiipavlenko9024

    2 жыл бұрын

    Давай на стрим покажи скилл

  • @AndyPronin

    @AndyPronin

    2 жыл бұрын

    @@serhiipavlenko9024 pvp или зассал?) увожаемо

  • @yan200go

    @yan200go

    2 жыл бұрын

    @@serhiipavlenko9024 Я не стример, но уж явно пишу лучше этих. А то чел не знает что такое линтер или как решить простую задачу)

  • @user-py1bp2wu1n
    @user-py1bp2wu1n2 жыл бұрын

    27:18 ------------- import string l1 = [1,2,3,4,5,6,7,8,9,10] l2 = ['a', 'b', 'c', 'd'] dict1 = {i: string.ascii_lowercase[i] for i in range(21)} print(dict1) def func(li_1, li_2, length): return {li_1[i]: li_2[i] for i in range(length) if i print(func(l1, l2, 500)) -------------- Имеет право на жизнь? Если что я только учусь. Дальше пока не смотрел но жутко интересно)

  • @PsdmasterRu
    @PsdmasterRu2 жыл бұрын

    Чет как-то усложнили все. Задачки решаются в 1-2 строчки) В любом случае, очень познавательно. Спасибо!

  • @AndyPronin

    @AndyPronin

    2 жыл бұрын

    Всегда можно лучше. Это первое правило инженеров)

  • @PsdmasterRu

    @PsdmasterRu

    2 жыл бұрын

    @@AndyPronin Спасибо за такие видео, я прям залип на канал))) Столько для себя мелочей для собесов подчерпнул

  • @AndyPronin

    @AndyPronin

    2 жыл бұрын

    @@PsdmasterRu жаль, что не выиграл)

  • @RushFuture

    @RushFuture

    2 жыл бұрын

    Расшифровку ASCII я ещё смог перетерпеть, но генерацию словаря через модуль string (причём это был совет автора канала) - это был уже перебор :)

  • @user-pw9sn6ih9e

    @user-pw9sn6ih9e

    2 жыл бұрын

    @@RushFuture поддерживаю, CHR/ORD в помощь

  • @Lena-bx4rq
    @Lena-bx4rq2 жыл бұрын

    Спасибо большое за видео и смотреть интересно и приятно, и порой заставляет задуматься. У меня несколько вопросов, повлияло б на впечатление, если б я не использовала к примеру zip а использовала простой цикл import string from collections import defaultdict dictionary = defaultdict() for i in range(1, 21): dictionary[i] = string.ascii_letters[i-1] или как альтернативный вариант ASCII_first_letter_a = 97 for i in range(1, 21): dictionary[i] = chr(ASCII_first_letter_a+i) Вопрос второй, я вот смотрю не первое видео, ребята результат смотрят через принт. Это не раскрытый потенциал, или правилами запрещенно поставить брейкпоинт и покопаться в том, что же у меня какая строка делает? И вопрос третий. Я работаю разработчиком, но меня часто кидают по темам и языкам. Я вполне могу сконцептировать проблему, но у меня с девичей памятью косяки с синтаксисом. Вопрос в следующем, насколько Ты бы обратив внимание на косяки в синтаксисе, если я правильно обьянила (и ты это понял), что надо сделать для решения задачи?

  • @AndyPronin

    @AndyPronin

    2 жыл бұрын

    Для Джуна отладка через принт на мой взгляд приемлема. Но это, кнешн, не лучший вприант

  • @AndyPronin

    @AndyPronin

    2 жыл бұрын

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

  • @AndyPronin

    @AndyPronin

    2 жыл бұрын

    По циклу - спросил бы другой способ реализации и постарался натолкнуть на дикт компрехеншн. Это, в моём понимании - более питоняче, чем цикл. Но, как первое решение - норм

  • @AndyPronin

    @AndyPronin

    2 жыл бұрын

    А зачем дафаултдикт? Чем простой словарь не нравится?

  • @AndyPronin

    @AndyPronin

    2 жыл бұрын

    Рад, что понравилось

  • @user-hr5oi7ix5g
    @user-hr5oi7ix5g2 жыл бұрын

    Здраствуйте, хорошее видео, познавательное очень. Не подскажите где можно обучиться отправлять запросы по базам данных SQL. Какие-нибудь информативные видосы, каналы на эту тему. Буду очень благодарен за ответ!

  • @AndyPronin

    @AndyPronin

    2 жыл бұрын

    Довольно много курсов на степике бесплатных видел. Думаю, там можно

  • @nikitabbrv5947

    @nikitabbrv5947

    2 жыл бұрын

    на степике есть хороший бесплатный. там даже оконки есть.

  • @AndyPronin

    @AndyPronin

    2 жыл бұрын

    @@nikitabbrv5947 название напишешь? Ссылку ютуб не пропустит

  • @nikitabbrv5947

    @nikitabbrv5947

    2 жыл бұрын

    @@AndyPronin " Интерактивный тренажер по SQL "

  • @rinput
    @rinput Жыл бұрын

    Ого, давно не заходил, 85к просмотров, вот это да))

  • @AndyPronin

    @AndyPronin

    Жыл бұрын

    Время бежит)

  • @sleepmode7592
    @sleepmode75922 жыл бұрын

    Привет, подскажите, спрашивают ли по поводу асинхронного программирования? И еще, возможно ли что бы Вы проводили собес в стили написать, к примеру, веб сервис на джанге, где будут задания по ооп, алгоритмах и sql?

  • @AndyPronin

    @AndyPronin

    2 жыл бұрын

    И сделать это за час? Камон) сторонники такого обычно дают тестовое задание, а потом на собеседовании его обсуждают, с наводящими вопросами, сам ли это кандидат написал или нет

  • @black_grizzly

    @black_grizzly

    2 жыл бұрын

    @@AndyPronin этот подход лучше, как мне кажется. Могу ошибаться.

  • @AndyPronin

    @AndyPronin

    2 жыл бұрын

    Асинхронку спрашивают. Обычно на уровне понимания. По джанге проведу с типовыми вопросами. Прям сервис не получится. Но определённый кусочек, пожалуй, да.

  • @AndyPronin

    @AndyPronin

    2 жыл бұрын

    @@black_grizzly вполне подход. Да. Включу что нибудь по стеку

  • @Scoofy__doo
    @Scoofy__doo Жыл бұрын

    можно было в начале словарь сделать функцией enumerate данная функция говорит индекс текущего элемента если в цикле for

  • @codingjerk
    @codingjerk11 ай бұрын

    52:40 Сложность этой реализации Фибоначчи O(2^n) по времени и O(n) по памяти. Реальная загадка - почему анализ сложности это "угадайка" и "загадка".

  • @YUY12305
    @YUY123052 жыл бұрын

    учу Python 1.5 мес вот что придумал на скорую руку по заданию со словарями import string x = {i+1: string.ascii_lowercase[i] for i in range(20)} def func(dict1, keys): if keys >= len(dict1): return dict1 dict2 = {i: dict1[i] for i in range(1, keys + 1)} return dict2 print(func(x, 2))

  • @AndyPronin

    @AndyPronin

    2 жыл бұрын

    Очень хорошо. Кажется, имеет смысл продолжать учить)

  • @smbatadamyan220

    @smbatadamyan220

    Жыл бұрын

    ​@@AndyPronin Здравствуйте а если так? x = dict(zip((i+1 for i in range(20)), string.ascii_lowercase)) print(x) а функция так def func(keys:list, values:list,length:int): length = min(len(keys), length) return dict(zip(keys[:length], values))

  • @user-fs9ou5lx9l
    @user-fs9ou5lx9l2 жыл бұрын

    На сколько корректно в классметоде использовать название класса? Не правильней ли будет юзать cls?

  • @AndyPronin

    @AndyPronin

    2 жыл бұрын

    правильней cls, канешн

  • @PurpleDaemon_

    @PurpleDaemon_

    2 жыл бұрын

    Максимально некорректно. Весь смысл классметода исчезает.

  • @RusShbreak1

    @RusShbreak1

    Жыл бұрын

    Смотря для чего, если вызывается статик метод, лучше использовать имя класса, т.к. ни к классу, ни к экземпляру статик методы отношения не имеют. Второй случай - если идет доступ к члену класса, расшаренной переменной, тогда имя класса будет читаться лучше, чем cls. Есть и другие кейсы.

  • @vadimvadim1662
    @vadimvadim16622 жыл бұрын

    небольшое наблюдение, на канале Хекслет (на который подписано 80к человек) собеседование python разработчика посмотрело всего 4.4к, в то время, как здесь за день уже 9к просмотров, так что, Андрей, направление взято верное=)

  • @AndyPronin

    @AndyPronin

    2 жыл бұрын

    Хочу верить, что это из-за моей всепобедимой харизмы))) Спасибо за лестное сравнение

  • @user-yy3ox1mp1p

    @user-yy3ox1mp1p

    Жыл бұрын

    А че толку то смотреть собеседования? на них самому ходить нада-)

  • @smbatadamyan220
    @smbatadamyan220 Жыл бұрын

    29:30 не проверятся длина второго списка следовательно если второй список будет короче первой а параметр length больше то опять будет ошибка

  • @AndyPronin

    @AndyPronin

    Жыл бұрын

    Надо сказать, у задачи есть более изящное решение. Да.

  • @LenorroneL
    @LenorroneL Жыл бұрын

    дикт надо было делать так: d = {x+1: y for x in range(0, 20) for y in string.ascii_lowercase[x]}

  • @x-user-agent
    @x-user-agent2 жыл бұрын

    круто 👍 спасибо, даёшь раз в пару месяцев фейковые собесы 😇

  • @AndyPronin

    @AndyPronin

    2 жыл бұрын

    А я реальные и не выкладываю. Это nda

  • @x-user-agent

    @x-user-agent

    2 жыл бұрын

    @@AndyPronin я имел в виду с «простыми» людьми с ютуба) предыдущие это вроде участники курсов, а тут живой шанс попробовать свои силы)

  • @AndyPronin

    @AndyPronin

    2 жыл бұрын

    @@x-user-agent Ага. Евгений хорошо выступил. Мне понравилось

  • @ivantrofimov6966
    @ivantrofimov69662 жыл бұрын

    import string dict1 = {i: string.ascii_lowercase[i - 1] for i in range(1, 21) } print(dict1) Для особо умных

  • @TheUsersName

    @TheUsersName

    2 жыл бұрын

    dict1 = {i + 1: chr(97 + i) for i in range(20)} print(dict1) Для гениев (нет)

  • @sqrrrrrr
    @sqrrrrrr Жыл бұрын

    и это на джуниора собес?? скорее на стажировку бесплатную d = {i: j for i, j in zip(range(1, 21), ascii_lowercase)}

  • @user-qj3ij4ux6r
    @user-qj3ij4ux6r2 жыл бұрын

    А можете мне объяснить? Я в ступор впал, с примером spam(), если мы объявляем переменную в глобальном контексте мы потом в любой функции можем его использовать как угодно, т.к. если переменной нет в локальном контексте она подхватывается с глобального контекста, а вот "x += 1" или ему аналогичная x = x + 1 не работает

  • @AndyPronin

    @AndyPronin

    2 жыл бұрын

    Области видимости будут в главе 17. ) Когда питон видит вот такое: x = он пытается инициализировать локальную переменную x и ожидаемо ломается

  • @user-qj3ij4ux6r

    @user-qj3ij4ux6r

    2 жыл бұрын

    @@AndyPronin т. Е. Всё дело тут в инициализации? Как то не очень прозрачно)

  • @AndyPronin

    @AndyPronin

    2 жыл бұрын

    @@user-qj3ij4ux6r скорее, в области видимости. Ну маемо шо маемо

  • @heavensent_t
    @heavensent_t Жыл бұрын

    Добрый день! Отличный контент, благодарю :) И ребята молодцы ;) Правда, у меня остался вопрос по SQL, может, кто разъяснит: В последнем запросе 1:30:39 в части group by находится только sub_name, а в области select используются агрегатные функции только для price, а для name не используются. Насколько я помню везде в select должны быть агрегатные функции, кроме тех полей, что прописаны в group by. И почему-то запрос сработал у вас. Почему? :)

  • @TheDeiterium
    @TheDeiterium2 жыл бұрын

    Добрый день! Первую задачу по генерации словаря можно таким образом решить или криво? dict_1 = {key: string.ascii_lowercase[key:key+1] for key in range(1, 21)}

  • @x_107

    @x_107

    2 жыл бұрын

    А зачем ключу слайс значением делать? Почему не просто key - 1?

  • @TheDeiterium

    @TheDeiterium

    2 жыл бұрын

    @@x_107 Во, так изящнее! ps. я же вкатывыльщик, плохо соображаю :)

  • @pythonForEvOne
    @pythonForEvOne Жыл бұрын

    в задаче с словарем намутили конечно вот как мне кажется более оптимальное решение def make_dict(lst1, lst2, lenght): if lenght > 26: lenght = 26 return {k: v for (k, v) in zip(lst1[:lenght], lst2)}

  • @AndyPronin

    @AndyPronin

    Жыл бұрын

    Возможно. Нужно понимать, что писать код в режиме онлайн - это стресс. И мозги работают иначе

  • @pythonForEvOne

    @pythonForEvOne

    Жыл бұрын

    @@AndyPronin даб да я об этом тоже подумал и принял во внимание

  • @alexandrchikur5993
    @alexandrchikur59932 жыл бұрын

    Андрей, доброго времени суток, подскажите, пожалуйста, как можно было бы попасть на такое событие

  • @AndyPronin

    @AndyPronin

    2 жыл бұрын

    Приветю Следите за каналом. Буду набирать время от времени

  • @9206446
    @92064462 жыл бұрын

    Нравиццо! Моя приятная! )

  • @AndyPronin

    @AndyPronin

    2 жыл бұрын

    Пжалста, смотри.

  • @d4vlL
    @d4vlL2 жыл бұрын

    Прикольно, что питон это не мой профиль. dict1 = {a: x for a, x in zip(string.ascii_lowercase[ : 20], range(1, 21) ) } потом, если делать функцию, то вот так: def merge_to_dict ( list_1, list_2, length): return dict( zip( list_1[:length], list_2 ) ) Она и работает не за O(n**2), как у собеседуемого, и проверки лишние не нужны, хоть миллиард суй, больше длины листа не выдаст Дальше пока не посмотрел. UPD: убрал второй slice, узнав в видео, что он не нужен Спасибо за собес!)

  • @AndyPronin

    @AndyPronin

    2 жыл бұрын

    хорошее решение

  • @Aleksey_Podkorytov
    @Aleksey_Podkorytov Жыл бұрын

    Уровень участников разный , один как батя все тащить и двое как дети наблюдают 🤣

  • @soundze
    @soundze2 жыл бұрын

    Интервью понравилось, вопросы хорошо подобраны, все темы затронуты. Сам сейчас ищу работу, хожу по немногочисленным собесам. Наблюдаю тенденцию что джуновских вакансий почти нет, или зачастую компанию ищут мидлов на ЗП Джуна. Что думаешь Андрей по этому поводу?

  • @AndyPronin

    @AndyPronin

    2 жыл бұрын

    Мидл по цене Джуна - это классика. Всегда так было. Я бы сказал, что можно на мидловые собесы смело ходить

  • @nullptr_or_null8301

    @nullptr_or_null8301

    2 жыл бұрын

    Так это нормально, если просто разместить вакансию на питон разработчика мидла с окладом по рынку, налетит много на нее, причем независимо от уровня (там будут как соответствующие этому уровню, так и нет) , а вот если разместить вакансию с нормальной за, на Data Science, с применением питона, откликаться на нее будет только одни даже близко не соответствующие этому уровню, у питона входной порог слишком низкий, так что соискателей требующих норм зп и соответствующих уровню мидла и выше более чем достаточно на рынке, а вот чтобы найти ниже рынка это задачка, впрочем думаю в ближайшее время их будет более чем достаточно даже на пониженную зп.

  • @nullptr_or_null8301

    @nullptr_or_null8301

    2 жыл бұрын

    @@AndyPronin "Я бы сказал, что можно на мидловые собесы смело ходить" - теперь понятно, кто гадит работодателям.

  • @AndyPronin

    @AndyPronin

    2 жыл бұрын

    @@nullptr_or_null8301 Если скилл позволяет - то чеб нет) Вот, например, у Евгению из этого видео чуток подкачаться и вполне имеет смысл

  • @Diqeeeeeeeeeei
    @Diqeeeeeeeeeei2 жыл бұрын

    не программирую на питоне) но логично было бы def func(first_list, second_list, length): if (length > len(first_list)): length = len(first_list) тут цикл))

  • @AndyPronin

    @AndyPronin

    2 жыл бұрын

    отлично, кстати.

  • @Kirill0094

    @Kirill0094

    Жыл бұрын

    ​@@AndyPronin length = min(length, len(first_list))

  • @smbatadamyan220

    @smbatadamyan220

    Жыл бұрын

    По любому надо проверить еще и с длиной второго списка. на видео не выдало ошибок так как второй список не был короче первого.

  • @smbatadamyan220

    @smbatadamyan220

    Жыл бұрын

    @@Kirill0094 length = min(length, len(first_list), len(second_list))

  • @user-xy3dk3vj9e
    @user-xy3dk3vj9e2 жыл бұрын

    А что, вы используете для таких онлайн-собеседований

  • @AndyPronin

    @AndyPronin

    2 жыл бұрын

    Zoom

  • @poplor
    @poplor2 жыл бұрын

    камеры чуть больше надо, а так спасибо, за материал))

  • @AndyPronin

    @AndyPronin

    2 жыл бұрын

    что значит: больше камеры?

  • @poplor

    @poplor

    2 жыл бұрын

    @@AndyPronin в правой стороне людей почти не видно

  • @AndyPronin

    @AndyPronin

    2 жыл бұрын

    @@poplor зум так устроен( ок. Попробую что-нибудь придумать

  • @he1tpoh753
    @he1tpoh753 Жыл бұрын

    что за книга

  • @user-yn1wo4jb6y
    @user-yn1wo4jb6y2 жыл бұрын

    def spam(length): return {idx: string.ascii_lowercase[idx - 1] for idx in range(1, length + 1) }

  • @vaccino3668

    @vaccino3668

    2 жыл бұрын

    клоун, у тебя выход за границы массива не обрабатывается

  • @gleblatyshev7779
    @gleblatyshev7779 Жыл бұрын

    Я хоть и новичок, но смог решить первую задачу в одну строчку: Dict = {i: chr(96+i) for i in range(1, 21)} Я использую элементы из asii таблицы

  • @user-ur3mc6hb5d

    @user-ur3mc6hb5d

    Жыл бұрын

    хороший вариант. Я через енумерейт с импортом сделал. Как вариант. Но твой без библиотек даже лучше

  • @dippdp1108
    @dippdp11082 жыл бұрын

    Простите, а можно на собеседовании гуглить? Я бы да)

  • @tetragonaltrigonal2619
    @tetragonaltrigonal26192 жыл бұрын

    У Вас опечатка на экране заставки в Вашем любимом слове «Python».

  • @AndyPronin

    @AndyPronin

    2 жыл бұрын

    Так и задумано)

  • @jefftk8997
    @jefftk89972 жыл бұрын

    Объясните, правда ли существуют такие собеседования? Мне кажется, что формат собеседования довольно странный, множество заданий просто теряют смысл, если интервьюемый не знает какой-то функции, а в реальной работе гуглится это на раз-два. На собеседовании - главное понять как человек соображает и насколько он обучаемый (интервьюер может помочь подсказкой и посмотреть на его реакцию). Кажется, с этим хорошо справляются задачи с литкода.

  • @kanatatakonys5318

    @kanatatakonys5318

    Жыл бұрын

    @@RMDiscovery опять же, потерять потенциального лучшего из-за забытой функции - так себе удовольствие

  • @karington1168

    @karington1168

    Жыл бұрын

    @@RMDiscovery Что за бред Плохой программист не пройдёт испытательный и пойдёт дальше проходить собесы. Задача собеседования, а тем более собеседования на джуна, понять что перед тобой человек который не первый раз видит компьютер, и печатает быстрее бабушки. А если человек отвечает на вопросы по ООП, сложности алгоритмов, декораторы и фабрики, то это уже собеседование на мидла "Крупные компании могут позволить себе лучших из лучших, поэтому им немного не до "соображающих и обучаемых" -- Это откуда такая мысль? Как раз таки мелкие компании не могут себе позволить кого-то кто будет учиться и раскачиваться, им нужны люди, которые будут показывать результат. В то время как большие компании с большими бюджетами могут себе позволить взять 30 человек на испытательный, и оставить из них троих через 3 месяца, что будет сильно эффективнее и дешевле чем пытаться найти этих троих через собеседования

  • @ibrahimoglu
    @ibrahimoglu2 жыл бұрын

    👍

  • @tarasnovokhatskiy6776
    @tarasnovokhatskiy6776 Жыл бұрын

    обнять и плакать 🥲

  • @hermitstudio2023
    @hermitstudio2023 Жыл бұрын

    Что бы сформировать массив из первых 20-ти символов алфавита ушло 6 строк =), забавно, а что мешало написать в три строки? import string dict_abc = {a: x for a in range(1, 21) for x in string.ascii_lowercase[a]} print(dict_abc)

  • @jtprogru_channel
    @jtprogru_channel2 жыл бұрын

    В примере с Фибоначчи (если я все правильно помню) - сложность линейная: время выполнения линейно зависит от количества элементов которые надо посчитать.

  • @AndyPronin

    @AndyPronin

    2 жыл бұрын

    Не

  • @jtprogru_channel

    @jtprogru_channel

    2 жыл бұрын

    @@AndyPronin точно! O(n^2)

  • @AndyPronin

    @AndyPronin

    2 жыл бұрын

    @@jtprogru_channel неа. там рекурсия. Еще версия?)

  • @rinput

    @rinput

    2 жыл бұрын

    @@AndyPronin поразбирался вчера с фибоначи, и насколько понял, сложность алгоритма зависит от количества элементов, если возьмем один элемент, то О(1), и чем больше элементов, тем сильнее разрастается рекурсия, и соедовательно зависимость становится экспоненциальной. Am i right?)

  • @x_107

    @x_107

    2 жыл бұрын

    @@rinput Не, там 2 вызова функции в рекурсии. Это будет что то вроде дерева вызовов, мне кажется будет 2^n сложность

  • @7IdE
    @7IdE2 жыл бұрын

    Блин, вот этот вопрос "вы помните агрегатные функции?". Я такой: чиво? А потом такой: не, че-то где-то я видел это слово. Полез в гугол иии... Думаю, задавая такой вопрос стоит сказать вещь вида "одна из агрегатных функций - min(), к примеру". Да, наводящий вопрос. Но как по мне: запоминать слово "агрегатные" - ну такое. :D

  • @alexandrpodmaskin7016
    @alexandrpodmaskin70162 жыл бұрын

    16:50 мб поздновато и кто-то такой вариант присылал, я бы сделал вот так import string dict1 = {a+1: sorted(string.ascii_lowercase)[a] for a in range(0,20) } print(dict1) не красиво не элегантно, но и я не программист :)

  • @alexandrpodmaskin7016

    @alexandrpodmaskin7016

    2 жыл бұрын

    но есть еще вариант более изощренный к примеру вот так, без модулей. a = {} i=0 for b in range(97,123): i+=1 a[i] = chr(b) print(a)

  • @AndyPronin

    @AndyPronin

    2 жыл бұрын

    dict1 = {a: string.ascii_lowercase[a-1] for a in range(1, 21)} а почему мне так?)

  • @alexandrpodmaskin7016

    @alexandrpodmaskin7016

    2 жыл бұрын

    @@AndyPronin тоже как вариант )) но в голову первый вариант такой пришел ))

  • @user-ch2xi7tv5b
    @user-ch2xi7tv5b Жыл бұрын

    Можно рассчитывать на оффер??? А можно у вас пройти интервью?)

  • @AndyPronin

    @AndyPronin

    Жыл бұрын

    Обычно делаю интервью со студентами Практикума. Если есть спонсор - приглашаю подписчиков.

  • @nekituall9217
    @nekituall9217 Жыл бұрын

    Вот бы услышать мнение Евгения про его учебу , интересно , если прочтёшь отпишись почему именно Итмо плиз

  • @rinput

    @rinput

    Жыл бұрын

    Привет, на самом деле просто пошёл по рекомендации друга. По итогу не разу не пожалел, там дали структурированные знания по базе Питона и по вебу + домашки были интересные. Но учеба довольна плотная, по 4 часа онлайн занятий 3 раза в неделю + домашки иногда до 10 часов занимали, а домашку давали после каждого занятия. Вообщем после 3 месяцев такого плотного обучения, я бы сказал, что можно пробовать проходить собесы на джуна, вполне реальный шанс есть.

  • @nekituall9217

    @nekituall9217

    Жыл бұрын

    @@rinput привет привет, спасибо за ответ. Вот я не дождавшись ответа=) уже учусь там же, в целом все нравится, хотя какие то вещи сам уже освоил по книжкам. Непонятно только, что лучше: тут инфы и теории больше, чем практики на яплощадке. На какие темы стоит сделать упор для работы?

  • @liltousin
    @liltousin Жыл бұрын

    Кто нибудь расскажите ему про enumerate(), chr() и ord()!!!

  • @xewuss3750
    @xewuss37502 жыл бұрын

    1. Вот бы я ещё парился с импортами: {chr(x): x - ord('a') + 1 for x in range(ord('a'), ord('a') + 20)} 2,. Вопрос, честно говоря не понял, сказано - "Принимаем два словаря", но в параметрах пишем списки... Тут , как раз, уместен zip с дальнейшим срезом: dict([*zip(l1, l2)][:length]) PS. В итоге к этому и пришли. По SQL, как сказал Антон М . - "Пока не тормозит - не парься", так, что, возможно, было бы проще в этот запрос просто дописать LIMIT 1 (и прятаться от DBA), в любом случае, СУБД придётся перебрать все значение, но MAX, наверное эффективнее сортировки.

  • @AndyPronin

    @AndyPronin

    2 жыл бұрын

    Два списка канешн. Насчёт работы - не всё решают задачки и их решение

  • @borys.bond_
    @borys.bond_ Жыл бұрын

    Я даже не джуниор, но епта чел уже при работе и не знает, что срезы для словарей не работают)) Я в шоке

  • @nomenillislegio7305
    @nomenillislegio7305 Жыл бұрын

    почему бы не использовать enumerate в задаче с алфавитом?

  • @AndyPronin

    @AndyPronin

    Жыл бұрын

    Можно и его

  • @vrabosh
    @vrabosh Жыл бұрын

    if len(first) > l: l = len(first) Вот таким способом решается намудренная функция ваша

  • @codingjerk

    @codingjerk

    11 ай бұрын

    Это минимум называется :) l = min(l, len(first))

  • @vrabosh

    @vrabosh

    11 ай бұрын

    @@codingjerk а не max? Но сокращение классное

  • @nvitar
    @nvitar2 жыл бұрын

    Словарь создать: dict1 = {a + 1: b for a, b in enumerate(string.ascii_lowercase[:20])} соответственно вторая задача: from string import ascii_lowercase def my_dict(count): if count raise ValueError("Число элементов должно быть больше 0") return {a + 1: b for a, b in enumerate(ascii_lowercase[:20][:count])} print(my_dict(10))

  • @AndyPronin

    @AndyPronin

    2 жыл бұрын

    функция из 2й задачи не так должна была выглядеть

  • @nvitar

    @nvitar

    2 жыл бұрын

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

  • @phillstolyarov9559
    @phillstolyarov95592 жыл бұрын

    Элементарный код по Sqlite 3. как его можно не понимать.

  • @AndyPronin

    @AndyPronin

    2 жыл бұрын

    Если не сталкивался и работал через ORM или редактор, который за тебя это все делает - то легкие тормоза в понимании - ок.

  • @phillstolyarov9559

    @phillstolyarov9559

    2 жыл бұрын

    @@AndyPronin Да, ОРМ это, конечно, интересно. Главное что бы мозг не расслабился. Все эти упрощалки делают из сотрудика самого пользователя, а ему необходимо оставаться создателем продукта, что бы другие потльзовались.

  • @user-jd4rl7im6d
    @user-jd4rl7im6d2 жыл бұрын

    По-моему, паттерн "Фабрика" реализован неправильно. Должен был быть класс "Пиццерия", у которой был бы метод (или методы) по созданию экземпляров другого класса "Пицца". А какой смысл в классе Пицца создавать метод по созданию объектов этого же класса, если для этого и существуют инициализатор)

  • @non_holy6286
    @non_holy62862 жыл бұрын

    На питоне реально так плохо sql джуны знают?) Я никого не хочу обидеть, просто интересуюсь, т.к. для java эти запросы - элементарнейшие вещи з.ы. тут inner join скорее нужен)

  • @PurpleDaemon_

    @PurpleDaemon_

    2 жыл бұрын

    На питоне почти всегда ормки.

  • @nurbolkapakov2282
    @nurbolkapakov2282 Жыл бұрын

    Уасяяя, я тож таксист)

  • @aleksandrkomyagin3665
    @aleksandrkomyagin3665 Жыл бұрын

    За какое время реально научиться кодить хотя бы на таком уровне?

  • @AndyPronin

    @AndyPronin

    Жыл бұрын

    полгода-год

  • @PurpleDaemon_
    @PurpleDaemon_2 жыл бұрын

    И ни одного интервьюера не нароягло, что ни один класс-метод "фабрики" не обратился к переданному классу. Получается они сами не понимают когда нужен класс-метод, а когда статик?

  • @mkalalaka
    @mkalalaka Жыл бұрын

    на задачу со словарем ушло 40 минут. для собеса наверно многовато :)

  • @LoveSoySause
    @LoveSoySause Жыл бұрын

    долго смеялся над превью картинкой к ролику

  • @smbatadamyan220
    @smbatadamyan220 Жыл бұрын

    по моему сложность рекурсии по фибоначи O(2^n)

  • @AndyPronin

    @AndyPronin

    Жыл бұрын

    Почему?

  • @khnykaq8823
    @khnykaq8823 Жыл бұрын

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

  • @AndyPronin

    @AndyPronin

    Жыл бұрын

    Какой именно синтаксис? Как пишется цикл? Условие? Или чтто? Скорее, это в минус человеку сыграет, чем в плюс. Но можно и меня спросить как правильно написать

  • @user-cg8yo6id5w
    @user-cg8yo6id5w2 жыл бұрын

    :-)

  • @nikitabbrv5947
    @nikitabbrv59472 жыл бұрын

    А если кандидат просит обратиться в доку по скулю- это ок? т.е. не мучать что зачем идёт, а пусть смотрит синтаксис и делает.

  • @AndyPronin

    @AndyPronin

    2 жыл бұрын

    Тут проще спросить интервьюера, как правильно пишется.

Келесі