Собеседование python разработчк Артем Меньшиков (Северодвинск)



https://t.me/YoutubePronin
Чат для общения pyhton разработчиков и им сочуствующих. Свободное общение, тестовые и вопросы с собесов и прочее. Заходите, там вам рады.

https://www.tinkoff.ru/rm/pronin.andrey156/e4bDZ32567 начинаю сбор на книжку с крабом
Если Тиньков не даёт перечислить, стукните в личку телеги andpronin, придумаем что нибудь

Мой канал про обучению python с нуля и до мидла Андрей+=Пронин
https://www.youtube.com/@PyPronin

Я в других сетях
🔗Вконтакте: https://vk.com/CaptPronin
🔗Дзен: https://zen.yandex.ru/id/5fbd339194125f2d5e98e900?lang=ru

#python #питон #программирование #Андрей_Пронин #собеседование #

jobscat.net
Напишите ваши выводы

  1. Сосед

    Благодарю , классно!😇
    Вопросики может будут в тему:
    1) про ListComprehansion,
    2) про сеттеры интересно послушать.

    Ответить
  2. Павел Благарь

    Почему не count(0) и extend([0]*x) ?

    Ответить
  3. ТИМУР Керсанов

    Он же это не написал

    Ответить
  4. Павел Благарь

    zeros = lambda lst: list(filter(lambda x: bool(x), lst))+[0]*lst.count(0)

    Ответить
  5. Павел Благарь

    zeros = lambda lst: sorted(lst, key=lambda x: not bool(x))

    Ответить
  6. Cute Alister

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

    Ответить
  7. dimka s

    идеальнее решения не найдёте)
    O(n) по времени
    O(1) по памяти
    с сохранением порядка элементов и переносом нулей в конец

    def moveZeroes(nums):

    idx = 0

    zero = None

    while idx < len(nums):

    if nums[idx] == 0 and zero is None:

    zero = idx

    idx += 1

    continue

    if nums[idx] != 0 and zero is not None:

    nums[idx], nums[zero] = nums[zero], nums[idx]

    zero = zero + 1

    idx += 1

    return nums

    Ответить
  8. Rvnclaw

    Пасатрити, я тоже умный:
    dq = deque()
    for i in listus:
    dq.append(i) if i == 0 else dq.appendleft(i)

    Ответить
  9. ASFlasher

    Досмотрел пока до 17:30 и не понял почему это N log(N) лучше чем N? может дальше объясняется что это рофл, но пока не похоже..

    Ответить
  10. slizverg23

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

    Ответить
  11. Denis Migalin

    a = [0,1,0,-3,-5,0,2,14,5235,0,0,3,5,0] # For Example

    b = []

    r = 0

    for i in range(len(a)):

    if a[i] > 0 or a[i] < 0:

    b.insert(i-r,a[i])

    elif a[i] == 0:

    b.append(0)

    r += 1

    x = True

    while x:

    q = 0

    for i in range(1,len(b)):

    if b[i] == 0:

    break

    elif b[i-1] > b[i]:

    b[i-1], b[i] = b[i], b[i-1]

    q += 1

    if q == 0:

    x = False

    RESULT: b = [-5, -3, 1, 2, 3, 5, 14, 5235, 0, 0, 0, 0, 0, 0]

    Ответить
  12. Антон Шавермин

    По классике лайк от СЕООНЛИ))

    Ответить
  13. RusPeople21

    17:32 А с каких пор O(n log n) лучше чем O(n)?

    Ответить
  14. Ilya Chaplenko

    Встретились как-то Андрей и андрей

    Ответить
  15. Galo Gramma

    Расшаривай экранчик звучит как снимай штанишки))

    Ответить
  16. Vitaliy

    Я вот так задачку решил:
    sorted(int_lst, key=lambda x: x == 0)
    Блин потом так же решили 😀

    Ответить
  17. Alexsey Dugin

    sorted(int_lst, key=abs, reverse=True)

    Ответить
  18. Karaku

    Когда уже будем Лутца читать?:(

    Ответить
  19. Александр Мальшаков

    Найти себя в прошлом и…. устроить себе собес, очень профессионально. 😊

    Ответить
  20. Матвей Чекашов

    Добрый день, тоже часто собеседую людей, и хотел поделиться списком своих вопросов. Может захотите опробовать пару из них в будущих собесах. Кстати, видео супер!
    1) Что такое HTTP

    2) Протоколы типа HTTP

    3) Чем отличается авторизация от аутентификации

    4) Что такое cookies

    5) Что такое session

    6) Что такое веб уязвимость?

    1) Виды типизации?

    2) Что такое переменная

    3) Типы данных

    4) Словари в Python

    5) Виртуальное окружение

    6) Как узнать версию Python

    1) Что такое/зачем ООП

    2) Принципы ООП (интересует абстракция)

    3) Что такое магические методы и какие знаешь

    Тестовое задание: Учитывая строку слов, вам нужно найти слово с самым высоким баллом. Баллы слов, это их номер: a = 1, b = 2, c = 3 и тд. Вам нужно вернуть слово с самым высоким счетом в виде строки. Если два слова имеют одинаковый балл, верните слово, которое появляется раньше в исходной строке. Все буквы будут строчными, и все входные данные будут действительны.

    Ответить
  21. Мандапорец

    первую задачку так решил
    int_lst = [randint(0, 9) for i in range(50)]

    for i in range(int_lst.count(0)):

    int_lst.remove(0)

    int_lst.append(0)

    Ответить
  22. 7IdE

    Ну, в целом, норм, наверно.

    Из плюсов:

    1. В целом, чувствуется, что код он пишет далеко не в первый раз — и несколько строк сразу закомметил, и удалил строку с клавиатуры, и пеп8 соблюдает, и синтаксические ошибки не делает, и печатает достаточно уверенно и быстро. Да, в этом ничего сложного. Но когда человек делает это на автомате — это для меня как триггер о том, что человек не просто копипастит код.

    2. Вспомнил, что метод .sort() ничего не возвращает и заменил его на sorted() — это прям найс.

    3. Мало того, что вспомнил про параметр key у сортировки, так еще и правильную лямбду написал — это еще раз найс.

    Из минусов:

    1. Распаковка? Зачем? Просто чтобы показать, что ты ее знаешь? Это прям слегка испортило предыдущее впечатление. Особенно когда был тест с пустым массивом и он сказал, мол, ничего не вывело, но этот кейс можно отдельно рассмотреть и вернуть пустой массив. И с чего бы вдруг распаковка пустого массива не вывела в консоль ничего, кроме пустой строки?

    2. Вопрос "но nlogn же лучше, чем просто n?" ответ "да, конечно". Правильный ответ: "нет, конечно".

    3. Также меня крайне колебнули вопросы вида "целые числа?" и "отрицательные могут быть?". Собсно, а какая разница, если нужно отсеивать конкретное значение?

    4. Тоже звоночек был, когда он начал рассуждать, как можно "ускорить" решение за О(n) в данном случае. И звоночек был в момент, когда я понял, что он не озвучит мысль вида "чтобы узнать, остались ли в массиве нули — нужно пройти весь массив до конца, а это О(n)".

    5. Вообще полный игнор потребляемой памяти.

    6. Алгоритмическая подготовка у него явно отсутствует. Плохо ли это? Я бы сказал, что да — он не понимает цену своего кода. Да, далеко не часто можно встретить обработку больших данных на голом Питоне, но все же. Чтобы начать писать сложный код, нужно понимать, как сам Питон под капотом работает. А алгосы это именно то, что способствует изучению подкапотни. Так что я всеми клешнями ратую за то, что их нужно затачивать.
    7. Также меня крайне сильно триггернула его особенность со всем соглашаться, даже не подумав. Это и про nlogn, и в разговоре про мидлвары — просто слышит утвердительные интонации от Андрея и сразу же с ними соглашается. Я бы сказал, что это не совсем найс.

    В общем, лайв кодинг мне +- понравился, да и подумать человек может.

    Ответить