Собеседование junior python разработчик | Сергей Афонин

Поделиться
HTML-код
  • Опубликовано: 21 сен 2024
  • t.me/RUclipsPr...
    Чат для общения pyhton разработчиков и им сочуствующих. Свободное общение, тестовые и вопросы с собесов и прочее. Заходите, там вам рады.
    Поддержать канал: www.tinkoff.ru...
    Обычно денежка идёт на книжки про питончик. Но иногда на светлое и тёмное.
    Если Тиньков не даёт перечислить, стукните в личку телеги andpronin, придумаем что нибудь
    Виш лист
    Хорошие книги по Питончику, которые могу рекомендовать (и хочу купить с вашей помощью).
    Изучаем Python. Двухтомник. Марк Лутц. Очень подробно и структурно (Хочу дождаться 6го издания.. )
    • Изучаем Python с Марко...
    Читаем и разбираем ее тут
    Куплено (огромное спасибо зрителям)
    Знакомство с Python | Бейдер Дэн (2023) - выглядит приятно для новичка
    Чистый Python. Тонкости программирования для профи | Бейдер Дэн (2022) - хорошо для продолжения
    Высоконагруженные приложения. Программирование, масштабирование, поддержка | Клеппман Мартин
    Python. К вершинам мастерства | Рамальо Лучано - 2е издание - сложно для новичка, но интересно
    Паттерны разработки на Python: TDD, DDD и событийно-ориентированная архитектура -- хорошо про то, когда какой фреймворк применять
    Видимо, дальше появтся еще нескромные желания. Но пока - так
    Моя тележка andpronin -- стучите, если что.
    Мой канал про обучению python с нуля и до мидла Андрей+=Пронин
    / @pypronin
    Я в других сетях
    🔗Вконтакте: CaptPronin
    🔗Дзен: zen.yandex.ru/...
    #python #питон #программирование #Андрей_Пронин #собеседование #

