Собеседование 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 #питон #программирование #Андрей_Пронин #собеседование #
Он решил неверно. Условия: подсчитать кол-во впадин, которые преодолел путешественник, учитывая что путь заканчивается на уровне моря, т.е. 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())
Сергей учился со мной в одной когорте. И он был очень хорош, практически в каждом треде помогал людям, был одним из самых активных и самых быстрых.
Тут фактор волнения, плюс не совсем, возможно, серьезное отношение к этому тестовому собесу роль сыграло
Без записи, я уверен, решил бы он это оч быстро
насколько я понял, проблема была не в том, что он долго решал задачу.
Смотрю собеседования, как "Что? Где? Когда?" или "Поле чудес", типа "во я знаю слово целиком!". Но понимаю, что это я сидя на диване так, а перед собеседователем скорее всего растеряюсь. Хотя тут достаточно приятные собеседники.
«Почему выбрал нашу компанию и подал резюме в неё?»
Задавая этот вопрос, рекрутер думает, что человек без опыта тщательно отбирает вакансии куда его скорее всего не возьмут?
Да, кстати, Мне кажется, ответ собеседующегося здесь был хотя бы честным. А рассказывать, что "я давно следил за вашей компанией", хотя первый раз о ней услышал посылая резюме - это как-то лицемерно что ли. Хотя что-то о компании заранее узнать и как-то ответ сформулировать получше, можно было.
Через re
pattern = "uudd"
def find_quantity_pattern(track: str = "") -> int:
result = re.findall(pattern, track)
return len(result)
Пофантазируй над входными данными. Выше уровня моря все еще холм.
Я конечно понимаю там инфляция знаний, переизбыток джунов на рынке,но говорить человеку с неплохим опытом за плечами,что он не должен только решать задачу но и смотреть глубже ,угадать что заказчик затребует,это вызывает у меня нервный смех,это же всего лишь Джун который должен делать то что от него просят а уже потом,глобально смотреть на проблему ,постепенно развиваться и т.д
Если каждый Джун будет думать над всем проектом вместо своего куска задачи, становится страшновато .
Плох тот солдат, который не мечтает стать генералом.
оформил чуть посимпатичнее:
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
Про задачу подумал решить так:
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('()')
Работает на каверзных тест-кейсах.
Спасибо за видео, информативно!
лукасик от СЕООНЛИ
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
Блин, хочу быть по жизни как Олег: крутым и в то же время небезразличным, творческим, и в классных очках к тому же.
Как бы выглядело решение этой задачи, если нужно было просчитать сколько раз были выходы в + из впадины. Т.е. если -1,1,1 - это будет один переход в повышение. Если текущее значение, к примеру будет -2, то +2 не подходит, так как уровень будет 0.
count=0
rv=0
g="dduduudu"
for i in g:
if count
пишите всегда функции или классы! это важно, ибо это покажет что вы понимаете парадигмы программирования. если пишите просто голым кодом, это укажет на ваш низкий уровень со старта, вы себя сразу обесцениваете. мелочь, но часто может не слабо повлиять не только на ваш оффер но и сумму в нем!
Не соглашусь, что решение задачи через структурную парадигму указывает на низкий уровень, например решения задач с Advent Of Code от hyper-neutrino в плане владения инструментарием языка Python и владения алгоритмами поражает
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
невовремя дядя решил свичнуться, тут нейросети джунов вытесянют)
Есть мнение, что умения нейросетей в области разработки сильно раздуты хайпом
@@AndyPronin это понимают все, кто пытался добиться от chatgpt хоть чего-то полезного 🙂
@@MrBeltalowda поисковики, боты, работа с естественным языком. Возможно, картинки. Там оно развернётся.
Каждый мидл когда-то был джуном так что джуны никуда не денутся
Rejected ? Вы серьезно? Кандидат хорошо выполнил задание, при этом оценили его чисто по софтам. Олег выдумал задание за 5 минут при этом не убедился, что его задание хорошо понятно соискателю, изменял условия и постоянно мешал кандидату.
Странная формулировка, мол чел решил всё правильно, но ответ - нет. Больше на кулинарные шоу похоже.
Открою тебе вторую тайну золотого ключика, в 80 процентов случаев ты будешь получать именно такие вводные от и что тебе "его задание НЕ хорошо понятно " никого не волныет. Это энтропия нашей вселенной. Ты сам должен получив задание, сейчас внимение важно ПОДУМАТЬ, а потом уточнить все тонкости, а не бросатся долбить его напрямую. Это собственно был одним из тестов, показывающий уроыень, думает человек так или идет в лоб.
@@mikeofs1304 Чел, тебе бы философию смотреть, под боярку очень хорошо заходит ;)
@@niktaub6407 иди купи еще 3 курса, и потом дальше сможешь ныть какой ты титулованный и дипломированный, а на собесах тебя валят злые завистники, ггг
@@mikeofs1304 Походу боярки ты перепил, какие курсы, шо ты несешь? Через собесы продвигаются вкатуны, которые хорошо умеют философствовать как ты например, такие держатся от силы 3 месяца, последние два из которых активно лижут очко начальству, тру-кодеры проходят по хардам за счет пет проектов и идеально выполненных ТЗ.
Получилось как то так. Какие еще есть алгоритмы решения?
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
ududud попробуй)
Просят отдельно количество холмов и вершин как я понял,тут нужно тогда 2 result один когда снизу пересекает вверх уровень моря (это вершина) и когда сверху пересекается уровень моря вниз (это впадина)
Честно говоря я вообще не понял что он говорил в начале собеса, как то все спутано.
Это точно задача на позицию джуна? может, это на миддл-позицию собеседование?
Простая задачка
Отличное собеседование и фидбек!
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))
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
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
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"))
Какой-то рили странный и отрешенный чувак так-то.
Ну а фидбек от Олега как всегда на высоте.
Почему странный, флегматик, да и возраст добавляет пофигизма.
Как по мне, вполне даже тянет на юниора. Видно, что опыта нет, ну так на то и джун.
X = ‘ududu’
S=0
K=0 # кол-во
for i in range(len(x)):
if x[i] == ‘u’:
S+=1
else:
S-=1
if S
C Олегом собесы круче, не в обиду Андрею
Буду удалять такие комменты)
Здравствуйте, Андрей! У меня вопрос, объясните, пожалуйста, по поводу документации и библиотек, модулей... Как учить, например, в Питоне, сторонние библиотеки, например Pygame или TKinter, стоит ли смотреть видеоуроки, или лучше привыкать читать документацию? А если документацию, то как ее правильно научиться читать, то есть там много всего, деталей всяких, и выуживать главное иногда нелегко, и как выработать тот навык, который позволяет не знать или выучить библиотеку, а ПОЛЬЗОВАТЬСЯ ей (словно ты не знаешь эту библиотеку, но ты знаешь что тебе надо сделать и просто заходишь там в доки и правильно все применяешь, сформулировал задачу, и идешь в доки и ищешь что тебе надо)? И еще: документацию лучше стараться на английском читать, даже если не очень знаешь язык(хотя в этом есть плюс: научишься понимать доки на англ.)? В целом можете сказать как вы сами учите библиотеки, что бы вы сделали и как бы вы сделали, если бы вам, например сказали, написать скажем таймер обратного отсчета времени с графическим интерфейсом на JavaSript(там есть скажем какой-то похожий модуль на pygame), вот??
Странно, что ещё никто не ответил. Я только начала учиться, но у меня возник бы вопрос сначала как передается время. Если с терминала, то нужен модуль sys. И модуль datetime, чтобы распознать дату. Если дата одна и указана в программе, например, сколько осталось до Нового года, то sys не нужен. Будет ли эта дата сама по себе изменяться, как с Новым годом, потом нужно прибавлять 1 год, а 31.12 остаются прежним. Пользуются ли этим временем люди из других временных зон, или будет использоваться только на локальном компьютере, будет оно сохраняться в файл или нет. Если будет на локальном, то хватит и datetime, если нужно общемировое время, которое видно всем, то нужен модуль pytz. Как будет выводиться время: цифрами или буквами. Если буквами, то нужен модуль locale, но насколько я помню он не склоняет на русском месяцы в windows, а склоняет только в linux и mac os. Поэтому нужно будет написать или массив, или словарь с месяцами. Ну это я знаю только про русский вариант, а как там с другим обозначением времени, нужно ещё разбираться. Потом нужен будет метод timedelta, считать разницу между датами сейчас и планируемой. Он в том же модуле datetime. Если нужен календарь, в котором что-то выбирать, то нужен модуль calendar. Это первое, что пришло в голову.
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
изи пару минут, хотя я далеко не спец по решению задач
Хз зачем, но вот моё решение ^_^
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
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))
Привет.
Ого, вы дедов - программистов берёте?
Я тоже хочу.
Какие вакансии?
Сеньоры с бородой нужны
)
@@AndyPronin лол, Сеньоры давно у Омэрике
😂
@@germanmariot34 потому и набираем новых
Вопрос а можно попасть к вам на собес если не из практикума и с другой страны?
t.me/RUclipsPronin тут время от времени планирую розыгрыши делать
Здравствуйте,как к Вам попасть?Начинающий разраб на пайтон,очень хочу попробовать свои силы в тестовом собеседовании.
Привет. Студент практикума?
Сделайте таймкоды, очень неудобно ориентироваться по видео
Прошу прощения, на это нет ресурса. Я не настоящий ютубер
Ну и здесь ошибка на превьюхе😊
Не ошибка, а тонкий пристёб
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)
но значения должны подаваться через пробел =(
path = [i for i in input()] если надо без пробела.
Добрый день, подскажите пожалуйста, как можно попасть на тестовое собеседование к Вам?
Студент практикума?
@@AndyPronin нет
@@mandico21 t.me/RUclipsPronin тогда тут ждать розыгрыша
Чел на Панфилова Никиту похож
Да ужжж , такой человечек, судя по его бэкграунду должен собеседоваться на мидл, а то все Джуны после такого как то пропадают 😅
А "после такого" - это после чего? И "пропадают" - куда пропадают?
че вы там курите что такие задачи придумывать? тоже хочу закупить
Олег в Амстердаме, вроде... у нас нелегально
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")
Ютуб съел прошлый комментарий с однострочником
Проверь uudddudu
@@vadim1398 2, как и должно быть
Что за двоеточие в height := height + 1 ?
Что-то не понимаю такое выражение
@@dmitriynayanov6428 это моржовый оператор. он позволяет задавать значение переменной внутри выражения. появился в питоне 3.8
@@MrBeltalowda должно быть 2, а получается 0
По-моему, человеку в очках он сразу не зашёл после ответа на вопрос: "почему выбрали нашу компанию". Просто потому что у вас открыта вакансия, потому и выбрал. Ну а вообще душноват этот человечек в очках, я б под такое начало не пошёл. Кандидат улыбается, шутит, этот сидит, как сыч.
Ну собес это не про смехуечки, а про знания. Посмеяться и обменяться любезностями можно в начале при знакомстве и в конце. Мужик местами не к месту угарает) Легко сдается, не пытается найти решения, даже того, что уже делал. Шаг влево, шаг вправо и "на курсе этого не было". Даже для студента не знать, что такое orm и т.п. - плохо. Использует библиотеки асинхронные, но не знает как они работают. Такого человека надо постоянно контроллить и направлять. Это конечно в целом ок, без менторства прогресс будет хуже, но важно уметь задавать вопросы, уточнять и учиться самостоятельно, ментор не няня.
@@Swetocopy какие курсы, такие и знания, раз шаг вправо/влево - проблема. Что хорошо знать, а что плохо понятно только из собеседований и дальнейшего опыта. Или все всё сразу знают? На велосипеде тоже надо учиться ездить. Первое время можно и понянчить, корона не упадёт.
@@Swetocopy друг до этого кем работал, если не секрет?
@@Swetocopy т.е., у него бэкграунд программиста имеется, верно? Курсы обещают повара превратить в программера за полгода. Это шляпа, на которую все ведутся. Превратится тот, у кого куча свободного времени и понимание, что конкретно изучать. Создание ботов? разработка сайтов вместе с django? Аналитика с pandas? Каждое из этих направлений можно изучать долго.