Собеседование python-разработчик Иван

แชร์
ฝัง
  • เผยแพร่เมื่อ 11 ม.ค. 2025

ความคิดเห็น • 45

  • @userGerostoos
    @userGerostoos 2 หลายเดือนก่อน +3

    Иван молодец, так держать!

  • @duckwasfirst
    @duckwasfirst 2 หลายเดือนก่อน +1

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

  • @Hope-h7x
    @Hope-h7x 2 หลายเดือนก่อน +4

    Убила фраза ‘не дай бог, читать ’ )

  • @AllBlackMSK
    @AllBlackMSK 2 หลายเดือนก่อน +1

    Блен, я бы с радостью тоже на собес залетел, чисто знания затестить, но по воле случая подарил такую возможность коллеге по цеху(

  • @hsqlk
    @hsqlk 2 หลายเดือนก่อน +2

    Почему все собеседования однотипные и далеки от жизни: реши алго задачку(причем пиши код в каком-то текстовом редакторе) расскажи теорию по языку. Практически никто не спрашивает про CI/CD, Docker, Kubernetes(хотя бы поверхностно) какие есть проблемы у данных технологии/почему их стоит использовать и тд и тп. На одном языке практически ничего невозможно сделать…

  • @ЗНАКОМЫЙСВАРЩИК
    @ЗНАКОМЫЙСВАРЩИК หลายเดือนก่อน +1

    Я бы отсортировал по длине фамилии и удалил фио которое стоит в середине

  • @7IdE
    @7IdE 2 หลายเดือนก่อน

    Ооо, древнее зло пробудилось и начало видосики заливать! :D
    P.S. Харош болеть уже.

  • @TOPTIER-un3dp
    @TOPTIER-un3dp 2 หลายเดือนก่อน +4

    50:23 надо минимальную разницу от среднего значения брать. Выяснить индекс минимального значения и удалить из списка ФИО по индексу. А так, я бы через словари реализовал. Но я бы также переволновался и тупил😅 Мишутка, 2й месяц изучения пайтона с нуля ;)

  • @MaximShaybakov
    @MaximShaybakov 2 หลายเดือนก่อน

    Как попасть к вам на собеседование?

  • @meyo399
    @meyo399 2 หลายเดือนก่อน +1

    Спасибо за видео. Но я не понял. Это реальное интервью? Я так понимаю, что этих знаний не достаточно, для получение работы. В тестовых заданиях ведь не только python, но и Django , docker и прочее.

    • @RomanAndr
      @RomanAndr 2 หลายเดือนก่อน

      @@meyo399 mock интервью, не настоящее

    • @MrBeltalowda
      @MrBeltalowda 2 หลายเดือนก่อน +1

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

    • @meyo399
      @meyo399 2 หลายเดือนก่อน

      @@MrBeltalowda я это понимаю. Я по другое. Почекай вакансии там нигде не написано, что знание питона. Везде связка с Django и подобными библиотеками. Это ещё нужно выучить Джанго, HTML, CSS, базы данных и прочее.

    • @gucci1260
      @gucci1260 2 หลายเดือนก่อน +2

      Django , docker и прочее это инструменты , сегодня Django завтра что то другое , а пайтон это база , без него ты этими инструментами пользоваться не сможешь

    • @imadna5810
      @imadna5810 2 หลายเดือนก่อน

      @@gucci1260 народ не выкупает, что тот же джанго, это по сути кастомый набор классов наспанных на питоне

  • @XbyM
    @XbyM 2 หลายเดือนก่อน

    А собесы проходят только для тех кто из яндекса?

    • @imadna5810
      @imadna5810 2 หลายเดือนก่อน +3

      yep, плебсы только наблюдают

  • @Vjqifg
    @Vjqifg 2 หลายเดือนก่อน +3

    Сам подход неправильный. Надо отсортировать список по длине фамилий и убрать средний элемент списка.

    • @capstanfearless
      @capstanfearless 2 หลายเดือนก่อน

      Бинго!

    • @evgenysdrv887
      @evgenysdrv887 2 หลายเดือนก่อน +1

      На сколько я понял, что речь про количество букв в фамилии, а если будет, например, в отсортированном списке [5, 5, 6, 7, 8, 11](речь про количество букв в фамилии), то средний элемент по количеству букв это 8, а в середине списка 6 или 7, то ответ будет не правильным или нет?
      Как я понимаю, задача на то как человек будет подходить к задаче и как он думает какие уточняющие вопросы задает и т.д.

    • @Dim78888
      @Dim78888 2 หลายเดือนก่อน +2

      а если 2 или больше с одинаковрй длийнной? или четное колличество записей? У вас получается медианное значение, а у участника среднее арифметическое.

    • @Vjqifg
      @Vjqifg 2 หลายเดือนก่อน

      @@Dim78888 Так медианное важнее. А если будет одна фамилия их двух букв(Ли) и 20 фамилий из 10 букв?

    • @Dim78888
      @Dim78888 2 หลายเดือนก่อน +1

      @@Vjqifg 🙂 они для разного существуют и оба важны. В условии задания среднее значение, а не медианное.

  • @ivanhom94
    @ivanhom94 2 หลายเดือนก่อน +3

    Подопытный Иван всё-таки решил эту задачу таким образом:
    from typing import List
    fio = """Иванов И. И.

    Смирнович П. П.

    Ким Ю. Л."""
    fio_list = [fio for fio in sorted(fio.split('
    ')) if fio]
    def remove_avg_surname(fio_lst: List[str]) -> List[str]:
    """Удаление ФИО из списка, длина фамилии которого близка к
    среднему значению длин фамилий остальных ФИО.
    """
    if not fio_lst or type(fio_lst) is not list:
    return []
    # Считаем длину каждой фамилии в списке ФИО
    surnames_len = [(len(fio.split()[0]), fio) for fio in fio_lst]
    # Находим среднюю длину фамилий
    avg_len = sum(map(lambda x: x[0], surnames_len)) // len(surnames_len)
    # Находим отклонение длины каждой фамилии от средней длины
    deltas = [(abs(avg_len - surn[0]), surn[1]) for surn in surnames_len]
    # Получаем самую первую фамилию с минимальным отклонением
    avg_surname = sorted(deltas, key=lambda x: x[0])[0][1]
    # Удаляем ФИО из исходного списка
    fio_lst.remove(avg_surname)
    return fio_lst

    • @ivanhom94
      @ivanhom94 2 หลายเดือนก่อน +1

      И тесты для проверки:
      assert remove_avg_surname([]) == []
      assert remove_avg_surname('не список') == []
      assert remove_avg_surname(['Чапаев В. И.']) == []
      assert remove_avg_surname(
      ['Ивановов И. И.', 'Смирнович П. П.', 'Ким Ю. Л.']
      ) == ['Смирнович П. П.', 'Ким Ю. Л.']
      assert remove_avg_surname(
      ['Смирнович П. П.', 'Ким Ю. Л.', 'Велес И. И.']
      ) == ['Смирнович П. П.', 'Ким Ю. Л.']
      assert remove_avg_surname(
      ['Смирнович П. П.', 'Кимченко Ю. Л.', 'Велес И. И.']
      ) == ['Смирнович П. П.', 'Велес И. И.']
      assert remove_avg_surname(
      ['Кимченко Ю. Л.', 'Велес И. И.']
      ) == ['Кимченко Ю. Л.']
      assert remove_avg_surname(
      ['Биба Ю. Л.', 'Боба И. И.']
      ) == ['Боба И. И.']
      assert remove_avg_surname(
      ['Боба И. И.', 'Биба Ю. Л.']
      ) == ['Биба Ю. Л.']
      assert remove_avg_surname(
      ['Боба Я. И.', 'Боба Ю. Л.']
      ) == ['Боба Ю. Л.']
      assert remove_avg_surname(
      ['Шу И. И.', 'Шуб Ю. Л.', 'Шуба Ю. Л.', 'Шубад Ю. Л.', 'Шубадубадубаев Ю. Л.']
      ) == ['Шу И. И.', 'Шуб Ю. Л.', 'Шуба Ю. Л.', 'Шубадубадубаев Ю. Л.']
      assert remove_avg_surname(
      ['Шу И. И.', 'Шубадубадубаев Ю. Л.']
      ) == ['Шубадубадубаев Ю. Л.']

    • @dmitrikolesnikov9762
      @dmitrikolesnikov9762 หลายเดือนก่อน

      Добрый день. Какую фамилию нужно удалить из этого перечня?
      fio = """Шу И. И.

      Шубад Ю. Л.

      Шубаду Ю. Л.

      Шуб Ю. Л.

      Шуба Ю. Л.

      Шубадубадубаев Ю. Л."""
      По этим расчетам (2 + 3 + 4 + 5 + 6 + 14) / 6 = 5.67 нужно удалить фамилию с шестью буквами. Ваш код так работает?
      Если что, не пытаюсь уличить вас в ошибке. Мой код работает иначе, и хочется понять, как правильно)

    • @ivanhom94
      @ivanhom94 หลายเดือนก่อน

      ​@@dmitrikolesnikov9762 Привет!
      В основном так, но у меня идёт целочисленное деление. Поэтому вместо 5.67 (что логично округлить до 6) у меня бы средняя длина фамилии в этом примере была равна 5.
      Поэтому, по моему коду должна удалиться фамилия - Шубад.
      Ну а вообще ты хороший пример привёл, который показывает, что с математической точки зрения было бы правильнее округлять до 6 и удалить фамилию - Шубаду.
      Поэтому в этой задаче всё зависит от способа округления.
      Самое прикольное в том, что не надо было так заморачиваться и Андрей вообще ожидал от меня решение типа "в отсортированном списке удалить средний по индексу или ближайший к нему элемент", что делается в две строчки кода, но меня куда-то не в ту степь понесло.

  • @TheLineHit
    @TheLineHit 2 หลายเดือนก่อน

    Решение с фамилией, длина которой ближе к середине. Ближе это не значит +- в обе стороны, это значит максимально близко.
    Решение,, список отсортирован уже по длине фамилий:
    new_surname = sorted(list(map(lambda x: x.split(), arra)), key=lambda x:len(x[0]))
    while len(new_surname) > 1:
    new_surname.pop(new_surname.index(max(new_surname, key=lambda x:len(x[0]))))
    new_surname.pop(new_surname.index(min(new_surname, key=lambda x:len(x[0]))))
    print(f' result {new_surname}')

  • @itarea2522
    @itarea2522 2 หลายเดือนก่อน +1

    def delete_one_avg_len_fio(list_fio: list) -> list:
    ''' Удалить из списка фио наиболее близкое к середине (только одну, по длине символов) '''

    list_count_words = list(map(lambda x: len(x.split()[0]), list_fio))
    sr_count = (max(list_count_words) + min(list_count_words)) / 2
    key_word = 0
    find_word = max(list_count_words)
    for key, value in enumerate(list_count_words):
    if value == sr_count:
    key_word = key
    break
    if max(list_count_words) > value > min(list_count_words) and abs(value - sr_count) < find_word:
    find_word = abs(value - sr_count)
    key_word = key
    list_fio.pop(key_word)
    return list_fio

    • @itarea2522
      @itarea2522 2 หลายเดือนก่อน

      Не ругайтесь сильно!

  • @gucci1260
    @gucci1260 2 หลายเดือนก่อน +4

    text = '''Бабинець Ринат Германович

    Жебраков Иван Максимович

    Муханкин Виталий Вадимович

    Перфирьев Руслан Константинович

    Табачник Ян Ефимович

    Тинаев Виталий Викторович

    Цизин Ринат Валентинович

    Черемисинов Михаил Денисович'''
    def func(txt):
    txt = txt.split('

    ')
    txt = sorted(txt, key=lambda x: len(x.split()[0]))
    return [x for x in txt if txt.index(x) != len(txt)//2]
    вроде работает
    p.s Курсы не проходил , учусь из интернета пару месяцев.
    Не судите строго

    • @gucci1260
      @gucci1260 2 หลายเดือนก่อน

      а ну если тоже Бибенца удалять то вот так
      if txt.index(x) != len(txt) // 4

    • @МихаилКасаткин-р6д
      @МихаилКасаткин-р6д 2 หลายเดือนก่อน

      Это не нужно: [x for x in txt if txt.index(x) != len(txt)//2]
      Проще исключить по индексу через pop(len(txt)//2)

    • @ivanhom94
      @ivanhom94 2 หลายเดือนก่อน +1

      Решение не является правильным. Ниже объясняю пример.
      print(func('Шу И. И.

      Шуб Ю. Л.

      Шуба Ю. Л.

      Шубад Ю. Л.

      Шубадубадубаев Ю. Л.'))
      Здесь у нас пять фамилий. Средняя длина этих пяти фамилий равна 5, т.к. ((2+3+4+5+14) // 5) == 5
      Следовательно, мы должны удалить фамилию "Шубад", которая ближе всего к среднему значению длин всех фамилий.
      Но по логике твоего алгоритма, мы удалим человека с фамилией "Шуба"

    • @gucci1260
      @gucci1260 2 หลายเดือนก่อน

      @@ivanhom94
      def func(txt):
      txt = txt.split('

      ')
      txt = sorted(txt, key=lambda x: len(x.split()[0]))
      average = sum([len(x) for x in txt]) // len(txt)
      return [x for x in txt if len(x) != average]
      получается что так?

    • @gucci1260
      @gucci1260 2 หลายเดือนก่อน

      C проверкой
      def func(txt):
      if not txt:
      return []
      txt = txt.split('

      ')
      average = sum(len(x) for x in txt) // len(txt)
      return [x for x in sorted(txt, key=lambda x: len(x.split()[0])) if len(x) != average]

  • @morzellen
    @morzellen 2 หลายเดือนก่อน

    '''
    Надо убрать переносы строк в списке полных имён,
    отсортировать список полных имён по алфавиту и написать функцию,
    которая должна удалять из изначального массива отсортированных полных имён то полное имя,
    длина фамилии которого равна или близка к значению средней длины всех фамилий в ней.
    '''
    fullname_list = '''Бабинець Ринат Германович

    Жебраков Иван Максимович

    Муханкин Виталий Вадимович

    Перфирьев Руслан Константинович

    Табачник Ян Ефимович

    Тинаев Виталий Викторович

    Цизин Ринат Валентинович

    Черемисинов Михаил Денисович'''
    sorted_fullname_list = sorted(fullname_list.split('

    '))
    def process_sorted_fullname_list(sorted_fullname_list: list[str]) -> list[str]:
    surnames = [sorted_fullname.split()[0] for sorted_fullname in sorted_fullname_list]
    surnames_lengths = [len(surname) for surname in surnames]
    average_surnames_lengths = round(sum(surnames_lengths) / len(surnames_lengths))
    differences = [abs(len(surname) - average_surnames_lengths) for surname in surnames]
    min_difference = min(differences)
    return [fullname for fullname, difference in zip(sorted_fullname_list, differences) if difference != min_difference]
    def process_sorted_fullname_list_2(sorted_fullname_list: list[str]) -> list[str]:
    surnames_lengths = []
    differences = []

    for sorted_fullname in sorted_fullname_list:
    surnames_lengths.append(len(sorted_fullname.split()[0]))
    average_surnames_lengths = round(sum(surnames_lengths) / len(surnames_lengths))
    differences.append(abs(len(sorted_fullname.split()[0]) - average_surnames_lengths))
    return [fullname for fullname, difference in zip(sorted_fullname_list, differences) if difference != min(differences)]
    print(process_sorted_fullname_list(sorted_fullname_list))
    print(process_sorted_fullname_list_2(sorted_fullname_list))
    У меня возникла дилемма:
    Первая функция проигрывает по памяти, но выигрывает по скорости.
    Вторая функция проигрывает по скорости, но выигрывает по памяти.
    Какая функция более эффективная и почему? Сам склоняюсь к первой.

    • @РамисСабирзянов-ъ4г
      @РамисСабирзянов-ъ4г 2 หลายเดือนก่อน +1

      Классное решение! 2 ое не разглядывал, но 1ая функция у вас удалит сразу двоих. Как я понял из дачи, нужно кого-то одного.

  • @nvig6636
    @nvig6636 2 หลายเดือนก่อน +1

    def filter_out_average_length_names(text: str) -> List[str]:
    full_names = text.split("

    ")
    last_names = [name.split()[0] for name in full_names]
    average_length = sum([len(last_name) for last_name in last_names]) / len(last_names)
    min_diff = min([abs(len(last_name) - average_length) for last_name in last_names])
    last_names = [last_name for last_name in last_names if abs(len(last_name) - average_length) > min_diff]
    return [name for name in full_names if name.split()[0] in last_names]

    • @ivanhom94
      @ivanhom94 2 หลายเดือนก่อน

      Почти правильно.
      Проверь теперь что выведет:
      print(filter_out_average_length_names('Боба И. И.

      Биба Ю. Л.'))
      print(filter_out_average_length_names(''))

  • @TheLineHit
    @TheLineHit 2 หลายเดือนก่อน

    Решение задачи с именами в одну строку:
    def func():
    return sorted([' '.join(names.split()[i - 3:i]) for i in range(3, len(names.split()), 3)], key=lambda x: x[0])