Комментарии • 93

  • @Soloo333
    @Soloo333 10 месяцев назад +2

    Он решил неверно. Условия: подсчитать кол-во впадин, которые преодолел путешественник, учитывая что путь заканчивается на уровне моря, т.е. 0. (в таком случает он преодолевает любое последнее препятствие)
    travel_map = input().upper()
    ALPHABET = 'DU' # разрешенные символы
    def calculation(x: str) -> (str, int):
    sea_level = 0 # уровень моря
    peak = 0 # кол-во преодоленных вершин
    pit = 0 # кол-во преодоленных впадин
    for i in x:
    if i not in ALPHABET:
    raise TypeError("Неверно введено значение: Введите вершину(U, u) и\или впадину(D, d)")
    if i in 'U':
    sea_level += 1
    if sea_level > 0 and not sea_level > 1:
    peak += 1
    if i in 'D':
    sea_level -= 1
    if sea_level < 0 and not sea_level < -1:
    pit += 1
    return f"Вершины преодолены: {peak}
    Низины преодолены: {pit}"
    if __name__ == "__main__":
    result = calculation(travel_map)
    print(result)
    assert calculation("DDUUD") == f"Вершины преодолены: {0}
    Низины преодолены: {2}"
    # ========================================================================
    если кому-то нужно короткое решение и только для впадин:
    def calculation():
    travel_map = 'DDUUD'
    sea_level = 0
    pit = 0
    for i in travel_map:
    if i == 'U': sea_level += 1
    else:
    sea_level -= 1
    if sea_level < 0 and not sea_level < -1: pit += 1
    return pit
    print(calculation())

  • @bdwayne1452
    @bdwayne1452 Год назад +18

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

    • @MrBeltalowda
      @MrBeltalowda Год назад +1

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

    • @Фома-ж7я
      @Фома-ж7я Год назад

      Смотрю собеседования, как "Что? Где? Когда?" или "Поле чудес", типа "во я знаю слово целиком!". Но понимаю, что это я сидя на диване так, а перед собеседователем скорее всего растеряюсь. Хотя тут достаточно приятные собеседники.

  • @duckwasfirst
    @duckwasfirst Год назад +10

    «Почему выбрал нашу компанию и подал резюме в неё?»
    Задавая этот вопрос, рекрутер думает, что человек без опыта тщательно отбирает вакансии куда его скорее всего не возьмут?

    • @Фома-ж7я
      @Фома-ж7я Год назад +2

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

  • @ДмитрийПоснов-х7л
    @ДмитрийПоснов-х7л Год назад +2

    Через re
    pattern = "uudd"
    def find_quantity_pattern(track: str = "") -> int:
    result = re.findall(pattern, track)
    return len(result)

    • @Swetocopy
      @Swetocopy Год назад

      Пофантазируй над входными данными. Выше уровня моря все еще холм.

  • @КонстантинАлексеев-ы9б

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

  • @MrBeltalowda
    @MrBeltalowda Год назад +5

    оформил чуть посимпатичнее:
    SEA_LEVEL = 0
    UP, DOWN = 'u', 'd'
    STEP = {UP: 1, DOWN: -1}
    def count_valleys(path: str) -> int:
    valleys, height = 0, SEA_LEVEL
    for direction in path:
    if direction == DOWN and height == SEA_LEVEL:
    valleys += 1
    height += STEP[direction]
    return valleys

  • @kaluginpeter
    @kaluginpeter Год назад

    Про задачу подумал решить так:
    def waves_count(s: str):
    count, word, dic = 0, '', {'U':1, 'D':-1}
    for i in s:
    count += dic[i]
    word += '(' if count < 0 else ')'
    return word.count('()')
    Работает на каверзных тест-кейсах.
    Спасибо за видео, информативно!

  • @seoonlyRU
    @seoonlyRU Год назад +3

    лукасик от СЕООНЛИ

  • @Easylifehacker
    @Easylifehacker Год назад +2

    def func(str):
    dict_path{"u": 1, "d": -1}
    sum=see_sum=count=0
    for i in str:
    sum +=dict_path.get(i)
    if sum-1:
    count+= 1
    see_sum = sum
    return count

  • @flower-py
    @flower-py Год назад +7

    Блин, хочу быть по жизни как Олег: крутым и в то же время небезразличным, творческим, и в классных очках к тому же.

  • @toxa1toxa
    @toxa1toxa Год назад +1

    Как бы выглядело решение этой задачи, если нужно было просчитать сколько раз были выходы в + из впадины. Т.е. если -1,1,1 - это будет один переход в повышение. Если текущее значение, к примеру будет -2, то +2 не подходит, так как уровень будет 0.

  • @lufnex38
    @lufnex38 Год назад

    count=0
    rv=0
    g="dduduudu"
    for i in g:
    if count

  • @IT_psychopath
    @IT_psychopath 9 месяцев назад

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

    • @justman073
      @justman073 5 месяцев назад

      Не соглашусь, что решение задачи через структурную парадигму указывает на низкий уровень, например решения задач с Advent Of Code от hyper-neutrino в плане владения инструментарием языка Python и владения алгоритмами поражает

  • @ИсмоилХакимов-р8щ

    def count_vpadins(path):
    d = {'U': 1, 'D': -1}
    uroven = 0
    vpadina = 0
    c = 0
    while c < len(path):
    if uroven < 0:
    vpadina += 1
    while uroven < 0:
    uroven += d[path[c]]
    c += 1
    else:
    uroven += d[path[c]]
    c += 1
    return vpadina

  • @totaldestruction7128
    @totaldestruction7128 Год назад +3

    невовремя дядя решил свичнуться, тут нейросети джунов вытесянют)

    • @AndyPronin
      @AndyPronin  Год назад +2

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

    • @MrBeltalowda
      @MrBeltalowda Год назад +6

      @@AndyPronin это понимают все, кто пытался добиться от chatgpt хоть чего-то полезного 🙂

    • @AndyPronin
      @AndyPronin  Год назад

      @@MrBeltalowda поисковики, боты, работа с естественным языком. Возможно, картинки. Там оно развернётся.

    • @jewgenijmoldawski3306
      @jewgenijmoldawski3306 Год назад +1

      Каждый мидл когда-то был джуном так что джуны никуда не денутся

  • @niktaub6407
    @niktaub6407 Год назад +11

    Rejected ? Вы серьезно? Кандидат хорошо выполнил задание, при этом оценили его чисто по софтам. Олег выдумал задание за 5 минут при этом не убедился, что его задание хорошо понятно соискателю, изменял условия и постоянно мешал кандидату.

    • @СемёнСемёныч-е4д
      @СемёнСемёныч-е4д Год назад +2

      Странная формулировка, мол чел решил всё правильно, но ответ - нет. Больше на кулинарные шоу похоже.

    • @mikeofs1304
      @mikeofs1304 Год назад

      Открою тебе вторую тайну золотого ключика, в 80 процентов случаев ты будешь получать именно такие вводные от и что тебе "его задание НЕ хорошо понятно " никого не волныет. Это энтропия нашей вселенной. Ты сам должен получив задание, сейчас внимение важно ПОДУМАТЬ, а потом уточнить все тонкости, а не бросатся долбить его напрямую. Это собственно был одним из тестов, показывающий уроыень, думает человек так или идет в лоб.

    • @niktaub6407
      @niktaub6407 Год назад +1

      @@mikeofs1304 Чел, тебе бы философию смотреть, под боярку очень хорошо заходит ;)

    • @mikeofs1304
      @mikeofs1304 Год назад

      @@niktaub6407 иди купи еще 3 курса, и потом дальше сможешь ныть какой ты титулованный и дипломированный, а на собесах тебя валят злые завистники, ггг

    • @niktaub6407
      @niktaub6407 Год назад

      @@mikeofs1304 Походу боярки ты перепил, какие курсы, шо ты несешь? Через собесы продвигаются вкатуны, которые хорошо умеют философствовать как ты например, такие держатся от силы 3 месяца, последние два из которых активно лижут очко начальству, тру-кодеры проходят по хардам за счет пет проектов и идеально выполненных ТЗ.

  • @yrubiko
    @yrubiko Год назад

    Получилось как то так. Какие еще есть алгоритмы решения?
    def find_crossing(path: str) -> int:
    crossing = 0
    result = 0
    for x in path.lower():
    if x == 'u':
    crossing += 1
    if crossing == 0:
    result +=1
    if x == 'd':
    crossing -=1
    if crossing == 0:
    result +=1
    return result

    • @frostibums
      @frostibums Год назад

      ududud попробуй)

    • @КонстантинАлексеев-ы9б
      @КонстантинАлексеев-ы9б Год назад

      Просят отдельно количество холмов и вершин как я понял,тут нужно тогда 2 result один когда снизу пересекает вверх уровень моря (это вершина) и когда сверху пересекается уровень моря вниз (это впадина)

  • @makooprime
    @makooprime Год назад +3

    Честно говоря я вообще не понял что он говорил в начале собеса, как то все спутано.

  • @Galgonochka
    @Galgonochka Год назад +1

    Это точно задача на позицию джуна? может, это на миддл-позицию собеседование?

    • @alexppppp
      @alexppppp Год назад

      Простая задачка

  • @apikhenko
    @apikhenko Год назад +2

    Отличное собеседование и фидбек!

  • @ВалерийКозлов-б7ж

    path = ('U','U','U','D','D','D','D','D','U','U','U','D','D','D','D','U','U',)
    def down_counter(path):
    level = 0
    prev_level = 0
    down_count = 0
    for step in path:
    if step =='U':
    level+=1
    else:
    level-=1
    if level == -1 and prev_level == 0: down_count +=1
    prev_level = level
    return down_count
    print(down_counter(path))

  • @pavelkuznetsov8106
    @pavelkuznetsov8106 Год назад

    def count_cavity(path: str) -> int:
    summa = count = 0
    for segment in path:
    summa = summa + 1 if segment == 'u' else summa - 1
    if summa == -1 and segment == 'd':
    count += 1
    return count

  • @ritchenko
    @ritchenko Год назад

    cort = {'U':1, 'D':-1}
    res = 0
    prev = 0
    summ = 0
    for i in inp:
    if i in cort:
    res += cort[i]
    if res == -1 and prev == 0:
    summ += 1
    prev = res
    return summ

  • @Vasilii_Furi
    @Vasilii_Furi Год назад

    def traveler(input_data: str) -> int:
    check_pit = man = 0
    for i in input_data:
    if i == "D":
    if man == 0:
    check_pit += 1
    man -= 1
    else:
    man += 1
    return check_pit
    print(traveler("DDUUD"))

  • @7IdE
    @7IdE Год назад +4

    Какой-то рили странный и отрешенный чувак так-то.
    Ну а фидбек от Олега как всегда на высоте.

    • @nataliepodgainova6582
      @nataliepodgainova6582 Год назад

      Почему странный, флегматик, да и возраст добавляет пофигизма.

  • @jewgenijmoldawski3306
    @jewgenijmoldawski3306 Год назад +2

    Как по мне, вполне даже тянет на юниора. Видно, что опыта нет, ну так на то и джун.

  • @РафикУнанян
    @РафикУнанян Год назад

    X = ‘ududu’
    S=0
    K=0 # кол-во
    for i in range(len(x)):
    if x[i] == ‘u’:
    S+=1
    else:
    S-=1
    if S

  • @Chel1k7
    @Chel1k7 Год назад +3

    C Олегом собесы круче, не в обиду Андрею

    • @AndyPronin
      @AndyPronin  Год назад +10

      Буду удалять такие комменты)

  • @МаратЦховребов-г1х

    Здравствуйте, Андрей! У меня вопрос, объясните, пожалуйста, по поводу документации и библиотек, модулей... Как учить, например, в Питоне, сторонние библиотеки, например Pygame или TKinter, стоит ли смотреть видеоуроки, или лучше привыкать читать документацию? А если документацию, то как ее правильно научиться читать, то есть там много всего, деталей всяких, и выуживать главное иногда нелегко, и как выработать тот навык, который позволяет не знать или выучить библиотеку, а ПОЛЬЗОВАТЬСЯ ей (словно ты не знаешь эту библиотеку, но ты знаешь что тебе надо сделать и просто заходишь там в доки и правильно все применяешь, сформулировал задачу, и идешь в доки и ищешь что тебе надо)? И еще: документацию лучше стараться на английском читать, даже если не очень знаешь язык(хотя в этом есть плюс: научишься понимать доки на англ.)? В целом можете сказать как вы сами учите библиотеки, что бы вы сделали и как бы вы сделали, если бы вам, например сказали, написать скажем таймер обратного отсчета времени с графическим интерфейсом на JavaSript(там есть скажем какой-то похожий модуль на pygame), вот??

    • @nataliepodgainova6582
      @nataliepodgainova6582 Год назад

      Странно, что ещё никто не ответил. Я только начала учиться, но у меня возник бы вопрос сначала как передается время. Если с терминала, то нужен модуль sys. И модуль datetime, чтобы распознать дату. Если дата одна и указана в программе, например, сколько осталось до Нового года, то sys не нужен. Будет ли эта дата сама по себе изменяться, как с Новым годом, потом нужно прибавлять 1 год, а 31.12 остаются прежним. Пользуются ли этим временем люди из других временных зон, или будет использоваться только на локальном компьютере, будет оно сохраняться в файл или нет. Если будет на локальном, то хватит и datetime, если нужно общемировое время, которое видно всем, то нужен модуль pytz. Как будет выводиться время: цифрами или буквами. Если буквами, то нужен модуль locale, но насколько я помню он не склоняет на русском месяцы в windows, а склоняет только в linux и mac os. Поэтому нужно будет написать или массив, или словарь с месяцами. Ну это я знаю только про русский вариант, а как там с другим обозначением времени, нужно ещё разбираться. Потом нужен будет метод timedelta, считать разницу между датами сейчас и планируемой. Он в том же модуле datetime. Если нужен календарь, в котором что-то выбирать, то нужен модуль calendar. Это первое, что пришло в голову.

  • @Миллионнакрипте-о9у

    def check_count_downs(path):
    n = 0
    count_downs = 0
    instance = 0
    for x in path:
    if x == 'u':
    n += 1
    elif x == 'd':
    n -= 1
    if n < 0 and instance == 0:
    count_downs += 1
    instance += 1
    elif instance == 1 and n >= 0:
    instance = 0
    return count_downs
    изи пару минут, хотя я далеко не спец по решению задач

  • @Piro_
    @Piro_ Год назад

    Хз зачем, но вот моё решение ^_^
    def check_count(st):
    ans = flag = 0
    d = {'U': 1, 'D': -1}
    for i in st:
    if flag < 0 and (flag + d[i]) == 0:
    ans += 1
    flag += d[i]
    return ans

  • @igorxjarvinen
    @igorxjarvinen Год назад

    def trench(path):
    count = 0
    total = 0
    inside_trench = False
    for i in path:
    if i == 'u':
    count += 1
    elif i == 'd':
    count -= 1
    if count == -1 and inside_trench == False:
    total += 1
    inside_trench = True
    elif count == 0 and inside_trench == True:
    inside_trench = False
    return total if total and inside_trench == False else 0
    s = 'dduud'
    print(trench(s))

  • @germanmariot34
    @germanmariot34 Год назад +1

    Привет.
    Ого, вы дедов - программистов берёте?
    Я тоже хочу.
    Какие вакансии?

    • @AndyPronin
      @AndyPronin  Год назад +1

      Сеньоры с бородой нужны
      )

    • @germanmariot34
      @germanmariot34 Год назад

      @@AndyPronin лол, Сеньоры давно у Омэрике
      😂

    • @AndyPronin
      @AndyPronin  Год назад +1

      @@germanmariot34 потому и набираем новых

  • @IlyaChaplenko
    @IlyaChaplenko Год назад +1

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

    • @AndyPronin
      @AndyPronin  Год назад +1

      t.me/RUclipsPronin тут время от времени планирую розыгрыши делать

  • @ИгорьВолохо-ш6з
    @ИгорьВолохо-ш6з Год назад

    Здравствуйте,как к Вам попасть?Начинающий разраб на пайтон,очень хочу попробовать свои силы в тестовом собеседовании.

    • @AndyPronin
      @AndyPronin  Год назад

      Привет. Студент практикума?

  • @Wein4ik
    @Wein4ik Год назад

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

    • @AndyPronin
      @AndyPronin  Год назад

      Прошу прощения, на это нет ресурса. Я не настоящий ютубер

  • @PZDC_1988
    @PZDC_1988 Год назад

    Ну и здесь ошибка на превьюхе😊

    • @AndyPronin
      @AndyPronin  Год назад +1

      Не ошибка, а тонкий пристёб

  • @dartaulus
    @dartaulus Год назад

    path=input().split()
    count=0
    for i in range(len(path)-1):
    if path[i]!=path[i+1] and path[i]=='d':
    count+=1
    print(count)
    но значения должны подаваться через пробел =(

    • @Piro_
      @Piro_ Год назад

      path = [i for i in input()] если надо без пробела.

  • @mandico21
    @mandico21 Год назад

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

    • @AndyPronin
      @AndyPronin  Год назад

      Студент практикума?

    • @mandico21
      @mandico21 Год назад

      @@AndyPronin нет

    • @AndyPronin
      @AndyPronin  Год назад

      @@mandico21 t.me/RUclipsPronin тогда тут ждать розыгрыша

  • @ChillMouse
    @ChillMouse Год назад +1

    Чел на Панфилова Никиту похож

  • @lexomonov2843
    @lexomonov2843 Год назад +3

    Да ужжж , такой человечек, судя по его бэкграунду должен собеседоваться на мидл, а то все Джуны после такого как то пропадают 😅

    • @flower-py
      @flower-py Год назад

      А "после такого" - это после чего? И "пропадают" - куда пропадают?

  • @rrrreetreereerrerrrr
    @rrrreetreereerrerrrr Год назад

    че вы там курите что такие задачи придумывать? тоже хочу закупить

    • @AndyPronin
      @AndyPronin  Год назад +1

      Олег в Амстердаме, вроде... у нас нелегально

  • @MrBeltalowda
    @MrBeltalowda Год назад +1

    def count_valleys(path, height=0):
    return str([0] + [height := height + 1 if direction == 'u' else height - 1 for direction in path]).count("0, -1")
    Ютуб съел прошлый комментарий с однострочником

    • @vadim1398
      @vadim1398 Год назад

      Проверь uudddudu

    • @MrBeltalowda
      @MrBeltalowda Год назад

      @@vadim1398 2, как и должно быть

    • @dmitriynayanov6428
      @dmitriynayanov6428 Год назад

      Что за двоеточие в height := height + 1 ?
      Что-то не понимаю такое выражение

    • @MrBeltalowda
      @MrBeltalowda Год назад +1

      ​@@dmitriynayanov6428 это моржовый оператор. он позволяет задавать значение переменной внутри выражения. появился в питоне 3.8

    • @vadim1398
      @vadim1398 Год назад

      @@MrBeltalowda должно быть 2, а получается 0

  • @ptn_hlo
    @ptn_hlo Год назад +2

    По-моему, человеку в очках он сразу не зашёл после ответа на вопрос: "почему выбрали нашу компанию". Просто потому что у вас открыта вакансия, потому и выбрал. Ну а вообще душноват этот человечек в очках, я б под такое начало не пошёл. Кандидат улыбается, шутит, этот сидит, как сыч.

    • @Swetocopy
      @Swetocopy Год назад

      Ну собес это не про смехуечки, а про знания. Посмеяться и обменяться любезностями можно в начале при знакомстве и в конце. Мужик местами не к месту угарает) Легко сдается, не пытается найти решения, даже того, что уже делал. Шаг влево, шаг вправо и "на курсе этого не было". Даже для студента не знать, что такое orm и т.п. - плохо. Использует библиотеки асинхронные, но не знает как они работают. Такого человека надо постоянно контроллить и направлять. Это конечно в целом ок, без менторства прогресс будет хуже, но важно уметь задавать вопросы, уточнять и учиться самостоятельно, ментор не няня.

    • @ptn_hlo
      @ptn_hlo Год назад

      @@Swetocopy какие курсы, такие и знания, раз шаг вправо/влево - проблема. Что хорошо знать, а что плохо понятно только из собеседований и дальнейшего опыта. Или все всё сразу знают? На велосипеде тоже надо учиться ездить. Первое время можно и понянчить, корона не упадёт.

    • @ptn_hlo
      @ptn_hlo Год назад

      @@Swetocopy друг до этого кем работал, если не секрет?

    • @ptn_hlo
      @ptn_hlo Год назад

      @@Swetocopy т.е., у него бэкграунд программиста имеется, верно? Курсы обещают повара превратить в программера за полгода. Это шляпа, на которую все ведутся. Превратится тот, у кого куча свободного времени и понимание, что конкретно изучать. Создание ботов? разработка сайтов вместе с django? Аналитика с pandas? Каждое из этих направлений можно изучать долго.