Вот как нужно проходить собеседование на Junior Python разработчика
Хочешь участвовать в таком же Mock Interview? Пиши + в комменты на нашем телеграм канале - t.me/YourCodeReview
Посмотреть описание этой вакансии - docs.google.com/document/d/1h...
Больше про разработку в нашем телеграм канале! Подписывайся :)
t.me/YourCodeReview
00:00 - Intro
2:00 - Знакомство с кандидатом
6:31 - Первые вопросы
26:50 - Начало технической части
01:10:13 - Фидбэк
01:26:40 - Закулисье :)
Пікірлер: 58
Ребят, если вам понравился видосик, то поставьте ему лайк! По братски :) Ваша поддержка нереально много для нас значит!
Спасибо за видос. Очень интересное интервью
Благодарю, качественно.
Не могли бы добавить тест-кейсы задачи? Интересно попробовать самому решить🙂
Интересный собес! По поводу задачи на слияние двух отсортированных последовательностей, то на ум сразу пришел Two Pointers
@VGCor
5 ай бұрын
Ну это не наши методы) В смысле не методы питонистов
def func(lst1, lst2): return sort(lst1 + lst2, key=lambda(x, int(x.split(" ")[0]))). Первое, что пришло в голову после того, как ознакомился с условием)
В первой задаче можно определить класс передать параметры в конструктор все три значения, перопределить методы сравнения и в результирующей функций сплитит строки и передавать аргументом в класс и накинуть аргумент sort(key=instance.timestamp) Незнаю будет ли работать, накинул из головы
Задача в две строки решается (можно в одну). Вначале сплит, потом heapq. merge листов. И можно любое количество датчиков обработать через *args.
@mgotovtsev
5 ай бұрын
Фаааак... Парень потом прямо говорит, что через кучу надо решать эту задачу 😂😂😂 когда писал решение ещё не досмотрел до конца. Если без merge готового делать, то нужно да через кучу в цикле перебирать итераторы. Делал подобное когда-то... Там значения только из файлов приходили. После каждой итерации вызываем хипифай и берëм значение, и делаем некст соотв. итератору.
ещё бы увидеть, что там за задача, а то на слух сложно
чотенько! лайк от СЕООНЛИ!
При всём уважении объясните мне, пожалуйста, почему эту задачу не решили банальным сложением списков и сортировкой с ключом по анонимной функции lambda, в которой мы каждый список сплитуем и сортируем по первому элементу сплита? Тогда будет всего 4-6 строчек кода. Или я неправильно задачу понял?
Что за кринжатина, 30 минут ковырять задачу которая легче чем задача 26 из егэ. Кликбейтный заголовок ...
@shoggot282
6 ай бұрын
иди порешай егэ братик обязательно поможет там еще 27 я слышал есть вапще страх вот решишь и точно на работу устроишься
@fokas8174
Ай бұрын
@@shoggot282я в этом году егэ сдавал. Сделал 27, только для б пункта не успел, остальное все сделал. Егэ изи, но оно очень тупое, для проверки программирования…
Как Кирилла меня задело написание имени а одной буквой Л 😂😂😂
комментаторы смешные, толи не понимают задачи, толи не понимают ограничения. какие result.append( some_list [ i ] )? у вас память бесконечная? только result.append( some_list . pop( 0 ) какие return sorted? опять память кокой sort ( some_list )? n log n, а надо за n да, и на верхнем уровне список дополняется до длины int ( log ( len ( spisok_spiskov ) ) ) + 1 пустыми списками, поверх итеративно merge через for (1, len (spisok_spiskov ), 2) --> сокращение списка до 1 за log n
это надо быть надмозгом созать i и j коунтеры и затем делать цикл в цикле c i и j
если идти не на питон разраба а на джанго то будут ли такие задачи?
@Developerchik
5 ай бұрын
Там похожие но чуть сложнее и с вводными данным разными и валидацией
@muvegamehard6032
3 ай бұрын
Чего??А Джанго у тебя не на питоне написана)))Один хрен сначала питон спрашиваю базовый(если на джуна идешь) , потом к джанго переходят , мидлвары, orm джанговская + rest ( без него хрен найдешь вакансию) , + http,smtp,https что и как куда и где, зачем и тд и тп
@muvegamehard6032
3 ай бұрын
Это так что первое в голову пришло по вопросам
А что обычный extend изначально был запрещен? К чему сложности через while?
@VaeVictisDanil
10 ай бұрын
Если написать просто extend, то условие отсортированности результирующего массива не будет соблюдаться
@user-gp7ew4jj2h
9 ай бұрын
@@VaeVictisDanil а что sorted запрещен?
@1234567qwerification
9 ай бұрын
Тогда следующим вопросом было бы что-то про "о большое"? 😀
@arthurlouiskarl
8 ай бұрын
@@user-gp7ew4jj2hкакой смысл в алго-собесе, если можно сортировать функцией из стандартной библиотеки? да и сильно неэффективно вышло бы, важна оптимальность решения по скорости и по памяти
@user-gp7ew4jj2h
8 ай бұрын
@@arthurlouiskarl какой алгособес джуну? ладно бы он основной функционал еще показал, что он понимает, что есть другие способы. то, что он выдал в видосе, это базовый гигачад пришедший из сей. смысл в питоне и куче его полезных функций и либ, если ты не в состоянии показать это хотя бы в самом начале, прежде чем начнешь что-то подобное лепить? я не говорю, что он это сделал неправильно, я говорю, что я бы на собесе джуна алгоритмы проверял во вторую очередь. возможно перед видео они уже что-то обсудили и оценили, поэтому решили сразу так, но у зрителя такой информации нет. почему сразу не прыгнуть к torch GPU сорту, который самый быстрый на данный момент? Это даже больше вопрос не к джуну, а к интервьюеру
Какое решение оптимальное?
@kurisug8867
9 ай бұрын
a = '1111 name2 1111' b = '1111 name1 1111' c = '3333 name3 5555' d = '3333 name4 2222' g = '2222 name4 5555' def sort(*args): res = [] for arg in args: res.append(arg) return sorted(res, key = lambda x: (int(x.split(' ')[0]),int(x.split(' ')[2]),int( x.split(' ')[1])) print(sort(a, b, c, d, g)) вот что я придумал буквально за 10 минут (изучаю python месяца 3)
@runneso
9 ай бұрын
@@kurisug8867 Сложность nlogn ,а в видосе делают за линейное , что быстрее
@vvvarvfx
9 ай бұрын
@@kurisug8867 Это код не работает. Более того, задача была не об этом. Изначально приходят отсортированные списки, в которых хранятся данные.
Спрм в жп
def neuro_lists_merge(_list1, _list2): _list1.extend(_list2) return sorted(_list1, key=lambda x: int(x.split()[0])) 🤷♀
это что за трэш контент ? задача в 4-5 строк решается
на словах от интервьювера о том что общения с людьми будет меньше, видео можно закрывать. Из кодера можно сделать любую обезьяну, зачем нанимать для этого людей.
Чел в кепке похож на Тома Холланда
@yourcodereview
9 ай бұрын
Это он и есть
ilst = ['222 str data', '444 str data', '555 str data', '888 str data'] jlst = ['555 str data', '999 str data', '1400 str data'] klst = ['2 str data', '3 str data', '51 str data'] res = [] def sort_data(*args): if max(len(lst) for lst in list(args)) == 0: return lists = [lst for lst in list(args) if len(lst) != 0] first_items = [int(lst[0].split(' ')[0]) for lst in lists] min_idx = 0 for idx in range(len(first_items)): if first_items[idx] min_idx = idx res.append((lists[min_idx]).pop(0)) return sort_data(*args) sort_data(ilst, jlst, klst) print(res) 😅
Сам еще даже не джун и не стажер Если я верно понял, то на вход функция получает строки текстовые, почему начали говорить о листах не ясно...(p.s. свой пример делал из 3 строк) Вижу такое решение, вводим на вход функции 3 строки, их сплитуем и делаем из них те самые листы..) Делаем общий лист добавляя в него под листы тех самых строк, и вызываем built-in функцию Sorted и сортировку по ключу делаем ( через анонимку ключом указываем 0 элемент листа т.е. тот timestamp) выдаем на выход функции.. Если я что то натупил то поправьте.. def mergeandsort(fR: str, lR:str , nR: str)->list: fR=fR.split() lR=lR.split() nR=nR.split() result=list() result.append(fR) result.append(lR) result.append(nR) return sorted(result,key= lambda x: int(x[0]),reverse=False)
@user-qv3jj2lv5h
8 ай бұрын
Вы неправильно поняли суть задачи. С каждого датчика приходят список строк. Каждая строка это три значения разделенные пробелом. То есть в первом списке может быть например 1500 строк формата "1827361 name_metrik 1231712". А во втором списке может быть например 20000 строк такого же формата. Нужно сделать список, в котором будет 21500 строк, но они ещё и должны быть отсортированы по первому значению. Попробуйте решить)
Фу, 🤮
def merge_sorted_lists(list1, list2): return sorted(list1 + list2, key=lambda x: x.split()[0])
@user-tk5xm4ox2c
5 ай бұрын
та же фигня)
def merge_ordered_lists(metric, *args): return sorted(value for values in args for value in values if value.split()[1] == metric ) # time O(n log n), space O(n)
кринжа сишного навалил))) result.extend([list1,list2]) return sorted(result)
@ussenUtebayev
9 ай бұрын
Интересно как он будет string сравнивать, по лексикографическому порядку?
@user-gp7ew4jj2h
9 ай бұрын
@@ussenUtebayev так как таймштамп стоит в начале строки, то и сортировать будет по нему, а именно по возрастанию аски кодов
@eeeeeeee133
9 ай бұрын
merge sort 2 отсортированных массивов за n происходит, твой вариант за n log n
@1234567qwerification
9 ай бұрын
Таймстемпы будут одинаковой длины ещё очень долго (раньше кончится инт32, чем достигнет 10 миллиардов). Но да, формально надо приводить к числу.
@user-gp7ew4jj2h
8 ай бұрын
в данном случае на мой взгляд доли секунд компенсируются простой, если бы стоял вопрос оптимизации под нагрузку, тогда бы это имело место. приведенный мной вариант это первое, что должен написать питонист, все таки для выполнения хайлоад задач есть другие инструменты@@eeeeeeee133