Смурова Елена собеседование Junior python разработчк

Поділитися
Вставка
  • Опубліковано 26 гру 2024

КОМЕНТАРІ • 83

  • @bunasha
    @bunasha Рік тому +17

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

  • @flower-py
    @flower-py Рік тому +4

    Первый метод:
    sorted(..., key = len)
    Второй метод:
    from collections import Counter
    Третий метод:
    len([s for s in text if s in ".,/';][ и так далее]). Это если без гугла, а гугл показывает, что есть ещё метод "s.isalnum()", который ещё гораздо все упрощает
    Четвертый метод:
    сделать список words с помощью split(), потом ", ".join(w for w in words if w == w[::-1])

    • @e-oyu6564
      @e-oyu6564 2 місяці тому

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

  • @EduardMalinochka
    @EduardMalinochka Рік тому +10

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

  • @vortex610
    @vortex610 Рік тому +2

    В первом методе чеки не прошли. Оно зависло на while навечно :) while - опасная штука ))

  • @Maine__Coon__1
    @Maine__Coon__1 Рік тому +2

    Андрей, Елена спасибо🙏

  • @7IdE
    @7IdE Рік тому +6

    Ну, весьма противоречивые чувства.
    Скажем так: если выкинуть все минусы и ошибки вида off-by-one, то я бы сказал что-то типа "+-".
    Из минусов:
    1. Питона она не знает. Прям совсем. Банальный сплит решил бы много проблем.
    2. В скрипте бесконечный цикл - поэтому не было ошибок в ассертах - функция просто не завершилась.
    3. isalpha() - проверяет: буква или нет. То есть, все цифры попадут в счетчик спецсимволов.
    4. Проверка на палиндром в целом не рабочая: и регистр может быть разный, и цифры могут быть.
    5. Использование 2 while это, конечно, можно, но внутренний словит IndexError, если строка будет заканчиваться на спецсимволах.
    6. Также циклы некорректно отработают в случае вида "word, word, word" - k будет указывать на пробел, в итоге след. слово будет не "word", а " word". Ну и нет обработки граничный условий (последнее слово).
    В целом, вроде бы логика и рассуждения есть. Изучить Питон, порешать алгосы - и будет норм, КМК.

    • @furiousrunner4388
      @furiousrunner4388 Рік тому +1

      давай солидарны будем: это пока что в реале доподготовка, но не оффер)

    • @6awup
      @6awup Рік тому

      Вы сеньор? 😮

    • @AndyPronin
      @AndyPronin  Рік тому +2

      Акелла промахнулся, походу (

    • @7IdE
      @7IdE Рік тому +1

      ​@@AndyPronin, ну, не на постоянной же основе без ошибок жить.

    • @mikeofs1304
      @mikeofs1304 Рік тому +1

      А я вот думаю шта пехона не знаешь ты. Давай сплитани мне вот такую строку по словам "cat^$,*89home,9843r2*&#*@ggg#$*(Long(@9,8025--" И да способ разбить одной строкой есть, но это регекспы

  • @ВасилийБаритонов-щ5ы
    @ВасилийБаритонов-щ5ы 5 місяців тому

    А можно мне себя предложить на вакансию?

  • @EkaterinaSimakova-p5f
    @EkaterinaSimakova-p5f 4 місяці тому

    Я считаю она молодец. В условии стресса не плохо так сообразила, логика работает, а руку постепенно набьет. Я вот как решила. Я только начинаю программировать, поэтому не судите строго.
    class Text:
    def __init__(self, text):
    self.text = text
    def list_words(self):
    # Normalize text: lowercase and split into words
    words = re.findall(r'\b\w+\b', self.text.lower())
    # Remove empty strings that may result from the split
    words = [word for word in words if word]
    return words
    def longest_word(self):
    words = self.list_words()
    return max(words, key=len) if words else None
    def most_frequent_word(self):
    words = self.list_words()
    count_words = {}
    for word in words:
    if word in count_words:
    count_words[word] += 1
    else:
    count_words[word] = 1
    # Find the word with the highest frequency
    most_frequent = None
    max_count = 0
    for word, count in count_words.items():
    if count > max_count:
    max_count = count
    most_frequent = word
    return most_frequent
    def spec_symbols(self):
    list_symbols = [".", "!", ":", ","]
    count = sum(1 for symbol in self.text if symbol in list_symbols)
    return count
    def palindrom(self):
    words = self.list_words()
    list_palindrom = [word for word in words if len(word) > 1 and word == word[::-1]]
    return list_palindrom

  • @ВасилийБаритонов-щ5ы
    @ВасилийБаритонов-щ5ы 5 місяців тому

    Где она работу находила? Я все задачи за полчаса написал.
    Первая и последняя решаются в одну строку.
    Регулярку и счетчик из коллекции использовал

  • @Maine__Coon__1
    @Maine__Coon__1 Рік тому +2

    Эх, прям себя увидел, 🙂 спасибо за собес 🤝

  • @NikitaGriboedov
    @NikitaGriboedov Рік тому +6

    Прикол, найти самое длинное слово, а она находит длину.😅 И Андрея это не смутило. Проверка палиндрома уходит в бесконечный цикл. Неужели сложно запустить код?

  • @Kotemur1
    @Kotemur1 Рік тому +1

    Важное качество для программиста - читать сообщения об ошибках. Меня больше всего шокировало, что простая ошибка "TypeError: < не поддерживается для int и range" вызвала не очевидный поиск тривиальной ошибки уровня опечатки, а какие-то жонглирования с типом Exception при валидации параметра, перемещением этой проверки и т.п. - вообще в другом месте. Сразу в строку с ошибкой разве нельзя посмотреть - всё же подсвечивается?

  • @user-vv8sx2th6r
    @user-vv8sx2th6r Рік тому +4

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

    • @AndyPronin
      @AndyPronin  Рік тому +5

      Что не убьёт, то сделает сильнее

    • @ВасилийБаритонов-щ5ы
      @ВасилийБаритонов-щ5ы 5 місяців тому

      ​​@@AndyProninа можно мне попробовать? Эти задачи я за 30 мин решил, первая и последняя в одну строку. Библиотеки re и Counter. Еще C знаю на базовом. Делаю проекты на ардуино под ключ

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

      @@ВасилийБаритонов-щ5ы в телеграмме розыгрыши время от времени проводятся. Участвуй и получится

  • @WDemidenko
    @WDemidenko Рік тому

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

    • @alexz7537
      @alexz7537 10 місяців тому

      Не совсем понял твою идею (интересно было бы посмотреть код), но вопрос такой: а когда упадет какой-то кусок с решением определенной задачи, как будешь фиксить? При добавлении новых задач функция разрастется на сотни строк кода, как поддерживать будешь? И очень хотелось бы посмотреть на юнит-тесты! :)

  • @baltictea7342
    @baltictea7342 Рік тому +1

    Вместо .isalpha() лучше использовать .isalnum(), так как числа могут быть палиндромами (101, 2442, 333333 и т.д.)

    • @AndyPronin
      @AndyPronin  Рік тому

      да. согласен

    • @vitaliy3521
      @vitaliy3521 Рік тому

      @@AndyPronin А я не согласен, с таким подходом '7a7a7a7a7a7a7a7a' может быть самым длинным словом, а это не слово :)

    • @AndyPronin
      @AndyPronin  Рік тому

      @@vitaliy3521 ах жеж ты же)

  • @AlexSav
    @AlexSav Рік тому +2

    Похоже оба профнепригодные. Как можно не заметить, что программа в бесконечном цикле повисла?

    • @AndyPronin
      @AndyPronin  Рік тому

      Ага

    • @Chel1k7
      @Chel1k7 Рік тому

      Андрей просто не такой душнила, как в чате ))

  • @pjerli7157
    @pjerli7157 Рік тому +1

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

    • @НиколайРюмин-й6и
      @НиколайРюмин-й6и Рік тому

      Патамушта

    • @Chel1k7
      @Chel1k7 Рік тому +2

      Я бы пошутил про women, но тут почти все такие выпускники яп))

  • @ivanabdullaev859
    @ivanabdullaev859 Рік тому

    А что это за голодные игры? и еще вопрос , там функциональной парадигме учат у вас?

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

    То-то фамилия знакомая. Моя студентка это.

  • @furiousrunner4388
    @furiousrunner4388 Рік тому +3

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

    • @Konstantin_Stalnov
      @Konstantin_Stalnov Рік тому +6

      Зачем тут вообще трогать слоты, делиттер и сеттер?
      Самое что, это невнимательность чтения условия!!!
      Запрос был на вывод слов, а выводилась длина слова!

    • @furiousrunner4388
      @furiousrunner4388 Рік тому

      @@Konstantin_Stalnov чего ты заводишься? я же написал от себя потому что до меня уже по работе кода дали основные ошибки, марку держу как никак)

    • @Konstantin_Stalnov
      @Konstantin_Stalnov Рік тому +3

      @@furiousrunner4388 нет, я вообще норм! Просто рассуждаю! Уважаю мнение всех! Без наезда!

    • @7IdE
      @7IdE Рік тому +3

      Ну, "слоты, проперти исключив сеттер и делетер" - это оверинжиниринг, как по мне.
      Тут, КМК, достаточно скрыть text в __text.
      А вот что реально стоило бы сделать - вынести в отдельный метод разбиение текста на слова и записать слова в какой-нибудь приватный метод - в целях переиспользования.

    • @EduardMalinochka
      @EduardMalinochka Рік тому +2

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

  • @deo1133
    @deo1133 Рік тому

    По самому длинному слову
    У вас бесконечный цикл.
    По этой причине и тесты якобы прошли все

  • @МойПовелитель-о9е

    max(arr, key=len/count) вот решение…

    • @AndyPronin
      @AndyPronin  Рік тому

      Вспомнить max в режиме с колёс не так просто, мне кажется

    • @НиколайРюмин-й6и
      @НиколайРюмин-й6и Рік тому

      @@AndyPronin но спускаться на уровень писания на сях это не ответ. Ответ , я думаю, подумать.

    • @НиколайРюмин-й6и
      @НиколайРюмин-й6и Рік тому

      Тем более что делать в таком случае со словами с апострофом вовнутрях типа isn't

    • @cyber_engine
      @cyber_engine Рік тому

      @@НиколайРюмин-й6и зато показала что она на сях писать умеет. уже умнее среднестатистического питонизта :3

    • @furiousrunner4388
      @furiousrunner4388 Рік тому

      ​@@cyber_engine Ааа теперь понятно, почему моё решение назвал говном, да ты сам чувак говнокодер, если так уверен, что это гуд уровень, тьфу на тебя, ещё один микротик)))

  • @virnus1
    @virnus1 Рік тому +1

    18:18 Чуть со стула не упал, зачем так кричать.

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

    Первый получается

  • @2173045
    @2173045 Рік тому +2

    Душные комментаторы такие.
    Девушка молодец, но есть над работать.

    • @rau149
      @rau149 Рік тому

      Да не, без знаний С она непригодна

    • @Flonesko
      @Flonesko 10 місяців тому +2

      Да ей на заводе место

  • @dontkillmyvibe0
    @dontkillmyvibe0 Рік тому +1

    На таких собесах когда еще и запись идет можно сильно переволноваться, что у меня собственно и было, поэтому какие-то глупые ошибки точно можно простить. Накидал за несколько минут решение задачки, чтобы сравнить с тем что получилось в итоге, но не ожидал что девушка будет все вот так прямо решать. В любом случае молодец, но над базой надо работать это факт.
    Мое решение за 5 мин на коленке, может где-то ошибся, особо его не тестировал, просто то что сходу пришло:
    from collections import Counter
    import string
    class Text:
    def __init__(self, text:str):
    self.txt = text
    self.words = [i.strip() for i in self.txt.split()]
    def longest(self):
    return sorted(self.words, key = len)[-1]
    def more_used(self):
    return max(Counter(self.words))
    def special_symbols(self):
    return len(list(filter(lambda x: x in string.punctuation, self.txt)))
    def polindroms(self):
    l = []
    for i in self.words:
    if i == i[::-1] and i.isalpha():
    l.append(i)
    return ','.join(l)

    • @rau149
      @rau149 Рік тому

      Вы трансгендерной ориентациия?