Ох, когда вижу, как кто-то тупит на собесах даже на элементарных вопросах и рука уже тянется писать гневно-саркастический комментарий - каждый раз одергиваю себя, ибо понимаю, что тупил бы не меньше, скорее всего:) Александру - удачи!
@dazzline78009 ай бұрын
Спасибо 😊 Уже говорил, что вообще не успел подготовиться и голова в итоге была забита сессией, а так даже рад что за полгода ещё не всё забыл)
@dazzline78009 ай бұрын
Ребят, строго не судите. В своё оправдание только скажу, что последние полгода занимался чисто алгоритмами на Python, а к интервью вообще не успел подготовиться 😅
@amalshakov9 ай бұрын
Помню месяца 3-4 назад интервью смотрел. Там наоборот ситуация была)))))
@ДмитрийСмолов-з7ы9 ай бұрын
Молоток! Продолжаем двигаться к цели!
@НиколайРюмин-й6и9 ай бұрын
Палиндром жеж базовая база, какие алгоритмы?
@slizverg239 ай бұрын
@@НиколайРюмин-й6иКнута-Морриса-Пратта наверное:)
@dazzline78009 ай бұрын
@@НиколайРюмин-й6и да обычная задачка, ну я её не выбирал, но решил
@johndubssound8 ай бұрын
Самое показательное видео о том, кого выпускают с псевдо-курсов Яндекса/скиллбокс и тд.
@WDemidenko5 ай бұрын
ну с его попыток написать sql запрос я посмеялся от души)
@АртемийКадиковАй бұрын
7:40 - Что для тебя идеальная работа? Что ты сейчас ищешь? 10:10 - (Артём) - Задача №1 16:10 - (Андрей) - Каким SQL запрос вообще должен быть, как он должен выглядеть? 22:50 - (Андрей) - Расскажи про стек, на котором ты писал? Django, Flask, Fastapi... 23:20 - (Андрей) - Зачем нужны JWT токены? 24:25 - (Артём) - Задача №2 - Палиндром 42:25 - (Андрей) - Алгоритмическая сложность задачи №2 44:10 - (Артём) - Алгоритмическая сложность по памяти задачи №2 45:46 - (Артём) - Объяснение по алгоритм. сложности по памяти 46:40 - (Артём) - Как у тебя с Linux? На сколько ты уверенный пользователь? 48:30 - (Артём) - Самые популярные команды, которые ты используешь в Linux, что они делают? 49:45 - (Артём) - Зачем нужен Docker? Почему не Postgres? 51:45 - (Андрей) - Зарплатные ожидания, на сколько себя оценишь? 53:45 - (Андрей) - Фидбек 54:45 - (Артём) - Фидбек
@BylKaktus8 ай бұрын
Простой способ через while: ``` def is_polindrome(string): head = 0 tail = len(string) - 1 while head < tail: if string[head] != string[tail]: return False head += 1 tail -= 1 return True ```
@ВладЛемешко-д2э8 ай бұрын
самое красивое решение в одну строку) def isPalindrome(x): return x[::-1] == x
@justman0737 ай бұрын
И сразу будет засчитано как провал
@Существо-ч4о7 ай бұрын
@@justman073 а почему? изза сложности? тогда надо было бы вводить изначальное условие с ограничением сложности. Но такое ограничение введено не было, а следовательно позволялось его додумывание на основании объема задачи. При таком объеме это не существенно. Поэтому это скорее был бы не провал, а вопросы, типа "а еслибы слово было из миллиарда букв?" и т.д.
@sscapture9 ай бұрын
Удачи парню!
@erlan41237 ай бұрын
Проходил эту задачку у Сергея Балакирева. Задачка изи на 3 минуты)
@ДенисЛит6 ай бұрын
Золотое у Вас терпение😂😂😂
@вадикминаев6 ай бұрын
Люди такие забавные тут сидят, наверно смотрят и думаю какие они умные, и могут все решить, поднимают свою самооценку
@AndyPronin6 ай бұрын
возможно, для неторых это важно
@WDemidenko5 ай бұрын
конечно, а это кому-то мешает что люди сидят поднимают себе самооценку?
@Chel1k79 ай бұрын
1) from django.db.models import Count Groups.objects.alias(count_posts=Count('posts')).filter(count_posts__gt=10), запрос легкий, но надо вспоминать ситаксис джанго орм, я лично с первого раза не вспомнил это) 2) def is_palindrome(string: str) -> bool: first = 0 last = -1 center = len(string) // 2 while first < center: if string[first] != string[last]: return False first += 1 last -= 1 return True
@7IdE9 ай бұрын
first < last - будет достаточно, если инициализировать через len(string) - 1.
@dazzline78009 ай бұрын
Там надо вывести не 10 постов, а все посты, где их больше 10
@Chel1k79 ай бұрын
@@dazzline7800 ну вот тут ты показал всю мощь своих знаний, красава
@dazzline78009 ай бұрын
@@Chel1k7 ну я потом глянул вспомнить как вообще Джанго выглядело и половина сразу написал 😅
@rudolf_rozbergo99 ай бұрын
А задачу с палиндромом нельзя было решить срезами? Сравнивая первую строку с второй перевёрнутой [::-1]. Или по условию надо было другим способом ?
@dazzline78009 ай бұрын
Можно, хотел, но сбился и пошли уже так
@slizverg239 ай бұрын
Это было бы не кошерное решение, Андрей об этом прямо сказал вроде бы. На интервью хотят увидеть более "алгоритмическое" решение
@MasterID9 ай бұрын
В YP только один ревьюер, это легенда (нельзя говорить его имя)
@AndyPronin9 ай бұрын
Мистер Кви не хочет вести собесы. Увы(
@UserName-xp4dk9 ай бұрын
def is_palindrome(string): for index in range(len(string) // 2): if string[index] != string[len(string) - index - 1]: return False return True Меня возьмут в Яндекс?
@ЗНАКОМЫЙСВАРЩИК9 ай бұрын
так же сделал, если что я следующий в яндекс за тобой)
@ИльяИлья-л1ю5д9 ай бұрын
Либо я чего-то не догоняю, допустим длина строки 10, цикл пробегается по значениям от 0 до 5, на первой проверке if сравнивает первый элемент с 4? Что за глупость
@UserName-xp4dk9 ай бұрын
@@ИльяИлья-л1ю5д Как ты получил 4? len(string) = 10, index = 0, len(string) - index - 1 = 9.
@ИльяИлья-л1ю5д9 ай бұрын
@@UserName-xp4dkпринял
@КонстантинАлексеев-ы9б9 ай бұрын
1вариант решения палиндрома (он же колхозный) def foo(value): return value==value[::-1] 2 вариант (уровень илита) def foo(value): If len(value) ==0: return True If value[0] != value[-1] : return False return foo(value[1:-1]) Мб что то и забыл, ибо пишу с телефона но суть такова
Ну, это было крайне слабо. Первая задача, ИМХО, крайне лютая для собеса - там нужно посидеть и подумать насчет subquery или annotated - а, мб, и погуглить. Только если часто такое пишешь, то можно написать в пределах собеса. Однако, это многое показало: 1. SQL он вообще не знает. После SELECT * там какая-то лютая дичь началась. Знал бы SQL, можно было бы, хотя бы, .raw() запрос кинуть. 2. Зачем-то ORDER BY туда приплетал, post_id... 3. Запрос, который он написал через ORM - тоже было крайне слабый: навскидку - у него фильтрация в методе .all(). 4. Начал писать запрос не от модели, а от request - тут сразу минус за знание Джанги: 2 доп вопроса вида "что такое request" и "что такое objects, где он есть и зачем" - и все, фиаско. Дальше перешли к алгосам. Человек ниже комментах написал, что пол полгода изучал алгосы. Это же он добавил в интервью. И еще добавил, что изучал сам Питон. Ну, когда я увидел, что задача - проверка на палиндром, то для человека с базой в алгосах в полгода я предположил, что через 2 минуты он напишет готовый код. Особенно после того, как он дал наиболее эффективный алгоритм для этой задачи. Еще и пафосно так назвал это "наивным алгоритмом, который первый пришел в голову". Но когда я увидел, как он код пишет... 5. Как можно пропустить двоеточие в конце if? Я такого не смог бы понять, даже если бы код писался без подсветки синтаксиса. Но тут даже Пичарм сам подсвечивает место синтаксической ошибки... 6. Положить в head и tail определенные символы строки - сомнительно, ну окай. А дальше он это назвал указателями и писал код совершенно для другого. 7. Сравнить конкретный символ строки со срезом? 8. Его совсем не смутило то, что его код 2 раза проверяет одни и те же пары символов. 9. Оценка сложности - тоже тотальнейший провал. О(n) по времени, а потом начал считать, сколько элементов проходит его алгоритм. Это не совсем минус, а, скорее, звоночек. 10. А вот на оценке памяти уже был колокол: О(n) по памяти? Ладно, это не самое плохое. Но говорить о том, что дальше будут вызовы функции и это нужно учесть в оценке алгоритма в самой функции?... И вот этот человек полгода алгосы изучал? Ну вообще хз. Как по мне, лучше бы он этого не озвучивал и пытался таким образом оправдаться - бы меньше вопросов и претензий возникло. Как по мне, если человек полгода изучает алгосы, то он при этом решает задачи. А если человек решает задачи, то он пишет код. И не может человек вот с такой скоростью писать такой код через полгода реального изучения алгосов. Как итог: SQL, ОРМ, Джанго, алгосы и, что самое главное, Питон - все это очень слабо. P.S. Есть те, кто на Джанге запрос составил из первой задачи? Скиньте, плз, хочу посмотреть на то, что в итоге получается. У меня вышло: SQL: SELECT * FROM Group AS g WHERE (SELECT COUNT(*) FROM Post AS p WHERE p.group_id = g.id) > 10 ORM: post_cnt = Post.objects.filter(group_id=OuterRef("pk")).count() groups = Group.objects.annotate(cnt=Subquery(post_cnt)) Но тут groups - это, кажись, словарь будет, где будут айдишники всех групп, а не нужные объекты. И по этому всему нужно будет еще и филтрацию обеспечить и сами объекты достать. А это уже N + 1... Кароче, покажите мне правильный ответ! :D
@Chel1k79 ай бұрын
from django.db.models import Count Groups.objects.alias(count_posts=Count('posts')).filter(count_posts__gt=10)
@7IdE9 ай бұрын
@@Chel1k7, ого. Это, я так понимаю, мало того, что Count через related_name отработает, так еще и фильтрация прям на месте доступна. Весьма любопытно. А как сам SQL запрос будет выглядеть? N + 1 не появится?
@Chel1k79 ай бұрын
@@7IdEN+1 нету, тулбар вот так показывает запрос: SELECT "category"."id", "category"."title" FROM "category" LEFT OUTER JOIN "movie" ON ("category"."id" = "movie"."category_id") GROUP BY "category"."id" HAVING COUNT("movie"."id") > 10 у меня вместо groups таблица category, вместо posts - movie
@Chel1k79 ай бұрын
@@7IdE ``` SELECT "category"."id", "category"."title" FROM "category" LEFT OUTER JOIN "movie" ON ("category"."id" = "movie"."category_id") GROUP BY "category"."id" HAVING COUNT("movie"."id") > 10 ``` нет n+1
@Chel1k79 ай бұрын
@@7IdE ютуб почему то удаляет sql запросы, не могу скинуть его сюда, N+1 нету, всё окей
@АртемПаршин-г5м3 ай бұрын
по-моему тут о Джанго речи вообще не может быть)
@МаксимПрикота-ь5и7 ай бұрын
ббл штриф больше
@TmsoftАй бұрын
на вскидку я бы попробовал сделать так, первое что пришло в голову Group.objects.select_related('posts')[:10] по поводу полиндрома я бы сравнил текущую строку со срезом в котором шаг отрицательный чтобы получить обратную последовательность и если прямая последовательность равна обратной то это полиндром на вскидку получилось бы даже наверное так def is_polindrome(s: str) -> bool: return s == s[::-1]
@ПуляевГригорий9 ай бұрын
Деточка, какие 50к? В других странах такие как ты сами за стажировку платят что бы с ним возились.
@dazzline78009 ай бұрын
К вашему сведению у меня в портфолио 30+ учебных проектов и расценки я выбирал исходя из региона. Не надо обрушать ранок в угоду корпорациям и гнать людей работать за еду
@vegzuzvegzuz28669 ай бұрын
@@dazzline7800 ключевая фраза "такие как ты". Потому что это был тотальный треш. Худший собес у Пронина за последние два года
@ПуляевГригорий9 ай бұрын
@@dazzline7800 Реальные проекты (это те которыми хоть кто то пользуется) у тебя есть? Что то мне подсказывает что нет. А за рынок и корпорации не переживай, ты никому и даром не нужен.
@КоляБереговой-с4и9 ай бұрын
Вот иди и сам за еду работай9
@seykonag39829 ай бұрын
@@dazzline7800к вашему сведению вы на интервью полностью облажались, пусть у вас хоть миллион проектов на гите будут, с таким интервью они приравниваются к списанным проектам
@gucci1260Ай бұрын
Крииииинж
@21730459 ай бұрын
Как он сдал диплом и как он сдавал задания с такими знаниями . Сам учился и понимаю как это не просто временами , даж если представить что он все списывал ,есть ведь ревью и защита . Плюс только за смелость.
@dazzline78009 ай бұрын
Как раз потому что и не записывал, так за полгода у меня уже всё повылетало из головы 😅
@21730459 ай бұрын
@@dazzline7800 про orm верю , но как индексы и срезы могли вылететь. В любом случае удачи тебе , я сам волнуюсь на собеседование и многое забывается .
@MrBeltalowda9 ай бұрын
def is_palindrome(s: str)->bool: return all((x==y for x,y in zip(s, s[::-1])))
@АлександрТезин-м6ъ9 ай бұрын
лучше так: def is_palindrome(s: str)->bool: if s == s[::-1]: return True return False
@MrBeltalowda9 ай бұрын
@@АлександрТезин-м6ъ тогда проще return s == s[::-1]
@over30898 ай бұрын
В этом решении потребуется дополнительная память
@MrBeltalowda8 ай бұрын
@@over3089 единственное, для чего нужна дополнительная память - это построить обратный срез из s. если использовать reversed(s), она не потребуется
@oreh3508 ай бұрын
Хм. А я вот так сделал: def is_palindrome(string: str) -> bool: new_string = string[::-1] return True if new_string == string else False Нормальное ли это решение с точки зрения алгоритмов? Может оно жрет дофига памяти, я в этом очень плохо разбираюсь. Мурыжу пока Codewars, до leetcode не добирался