Пікірлер
@MessirAvgur
@MessirAvgur Күн бұрын
Проходил я этот собес я Яндексе неделю назад. Был какой-то бородатый хуй с яндекс.такси. Требовал знание конкретной базы, в моем случае Redis, и знаний конкретных структур данных. Так что это было нихера верхнеуровневый дизайн, паттерны, знание ролей компонентов, бла-бла-бла... Так что все это хуйня. А собеседующий в этом - профи, настоящий архитектор без короны. Вот я как раз готовился к такому интервью. А попался мне какой-то ебанат. Так что, учитывая длинный и мутный флоу Яндекса - не рекомендую.
@flykby
@flykby Күн бұрын
Можете обьяснить джуну, пожалуйста, в чем минус хранить в кэше не готовую ленту для пользователя из 20 постов, а хранить 20 последних постов пользователей и на основе того, что нам известны подписки пользователя, формировать его ленту?
@timmyyyyyyyyyyyydimkakoopa5732
@timmyyyyyyyyyyyydimkakoopa5732 11 сағат бұрын
если сравнить структуру двух кэшей, в каждой из структур мы делаем выбор в пользу того или иного преимущества с наименее болезненным негативным эффектом - id1 : { post1, post2, post3..} - id2 : { post1, post2, post3..} - id3 : { post1, post2, post3..} - id4 : { post1, post2, post3..} vs - id1: { post78, post3001, post134} - id2: { post901, post3001, post124} - id3: { post1101, post32, post10229} __________________ условное сравнение преимущества первого перед вторым будет следующим: - легко получает записи, если перейдёшь на страницу (условный ВК/twitter/Instagram -> ты увидел страницу, зашёл на неё и тебе из кэша подгрузили n первых постов определённого пользователя) - легко собирать ленту, если у тебя частые операции на подписку/отписку, при которой формирование ленты идёт путём merge операций по timestamp в постах (к примеру у тебя есть n друзей на основе которых в твоём кэше собрана лента, отписываясь от нескольких друзей тебе сложнее вычленить посты этих друзей в уже пред-подготовленной ленте редиса) - рассматривая поддержку редактирования поста (пользователь опубликовал запись, затем отредактировал текст к ней), и после редактирования мы снова должны пробежать по n подписчикам и обновить пост для каждого из них, чтобы в момент получения /feed мы увидели уже обновлённый пост, в то время как отношение id - { posts} просто на этапе запроса ленты по id друга вытянет актуальное состояние поста (не нужно каждое редактирование поста отправлять в n друзей, обновляя их пред-подготовленную ленту)
@user-zx6fq1ig4h
@user-zx6fq1ig4h Күн бұрын
Зачем все это делать в реальном времени? Дается задание, дается время на реализацию, потом можно обсудить результат и в процессе обсуждения скорректировать элементы.
@user-ly6cv4sx2w
@user-ly6cv4sx2w 2 күн бұрын
да, вот это "инженеры" - не могут байтики между размерностями сконвертировать, зато архитектуры инстараграмов обсуждают, слова умные заучили, ДАУ, МАУ, трафик, капасити... не удивлюсь, если у этих "архитекторов" за плечами лишь колледжи и гребля на галере N лет, после которых они посчитали себя архитекторами, назвались синьорами, тимлидами и думают, что действительно что-то умеют
@timmyyyyyyyyyyyydimkakoopa5732
@timmyyyyyyyyyyyydimkakoopa5732 2 күн бұрын
аргумент в пользу таких инженеров прост: - расчет произвести можно в конвертере и калькуляторе, не столь важно, но отличие лишь в том, что если человек умеет рассчитывать безошибочно на листочке, это продвинет лишь на одну ступеньку вверх к систем дизайну на обсуждение непосредственно системы - знание constant hashing, sharding, LB, quadtree cassandra vs mongo (master/replica strategy) и прочее, сильно может повлиять на экономику проекта не судите по себе, если вы посчитали правильно, но другие нет. Видео носит информативный характер, очень хорошо, если вы что-то из него подчерпнёте полезное. Комментарий неадекватный по своей агрессивной интонации и наверняка, ваш болезненный и тернистый путь к вершине карьеры сказывается на вас травмой, но не все должны страдать как вы. ___________ повторюсь, на видео люди УЧАТЬСЯ, демонстрируют свои навыки и определяют свои знание на общей системе координат. Они не обязаны вам или кому-то еще. Любой желающий может поучаствовать в таком мероприятии, запишитесь и вы. Очень стыдно читать не поддержку коллеги, а попытки пристыдить. Укажите на ошибки, поправьте, скиньте ресурсы, есть другой подход в обучении
@timmyyyyyyyyyyyydimkakoopa5732
@timmyyyyyyyyyyyydimkakoopa5732 2 күн бұрын
p.s. [являюсь опытным backend разработчиком и сертифицированным архитектором]
@user-ly6cv4sx2w
@user-ly6cv4sx2w 2 күн бұрын
@@timmyyyyyyyyyyyydimkakoopa5732 судя по количеству слов в вашем комментарии, моё сообщение вас сильно задело :) ваши "аргументы", как и, вероятно, ваши сертификаты, бессмысленно комментировать. Метать перед свиньями бисер себе дороже.
@danilistomin5181
@danilistomin5181 2 күн бұрын
биты в байты почему то умеют конвертировать ученики 5го класса, а вот сделать приложение - почему то не все ученики 5го класса :) не находишь ничего странного? да ты видимо и есть тот самый злой стажер который не может 5 лет уже найти работу хотя выучил всю "БАЗУ" но не устроился даже на 20 тыщ .... рублей в месяц
@timmyyyyyyyyyyyydimkakoopa5732
@timmyyyyyyyyyyyydimkakoopa5732 Күн бұрын
​@@user-ly6cv4sx2w буду очень признателен, если увижу от вас ВАШУ ссылку на линкедин профиль. Задеть комментарием, вы конечно значительно преувеличиваете.. нет абсолютно никакого повода кому-то что-то доказать, чего о вас не скажешь
@apn0597
@apn0597 2 күн бұрын
На мой взгляд систем дизайн это всегда разговор, как с коллегой, не всегда крайние случаи и острые углы архитектуры может продумать один человек, поэтому для интервьюера не зазорно делать на таких вещах акцент, потому что вы на время интервью - одна команда, которая строит архитектуру продукта. И это нормально не покрыть все аспекты в интервью, ведь оно проверяет технологический кругозор и опыт интервьюемого. Хороший собес вышел, свою компетентность парень показал. Гуд!
@user-pk2bo6wq6d
@user-pk2bo6wq6d 2 күн бұрын
12:17 Расчеты немного неверные, вы 200 байт прибавили к 500 КИЛОбайт
@egnpost8114
@egnpost8114 2 күн бұрын
Как всегда супер!
@gregory._
@gregory._ 4 күн бұрын
1:06:44
@iFATUM88
@iFATUM88 13 күн бұрын
Прикольное интервью, но хотелось бы понять: 1. На какой уровень это интервью 2. Такого рода задачи где то применяются на практике? Какие задачи решают?
@OlegToropov-uj6jh
@OlegToropov-uj6jh 15 күн бұрын
Молодец хорошо держится! Красавчик!
@user-yd9xy3rb4x
@user-yd9xy3rb4x 16 күн бұрын
Стопэ, вторая задача это по моему easy с leetcode
@user-yd9xy3rb4x
@user-yd9xy3rb4x 16 күн бұрын
Я то думал там спрашивают какой то ужас, а там чет все слишком легкое
@user-dz6by9gb9y
@user-dz6by9gb9y 20 күн бұрын
А зачем для этой задачи SQL DB? При 100нях миллионов - миллиардах записей тотже постгрес будет существенно замедляться. И тут вовсе не нужна транзакционность и поэтому таже Mongo будет явно предпочтительнее Постгреса (хотя под SQL может что-то другое имелось в виду). Для чего эта история с заготовленными ссылками можно просто брать timestamp 4 байта + 4байта случайное число? Вероятность коллизиии минимальна c учетом 40rps на запись и решается повторной перегенерацией в случае неудачи ( вероятность коллизии 40/4 000 000 000 = 0.000001%). И про кеш совсем не очевидная история: смущает срок жизни ссылки - 10 лет, и на эти 10 лет жизни 100 запросов на ее чтение (конечно можно предположить, что пик запросов придется на какой-то короткий интервал после выдачи, но все равно использование кеша не очевидно при данных вводных). В общем мне кажется, что о многих очевидных вещах много поговорили, а про многие важные вещи, такие как выбор СУБД (как мне кажется это ключевое) не поговорили
@UmanIgor
@UmanIgor 22 күн бұрын
var str = "abcabcbb"; // 'abcaebac' var fn = (str = '') => { if (!str) return 0; var max = 1; for (var i = 0; i < str.length; i++) { var sub = str[i]; var n = i + 1; if (max > (str.length - i)) return max; while (n < str.length) { var ch = str[n]; if (!~sub.indexOf(ch)) { sub += ch; if (max < sub.length) max = sub.length; } n++; } } return max; }
@kOzae6bI4
@kOzae6bI4 23 күн бұрын
Забавно, но первую задачу вот как есть только что давали мне в мете на интервью в конце апреля
@user-vr4rf3se7f
@user-vr4rf3se7f 24 күн бұрын
в вопросе с дефером где 123 и 456 вообще то в исходном задании выводится 456 а не 123
@Magomedrasul7
@Magomedrasul7 27 күн бұрын
Что если упадет хранилище заготовленных ссылок 200кк ? Если это inMemory хранилище, то при рестарте оно восполнится снова этими же заготовками или же будут новые заготовки ? 🤔
@yaroslavlymar6599
@yaroslavlymar6599 27 күн бұрын
Я был на совсем другом собесе в Яндекс. Там были задачи Хард из литкода, где не базовые алгоритмы нужно писать.
@ihorvodko767
@ihorvodko767 28 күн бұрын
Проблема интервалов не полностью решена с точки зрения временной сложности. 1) Создайте вектор с размером = максимальному концу всех интервалов. 2) Перебрать входные интервалы и сохранить их в векторе: позиция вектора - это начало интервала, если интервал уже существует, объединить эти два интервала. 4) Взаимодействие с вектором для обработки интервалов в соответствии с логикой видео. Временная сложность равна O(n), n - количество введенных интервалов. (нет необходимости сортировать O(n*log(n))). Сортировка подсчетом выполняется за время O(n), что делает ее асимптотически быстрее, чем алгоритмы сортировки на основе сравнения, такие как быстрая сортировка. ================================================================================================= хорошее место для практики (не стесняйтесь поставить звезду :) ) github.com/IhorVodko/Hackerrank_solutions
@haiwiaksbab7362
@haiwiaksbab7362 28 күн бұрын
Интервюер мямлит, вебки закрывают код
@noone7796
@noone7796 Ай бұрын
26 букв, + верхний регистр + числа в 8 символах это 62^8 возможных уникальных значений. разве вероятность коллизии высокая?
@oo_ilin
@oo_ilin Ай бұрын
В вашем варианте словарь хороший и коллизий в принципе нет если генерировать ключ последовательно. Речь шла о другом. Что если взять какой-нибудь алгоритм хеширования, например MD5, то у него длина 32 символа, а сами символы это всего лишь шестнадцатиричная система: 0-9A-F. Так как наша задача сделать короткую ссылку, то если мы от md5 отрежим 8 символов, то будет очень высокая вероятность коллизии. Ну и в интервью я подталкивал Сашу на то что 8 символов это очень большое число уникальных значений и ключ можно сократить до 6 или 7 символов.
@noone7796
@noone7796 Ай бұрын
Почему тут не модет быть проблема селебрити? Кто-то популярный создал ссылку и разметил ее у себя в соц. сетях, на эту одну ссылку будет очень много запросов на чтение. Кажеться интервьюируемый правильно задал вопрос.
@oo_ilin
@oo_ilin Ай бұрын
Потому что проблема селебрити в том что один человек может иметь много связей. Например много подписчиков и проблема оповестить всех о выходе нового поста. Тут ты делаешь ровно один адрес и никого не уведомляешь. Тут проблема высокого трафика, а это уже другая история.
@comparison9436
@comparison9436 Ай бұрын
Чел идет на тим лида, использует сортировку и говорит скорость линейная🤦🏻 как их вообще рассматривают с такими знаниями?
@Miclell
@Miclell Ай бұрын
Как можно распинаться пол часа при решении столь лёгкой задачи то?
@user-zp7ty5yh7w
@user-zp7ty5yh7w Ай бұрын
Вы идиот?
@HeczZots
@HeczZots Ай бұрын
в цикле будет паника если в матрице пустые массивы без элементов
@user-zl1zv9wi3m
@user-zl1zv9wi3m Ай бұрын
Вопрос к Авито. А что у вас за разработчики такие, что доказывают мне, что при передаче ссылки на структуру в метод, на новый стектрейс помимо передачи ссылки происходит еще и копирование на куче! Был у вас на собеседовании (N этапов) и на кодинге после такого не знал что ответить. А позиция у человека была далеко не старший =)
@user-uv8ll6bl7t
@user-uv8ll6bl7t Ай бұрын
Во 2й задаче можно уйти от for: в store хранить актуальные позиции встреченных символов и двигать левый указатель сразу на старый + 1, если символ уже встречался и его позиция > текущего левого. Позиции всегда обновляем
@romanarxxy
@romanarxxy Ай бұрын
18:19, ну я бы не сказал что 2 ответа скорее, abc, bca, cab, abc, 4 ответа, получается, разве не так?
@user-nl7fw3yp8p
@user-nl7fw3yp8p Ай бұрын
так сосредоточились на очепятках, что забыли вызвать анонимную горутину в конце)
@dimama1551
@dimama1551 Ай бұрын
Наш брат головами таких в школе мел с доски вытирал
@user-cs3db6ct2o
@user-cs3db6ct2o Ай бұрын
Я б обернул select в for, потому что вместо долгого ответа получили ошибку отмены таймаута. Как была низкой стабильность метода, так и осталась.
@lauhG3
@lauhG3 13 күн бұрын
зачем? ты в селекте ждешь канал который быстрее сработает. Там нету смысла обрабатывать другой код в этот момент
@young_flex3077
@young_flex3077 Ай бұрын
16:35 ну все задачу с первой проходки не решил, в яндекс не берем
@young_flex3077
@young_flex3077 Ай бұрын
6:11 Володька, что с лицом, совсем уже на юродивого стал похож со своими алгоритмами. Выйди на улицу, с детишками погуляй
@iamo0
@iamo0 Ай бұрын
Досмотрел (предыдущий коммент писал посреди видео). Собеседующий хорошо видит что происходит, адекватно оценивает ситуацию, учитывает все детали и когда что-то для себя прояснил, готов двигать интервью вперед даже самостоятельно подсказывая соискателю. Очень круто и профессионально. Респект.
@iamo0
@iamo0 Ай бұрын
Собеседующий дает некоторые ответы соискателю. На самом деле это не хорошо и не плохо, можно если человек запутался подтолкнуть его и смотреть на блеск в глазах, все еще понимает он контекст или мы его потеряли. Но может быть и наоборот: кто-то пролезет на энтузиазме собеседующего. Но может быть этот энтузиазм происходит из того, что ребята друг друга знают.
@user-je8yv6gq7o
@user-je8yv6gq7o Ай бұрын
Это нумерология какая то что ли? Или астрология?
@user-fb6wy6sq6o
@user-fb6wy6sq6o Ай бұрын
Какие map? Вектора надо использовать во второй задаче. С этими map до 100 символов алфавита вектор быстрее будет тупо из за того, что проц хотя бы закешировать значения себе сможет. В map элементы памяти по разным адресам находятся. Это очень медленно.
@user-cg7jr2kt4l
@user-cg7jr2kt4l Ай бұрын
В задаче про мердж каналов мы возвращаем закрытый канал. Что нам потом делать с закрытыми каналом? На 7 строчке мы всегда будем виснуть, потому что из этого канала никто не читает. Примерно код должен выглядеть так; out := make(chan int) defer close(out) go func() { // Код записи из всех каналов в out } return out
@user-cg7jr2kt4l
@user-cg7jr2kt4l Ай бұрын
Чувак вообще не понимает основы программирования и компьютер сайнс, какой ему junior ему бы ещё годик поучиться
@spinacker16
@spinacker16 Ай бұрын
дали тимлиду два изяна... а мне хард впаяли с дп на 50 строк кода.
@tsttst3179
@tsttst3179 Ай бұрын
Вроде на собеседованиях в яндекс задачи сильно сложнее спрашивают. Или это не так?
@poezdun
@poezdun 2 ай бұрын
А вы никогда не задумывались - нахер так жить? Исполнять код в уме, париться над подкапотными гвоздями? Убогие гошники...
@funnyduck6326
@funnyduck6326 2 ай бұрын
Спасибо большое, интересное собеседование и хорошего уровня кандидат))
@user-zi3er5oi5y
@user-zi3er5oi5y 2 ай бұрын
Именно из-за таких собеседований я каждый раз отказываю рекрутерам яндекса
@calculaction
@calculaction 2 ай бұрын
Полезно! Жду ещё! пс: на опечатки время я бы не тратил и на кучу лишних слов о кружках и к!отиках (имхо)^^
@murad_shafii
@murad_shafii 2 ай бұрын
поддерживаю
@user-qp3lt4ps8c
@user-qp3lt4ps8c 2 ай бұрын
Хороший собес, лайк!
@gerojstalnoj9708
@gerojstalnoj9708 2 ай бұрын
Чувак пол собеса палил ответы с экрана🤣 Топ🤘
@user-od1cu8kz7g
@user-od1cu8kz7g 2 ай бұрын
Николай II на собеседовании, вот чудеса!
@qbee1
@qbee1 2 ай бұрын
мб я путаю, но в задании со строками при range гошка сама же в руны преобразовывает, а чтобы идти по байтам надо Итовый форик, и тащить по индексу?
@user-ui7ml6rb9z
@user-ui7ml6rb9z 2 ай бұрын
Ты прав, бро
@artartov2018
@artartov2018 2 ай бұрын
2 дкнь изучаю Го, изи решил все задачи! )))