Собеседование Алексей и Тимур
Вставка
- Опубліковано 26 кві 2024
- t.me/UA-camPronin
Чат для общения python разработчиков и им сочуствующих. Свободное общение, тестовые и вопросы с собесов и прочее. Заходите, там вам рады.
Поддержать канал: www.tinkoff.ru/rm/pronin.andr...
Обычно денежка идёт на книжки про питончик. Но иногда на светлое и тёмное.
Если Тиньков не даёт перечислить, стукните в личку телеги andpronin, придумаем что нибудь
Виш лист
Хорошие книги по Питончику, которые могу рекомендовать (и хочу купить с вашей помощью).
Изучаем Python. Двухтомник. Марк Лутц. Очень подробно и структурно (Хочу дождаться 6го издания.. )
• Изучаем Python с Марко...
Читаем и разбираем ее тут
Куплено (огромное спасибо зрителям)
Знакомство с Python | Бейдер Дэн (2023) - выглядит приятно для новичка
Чистый Python. Тонкости программирования для профи | Бейдер Дэн (2022) - хорошо для продолжения
Высоконагруженные приложения. Программирование, масштабирование, поддержка | Клеппман Мартин
Python. К вершинам мастерства | Рамальо Лучано - 2е издание - сложно для новичка, но интересно
Паттерны разработки на Python: TDD, DDD и событийно-ориентированная архитектура -- хорошо про то, когда какой фреймворк применять
Видимо, дальше появтся еще нескромные желания. Но пока - так
Моя тележка andpronin -- стучите, если что.
Мой канал про обучению python с нуля и до мидла Андрей+=Пронин
/ @pypronin
Я в других сетях
🔗Вконтакте: CaptPronin
🔗Дзен: zen.yandex.ru/id/5fbd33919412...
#python #питон #программирование #Андрей_Пронин #собеседование #
грустно смотреть, когда кандидаты тривиальные задачки на палиндром или бисект решить не могут
Благодарю за интересный контент! всегда интересно посмотреть на джунов и повспоминать питон :)
def pol(arr: list) -> bool:
for i in range(len(arr) // 2):
if arr[i] != arr[-i - 1]:
return False
return True
def version_checker(arr: list) -> object:
def is_bad(ver: object) -> bool:
pass
l_p, r_p = 0, len(arr) - 1
while 1:
if is_bad(arr[l_p]):
return arr[l_p]
elif is_bad(arr[r_p]):
if is_bad(arr[curr := (l_p + r_p) // 2]):
r_p = curr
else:
l_p = curr + 1
continue
return None
Здравствуйте Андрей смотрю вас уже год и постоянно разбераю ваше интервью большое спасибо!
Можете ли сказать как я смогу попасть на ваше собеседование
Пока через Практикум. Возможно, сделаю розыгрыш на канале. Но это не точно
@@AndyPronin, а что за практикум?
@@marebf3301 Яндекс Практикум. Я эти собесы в рамках работы там делаю
def firstBadVersion(n: int) -> int:
left, right = 0, n
while (right - left) > 1:
mid = (left + right) // 2
if isBadVersion(mid):
right = mid
else:
left = mid
return right
def palindromeCheck(array: list[int]) -> bool:
left, right = 0, len(array) - 1
while left < right:
if array[left] != array[right]:
return False
left += 1
right -= 1
return True
А куда в личку писать за промокодом?) И могу ли я его применить вместе с подарочным сертификатом например для обучения в практикуме на системного администратора?)
andpronin телеграм. Попытка не пытка) можно попробовать. Вдруг сработает
def check_palindrom(lst):
if len(lst) == 1 or len(lst) == 0:
return True
if lst[0] != lst[-1]:
return False
return check_palindrom(lst[1:-1])
test_lst = [1, 3, 1, 1, 3, 1]
print(check_palindrom(test_lst))
Сколько не захожу в комменты на этом канале, всё время говном в интервьюируемого кидают.
Вроде в айтишечки на каждом углу кричат про софты. Походу, не зря кричат.
с его условием в цикле while start != end, при четном кол-ве элементов будет падать ошибка out of range, потому что условие не выполнится при палиндроме. Как такое можно было пропустить, Андрей))
тоже об этом подумал , поэтому ограничил до середины списка проверку, чтобы старт в конец не ушел и енд в начало
@@AndyRoid1986там просто нужно сделать while start < end:
Косяк( чуйка подсказала про аут оф рейндж, но сходу не сообразил.
как сделать так что бы подсвечивались варианты в IDE ?
Продкючить нейросети
def version_checker(version):
if version
Сделал так:
def fpolyn(l=list)->bool:
p=-1 # указатель на элемент списка
zn=True # значение
for i in range(len(l)//2):
if l[i]!=l[p]:
zn=False
break
else:
p-=1
return zn
Коряво сделал, подумай еще:)
Ну или через ваил;
def fpolyn2(l=list)->bool:
i=0 # указатель сначала
p=-1 # указатель с конца
zn=True # значение
while len(l)!=0 and l[i]==l[p] and i!=len(l)//2: # проверка до середины списка
i+=1 # пока совпадает сдвигаем указатели
p-=1
if l[i]!=l[p]:
zn=False
return zn
@@AndyRoid1986 пипец ты усложняешь))
@@Chel1k7 20 лет простоя после паскаля в универе, не претендую на профа))) радует, что уже работает то что я накалякал
Багованный модуль равномерно распределен с независимыми случайными приращениями. Ты не докажешь факт корреляции между багованными модулями, что если один модуль багован, то все последующие также багованны. А если корреляция есть, т.е. тебе однозначно известно как выглядит баг, ты можешь просто прочитать модуль как текстовый файл и найти в нем данный баг. Он на чтение млнонов символов и сопоставление с щаблоном бага потратит менее секунды и туфта с бинарным поиском не нужна. У тебя же не трлн версий модуля. Смысла лепить этот поиск не нужно там, где он не нужен.
man git bisect
По сути задача может звучать так, есть отсортированный(от большего к меньшему) список 1 и 0, и нужно найти первое появление 0 методом дерева.
def func(x):
if len(x) % 2 == 0:
return False
left = 0; right = len(x)//2 + 1
while right < len(x):
if x[left] != x[right]:
return False
left += 1; right += 1
return True
Палиндром может быть чётной длины [1,2,2,1]
@@runneso
def func(x):
if len(x) == 0:
return False
left = 0; right = len(x)//2 + 1 if len(x) % 2 != 0 else len(x)//2
while right < len(x):
if x[left] != x[right]:
return False
left += 1; right += 1
return True
def is_palindorme(lst):
left = 0
right = len(lst) - 1
while left < right:
if lst[left] != lst[right]:
return False
left += 1
right -= 1
return True
return spisok == spisok[::-1]
Не занимайся программированием, не трать время)
@@user-he4st2ro5h что не так в моем ответе? Список нельзя перевернуть и так проверить полиндром или нет?
Чел отучился на Яндекс Практикуме и не может написать алгоритм поиска палинрома? Серьезно? Ну и с бинпоиском любой недостажер легко должен справляться. Ни первый, ни второй собеседуемые не тянут на стажеров, не говоря уже о каком-то более высоком уровне.
Очередные нулевый питонисты, который привыкли юзать библиотечные методы не понимая реализаций
А чего ты ожидал от чувака после курсов?
Вот такие штуки получились
def palindrome(numbers: list[int]) -> bool:
pointer: int = -1
for idx in range(len(numbers)//2):
if numbers[idx] == numbers[pointer]:
pointer -= 1
else:
return False
return True
def get_bad_version(versions: list[int]) -> int:
low: int = 0
high: int = len(versions) - 1
while high > low:
mid: int = (low + high) // 2
if is_bad_version(versions[mid]):
high = mid
else:
low = mid + 1
return low
Если я, конечно, правильно понял, что после первой плохой версии, все последующие тоже будут плохими