Андрей Ушаков | собеседование junior pyhton разработчик.
HTML-код
- Опубликовано: 24 ноя 2022
- Подписка, колокольчик, лайки и комментарии мотивируют продолжать.
Поддержать канал -- можно денежкой. www.tinkoff.ru/rm/pronin.andr...
Мой канал про обучению python с нуля и до мидла Андрей+=Пронин
/ @pypronin
Я в других сетях
🔗Вконтакте: CaptPronin
🔗Дзен: zen.yandex.ru/id/5fbd33919412...
#python #питон #программирование #Андрей_Пронин #собеседование
Огромное спасибо Андрею Ушакову, что разрешил выложить данный собес. Всё учится и натаскивается, надо просто время и желание. Так что успехов, сил и знаний) 👍
Надо немалую смелость иметь. Да
Спасибо! Уже вторую неделю слушаю все подряд ваши видео! Изучаю Django, python, golang. Очень мотивирует ваш контент.
Спасибо. Рад, что полезно
И как Вам го?
Go мне очень нравится. Но таких фреймворков, как django, там нет. Думаю , JS и React учить тоже. Написал веб-сайт по одному курсу на go, но с django не сравнить, конечно.
@@MajotradeNetда ты прям супермен👍
@@nitrocigil6874 С чатом GPT, действительно, чувствую себя суперменом))
ИДЕАЛЬНЫЙ контент для чайников. ОГРОМНОЕ спасибо.
о... его и опытные ребята находят любопытным... ) Вспомнить страдания, через которые сам когда то прошёл - бесценно)
Блииин, как много я ещё не знаю
Вообще было бы круто ознакомиться с тем что нужно знать джуну для собеса,какой-нибудь список мастхэв тем.
Основы питона. ООП. Запросы и БД. . Стэк.
КНИГИ ДЛЯ НАЧИНАЮЩИХ (трейни и ниже)
- "Искусство схемотехники" Хоровиц П., Хилл У.
- "Искусство программирования" Кнут Д.
- "Архитектура компьютера" Таненбаум Э.
- "Компиляторы: принципы, технологии и инструменты" Ахо А., Лам М., Сети Р., Ульман Д.
Чотко!!! Лайк от прогера-топ комментатора СЕООНЛИ
Спасибо)
👍
def subtracts_lines(left_lines, right_lines):
""" This function subtracts lines"""
result = left_lines.lstrip(right_lines)
if result == left_lines:
raise ValueError("Мы не можем вычесть эти строки")
else:
return result
Новичек, сделал почти так же, но не знал про startswith, поэтому у меня это выглядело так
def difstr(a: str,b: str) ->str:
c = str(a[:len(b)])
if c == b:
return a.replace(b,'',1)
return a
Никакое налоговое резиденство никуда не теряется. Это все только на бумаге, фактически спокойно работается без проблем и официально годами
Хочу спросить про is. У Лутца сказано, что хэширование строк и int работает на небольшие значения
s1, s2 = 'is it longer string', 'is it longer string'
s1 is s2 должно быть False
Как и с интами, a, b = 253421321312, 253421321312
Должно быть False
Теперь же True в обоих вариантах, вне зависимости от величины и длины
Систему хэширования поменяли, или что изменилось?
Cам отвечаю на свой вопрос)
"Вплоть до версии 3.7 Python использовал оптимизацию глазка, и все строки длиной более 20 символов не интернировались. Однако теперь он использует оптимизатор ASTÂ , и (большинство) строк длиной до 4096 символов интернированы"
@@velvet7667 от души за пояснение!
Андрей, хотелось бы узнать ваше мнение про codewars?
Поможет ли наличие ранга при собесе?
Какой ранг (по вашему мнению) соответствует джуну, мидлу?
Если попадётся знакомая задачка - то да. Сертификаты, дипломы, ранги и прочие бумажки без возможности их подтвердить практикой ничего не стоят, думаю
Дядя, только leetcode
Да это херня полная. Я не буду брать работника исходя как он хорошо понимает логические математические задачи
Ольга не только улыбашка, но еще и симпотяшка и обаяшка)
Ооо, наконец-то вернулись вопросы про id(). Мне кажется, Андрей через себя перешагивал каждый раз, когда НЕ спрашивал об этом. :D
Вот по поводу интернирования - вообще странная эта штука.
a = "aaaabcd"
b = "aaaabc" + "d"
c = a[:-1] + "d"
Вот а и b будут ссылаться на один объект, а c уже не будет. Возможно, это из-за того, что там какой-то запрет на поиск совпадений, если мы изначально берем какую-то часть строки.
Странная штука, кароч.
Ну а по собесу - прям очень и очень слабо. Базы Питона нет вообще, печатает медленно, вместо того, чтобы скопипастить написанное 1 раз - перепечатывает каждый раз, свою ИДЕ не знает...А уж если бы он работал в каком-нибудь обычном текстовом редакторе, то еще хуже было бы... Это явно не уровень джуна - даже не стажер.
Тут еще качаться и качаться. Как минимум того же Лутца прочитать и разобрать вообще всего. И также повторить абсолютно все, что было в Практикуме.
Месяца 3 минимум на это все потратить, но не по часу в день, а чтоб прям кровь из глаз начинала течь. До тех пор, пока в методах автоматом self не появлялся.
С другой стороны, зато теперь у него есть шикарный опыт, где он прям конкретно облажался. Хуже-то уже не будет. :D
P.S. А почему у меня не было уведомления о новом видосе? Ты все сломал? :D
Оно странно как-то получилось. Я видео немного обрезал, и вместо премьеры получилась просто отложенная запись
будет, что на собесе ответить на вопрос про факап) Подкачаться надо, безусловно.
@@AndyPronin, "я чето нажала и все исчезло"?)
А на самом деле я часто задумывался насчет подобных факапов.
Формально, рано или поздно каждый сядет в лужу - так или иначе.
И лучше в нее садиться уже имея опыт нахождения в ней, чем погружаться в эту пучину в первый раз.
И, что самое главное, на реальном собесе его бы, скорее всего, вообще порвали бы.
Так что, негативный опыт - это опыт, который ничем не хуже, чем позитивный.
Так что, такая ситуация, как по мне, даже лучше, чем если бы ты ему сказал "все норм, годен без ограничений".
Интересно, почему «с» не интернируется. На этапе компиляции мб срез с конкатенацией ведет себя не в рамках обычного интернирования.
@@7IdE есть лимон - дави лимонад)
21 когорта :). И мы в линкидине с ним :)
Доброго времени суток, прохожу сейчас курсы ЯП, как раз Python-разработчик, по итогам тоже есть шанс попасть к вам на подобный пробный собес?)
Да. Через акселерацию
Еще ни одна строка мне не изменила :)
Андрей, а где Николай Ширинкин? Очень соскучился по нему
О. Он иногда забегает, как зритель. Насколько я знаю, делает какой то проект по трудоустройству
@@AndyPronin Понял, благодарю
Можно ли задачу со строками сделать через срезы?
def dif(a, b):
if a in b[:len(a)]:
return b[len(a):]
return b
Там много вариантов решения.
Я когда услышал, условие, сразу так же сделал)
Довольно плохой вариант по сложности по памяти, т.к. срез, по сути создает еще один список
Гуд) "Жертве" не отчаиваться и быть готовым, было ощущение, что он спал, а тут вдруг постучались Ольга с Андреем)
Надеюсь, ему было полезно)
Андрей сидит как самурай , вот это выдержка )) я бы написал хокку но данного навыка не имею )
Никто не умеет)
Зимний собес
Снова неопытный джун
Горький фидбек
@@AndyPronin
Камень
Река
Притаился питон
Неопытный джун
🤣
Хмм, Вы серьезно считаете, что вопрос про тонкости работы внутренней памяти компилятора (интернирование объектов) - это хороший вопрос для новичка? На мой взгляд можно было бы ограничиться неизменяемостью объектов типа строка.
Я стараюсь брать вопросы с реальных собеседований.
Под каждым видео буду просить показать git кандидатов)
Ок. Если будут интересные прректы
Желательно все такие лайвкодинги делать в юпитернотебук что ли :)
Любой удобный редактор
не прокатит с символами юникода
с латиницей работает
А я бы так сделал
def list_app (name_list:list, charge):
name_list.append(charge)
name_list_end = list(set(name_list))
return name_list_end
Почему кандидаты часто парятся над названиями функций и переменных? Это же собеседование, можно ведь любые имена задавать. Это специфика тех, кто практикум окончил?)
Что лучше - хороший нейминг иои i j foo bar ?
def string_minus(a, b):
return a[len(b):] if a.index(b) == 0 else a
Так можно делать?
Eto rabotaet, no luchshe tak ne delat' po dvum prichinam. a.startswith(b) bolee jasno s tochki zrenija chtenija koda, i bolee effektivno algoritmicheski.
59:06 ))
)
апзаапзхапхзахзпах, только хотел написать)
Когда одного facepalm недостаточно)
Я думаю Оскар за отличную игру можно давать :)
После неправильного ответа на первый простейший вопрос на 15 минуте, я боюсь представить, что там будет дальше....
Ну... я такие не дал аппрув.
Что a is b не так очевидно, зависит от реализации интерпретатора и на это полагаться нельзя. Проблема в основном в том, что он вместо is сначала на равенство значений проверял.
Это полное фиаско... У Андрея стальная выдержка
он научится
@@AndyPronin моё почтение Вашему оптимизму и вере в каждого участника.
@@Bibliophilos я стараюсь отслеживать их судьбу. Кто не сложил лапки, а принялся активно закрывать пробелы в знаниях -- нашли работу в итоге
@@AndyPronin искренне рад за них и за Вас :)!
@@Bibliophilos не переключайтесь)
Респект Егору Криду, давно пора уже было начать учить программирование)
Хех
Научите ребят именно шрифт кода увеличивать. Они вместо этого все шрифты увеличивают
Консольку тоже же надо
@@AndyPronin terminal.integrated.fontSize: x
editor.fontSize: x
debug.console.fontSize: x
И такое есть для всех сущностей vscode
@@MrLotrus сложна) я просто кантрол + прошу перед записью сделать
@@AndyPronin это и через гуи в настройках можно найти. Но имхо удобнее JSON напрямую поправить. Зато не будет этих конских менюшек
Ребята, кто то может мне подсказать, почему в самом начале при создании двух строк Hello World они в итоге ссылаются на один объект в памяти, а не создается новый.
Я понимаю a == b, но не понимаю почему a is b
интернирование объектов питон
@@AndyPronin Спасибо!)
is - is проверяет , ссылаются ли переменные на один и тот же объект в памяти , в то время как == проверяет, имеют ли переменные одно и то же значение
@@khjkut м.. Вопрос ещё когда именно проводится проверка
9:26 тех часть
Андрей, мне кажется, это излишне просить так сильно увеличивать масштаб) Или рассчёт идёт на то, что большой процент людей с телефона смотрит?
Да можно даже в юпитере делать, или убирать вкладку файлы сбоку. Тоже напрягает все это вот все :)
Ну.. Обычно просят. Может, лишнего увеличели
Не считаю оскорблением, но хочу подметить что после первого вопроса можно закончить харды, потому как чел базу не знает. Курсы с вас не сделают программиста, с вас сделают программиста только любознательность и интерес к тому чем вы занимаетесь
Задача этого собеса - понять, где есть проблемы, честно рассказать о них, что бы человек мог их восполнить
Что ж за "эпидемия" использования слова подметить там, где гораздо уместнее просто отметить?
Print(“Здравствуйте!») только зашёл на канал. А что это за демо формат такой? Это школа или же любой рандом может зайти на дэмо пробник. If True: return like Else: Comment с объяснениями
Обычно делаю для Практикума. Но иногда бывают розыгрыши t.me/RUclipsPronin вот тут
проверка на равенство (==) проверяет равны ли значения, это не гарант того, что это один и тот же объект, проверить это достаточно просто, нужно завести два списка и проверить == и is(либо id), первая проверка вернет True для похожих списков, вторая же вернет False
почему python не создает новый объект, в представленном на 14 минуте примере, все дело в оптимизациях, каждый раз, когда вы заводите новый объект в памяти под это нужно время (грубо говоря выделить память, положить объект, создать ссылку на этот участок и т.д.), оптимизация направлена на то, чтобы просто присвоить ссылку и избежать пункта с выделение памяти и созданием там объекта
та же магия работает и для чисел в диапазоне от -5 до 255 вроде, они уже зарезервированы в памяти, в чем прикол? просто разработчики посчитали, что этот набор чисел используется чаще всего и нет смысла их каждый раз создавать и тратить на это ресурсы (надо понимать, что интерпретатор это тоже программа и он сам может использовать этот набор чисел, да и другие программы, которые у вас активны тоже юзают этот набор чисел часто
Бинго. Про инты тоже бывает, спрашивают
Ну я сначала подумал про Java а именно Pointer, но потом вспомнил про оптимизацию. Спасибо за разъяснения
Привет. Скажи, пожалуйста про оптимизацию подробней. Да "==" при сравнении слов, посимвольно проверяется значение кода Unicode для каждого отдельного символа ,и, естественно эти строки будут равны. Эта не та проверка, которая нужна была. Но что ты имел ввиду про оптимизацию? Я правильно понял, что у нас один раз создался объект в памяти в самом начале. Мы ссылку на этот объект присвоили переменной "а". И дальше уже, работает волшебная оптимизация, которая уже не хочет создавать несколько одинаковых объектов, а просто ссылается постоянно на уже существующий, т.к опять же код Unicode у нас идентичен?
@@ralaam5661 По-моему он имеет ввиду что == сравнивает значения, а is сравнивает участки памяти. А оптимизация тут при том что пайтон может ссылать две разные переменные на один и тот же участок памяти
Upd: Это и есть оптимизация в питоне. К примеру если: a, b = "Hello World". То у них названия разные но все остальное идентичное( жрет меньше памяти). В видео был пример когда переменные на первый взгляд одинаковые(то есть должна была произойти оптимизация), но участки памяти разные, соответственно и id
@@hateisu Про знак "==" человек как раз имеет ввиду то, что я написал, вроде....
я прост ленивый немного, и поэтому тут думал краткую выжимку услышать про оптимизацию)) про то, что ты написал я понял...но я хотел узнать почему так и какими средствами это достигается?))) Да и вообще, как бы улавливать момент этот тонкий, а именно...в какой момент времени мы "сравниваем байткод", а в какой момент времени "адрес ячейки памяти". Может Андрей сможет кинуть в меня ссылкой. Я просто чувствую, что понимание этого момента сможет бустануть нас, как джунов. Хочется постичь дзен.
а Андрей Ушаков в комментариях присутствует ?
Присутствую:)
@@andreyushakov7052 а можно с тобой где-то связаться по поводу Аргентины?)
Назвать это собесом на джуна можно только с натяжкой, расчет на не квалифицированную публику, ну пипл схавал как говорится, этого достаточно для контента
В задачке со строками можно было просто a.lstrip(b), и проверка не нужна
str.lstrip eto ne to chto nuzhno: 'help'.lstrip('he') == 'help'.lstrip('eh'). It removes characters, not substring. What works is str.removeprefix
@@alexmiller6844 как вариант
Pyhton разработчик это что то новое🧐
Очередной ПИХТОН разработчик)
Было же Птухон?
Он ещё не разработчик
Ну прям очень слабенько)
Надо подкачаться
Я запутался с переменными 🥲
Действительно магия, переменная a == c, True
a is c, False 🤯
Пошёл читать про Интернирование строк....
что я нашёл : оператор is проверяет ссылаются ли переменные на один и тот же объект,
А оператор == проверяет уже значение переменных
И далее, мои мысли (возможно ошибочны) получается строки в питон настолько ленивы, что первая строка с одинаковым значением занимает ячейку в памяти, а вторая просто ссылается на то же самое место в памяти 😳
Близко. Там в комментарях было хорошо
напомню себе что codewars или leetcode поможет накачать мускул.
И еще слепая печать
Return stroka1.lstrip(stroka2)
str.removeprefix(prefix)
Ну... Я такое наизусть не помню
@@AndyPronin removeprefix и removesuffix добавлены в 3.9, возможно поэтому ещё не успело запомниться
@@MrYakubov развивается питончик
)