Потренируйтесь проходить собеседования с разработчиками из ведущих компаний и получите подробный отзыв о том, на какую зарплату и грейд вы можете расчитывать, или над чем вам еще стоит поработать.
буквально кейс из одной из первых глав книги с кабанчиком (про твиттер), как раз сейчас читаю ее и очень приятно было послушать обсуждение этой задачи! спасибо!
@yami_currКүн бұрын
12:20 я так и не понял, как у вас а2 и а3 тут получаются разными. Я проверил сам и а2 и а3 должны выходят одинаковыми с cap = 6
@kaspirovskiyКүн бұрын
Мне кажется дизайн должны делать LLM для человека это слишком
@BoQbL1k2 күн бұрын
Что за задачи такие где оценить сложность задачи уже сложно )
@_c_est_la_vie42773 күн бұрын
Ozon набор на route256: решите 8 около олимпиадных задач, чтоб попасть к нам на обучение Собес на джуна: что значит неизменяемый тип данных....
@algoseekee4 күн бұрын
Все круто. Спасибо. Пожелание: зумить схему чтобы было видно о чем речь идет. Excalidraw позволяет зумить.
@flykby9 күн бұрын
Можете обьяснить джуну, пожалуйста, в чем минус хранить в кэше не готовую ленту для пользователя из 20 постов, а хранить 20 последних постов пользователей и на основе того, что нам известны подписки пользователя, формировать его ленту?
@timmyyyyyyyyyyyydimkakoopa57328 күн бұрын
если сравнить структуру двух кэшей, в каждой из структур мы делаем выбор в пользу того или иного преимущества с наименее болезненным негативным эффектом - 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-zx6fq1ig4h9 күн бұрын
Зачем все это делать в реальном времени? Дается задание, дается время на реализацию, потом можно обсудить результат и в процессе обсуждения скорректировать элементы.
@vadimsobolevskiy55796 күн бұрын
Потому что оценивается не результат, а путь к результату.
@user-ly6cv4sx2w10 күн бұрын
да, вот это "инженеры" - не могут байтики между размерностями сконвертировать, зато архитектуры инстараграмов обсуждают, слова умные заучили, ДАУ, МАУ, трафик, капасити... не удивлюсь, если у этих "архитекторов" за плечами лишь колледжи и гребля на галере N лет, после которых они посчитали себя архитекторами, назвались синьорами, тимлидами и думают, что действительно что-то умеют
@timmyyyyyyyyyyyydimkakoopa573210 күн бұрын
аргумент в пользу таких инженеров прост: - расчет произвести можно в конвертере и калькуляторе, не столь важно, но отличие лишь в том, что если человек умеет рассчитывать безошибочно на листочке, это продвинет лишь на одну ступеньку вверх к систем дизайну на обсуждение непосредственно системы - знание constant hashing, sharding, LB, quadtree cassandra vs mongo (master/replica strategy) и прочее, сильно может повлиять на экономику проекта не судите по себе, если вы посчитали правильно, но другие нет. Видео носит информативный характер, очень хорошо, если вы что-то из него подчерпнёте полезное. Комментарий неадекватный по своей агрессивной интонации и наверняка, ваш болезненный и тернистый путь к вершине карьеры сказывается на вас травмой, но не все должны страдать как вы. ___________ повторюсь, на видео люди УЧАТЬСЯ, демонстрируют свои навыки и определяют свои знание на общей системе координат. Они не обязаны вам или кому-то еще. Любой желающий может поучаствовать в таком мероприятии, запишитесь и вы. Очень стыдно читать не поддержку коллеги, а попытки пристыдить. Укажите на ошибки, поправьте, скиньте ресурсы, есть другой подход в обучении
@timmyyyyyyyyyyyydimkakoopa573210 күн бұрын
p.s. [являюсь опытным backend разработчиком и сертифицированным архитектором]
@user-ly6cv4sx2w10 күн бұрын
@@timmyyyyyyyyyyyydimkakoopa5732 судя по количеству слов в вашем комментарии, моё сообщение вас сильно задело :) ваши "аргументы", как и, вероятно, ваши сертификаты, бессмысленно комментировать. Метать перед свиньями бисер себе дороже.
@danilistomin51819 күн бұрын
биты в байты почему то умеют конвертировать ученики 5го класса, а вот сделать приложение - почему то не все ученики 5го класса :) не находишь ничего странного? да ты видимо и есть тот самый злой стажер который не может 5 лет уже найти работу хотя выучил всю "БАЗУ" но не устроился даже на 20 тыщ .... рублей в месяц
@timmyyyyyyyyyyyydimkakoopa57329 күн бұрын
@@user-ly6cv4sx2w буду очень признателен, если увижу от вас ВАШУ ссылку на линкедин профиль. Задеть комментарием, вы конечно значительно преувеличиваете.. нет абсолютно никакого повода кому-то что-то доказать, чего о вас не скажешь
@apn059710 күн бұрын
На мой взгляд систем дизайн это всегда разговор, как с коллегой, не всегда крайние случаи и острые углы архитектуры может продумать один человек, поэтому для интервьюера не зазорно делать на таких вещах акцент, потому что вы на время интервью - одна команда, которая строит архитектуру продукта. И это нормально не покрыть все аспекты в интервью, ведь оно проверяет технологический кругозор и опыт интервьюемого. Хороший собес вышел, свою компетентность парень показал. Гуд!
@user-pk2bo6wq6d10 күн бұрын
12:17 Расчеты немного неверные, вы 200 байт прибавили к 500 КИЛОбайт
@egnpost811410 күн бұрын
Как всегда супер!
@gregory._12 күн бұрын
1:06:44
@iFATUM8821 күн бұрын
Прикольное интервью, но хотелось бы понять: 1. На какой уровень это интервью 2. Такого рода задачи где то применяются на практике? Какие задачи решают?
@OlegToropov-uj6jh23 күн бұрын
Молодец хорошо держится! Красавчик!
@user-yd9xy3rb4x24 күн бұрын
Стопэ, вторая задача это по моему easy с leetcode
@user-yd9xy3rb4x24 күн бұрын
Я то думал там спрашивают какой то ужас, а там чет все слишком легкое
@user-dz6by9gb9y28 күн бұрын
А зачем для этой задачи SQL DB? При 100нях миллионов - миллиардах записей тотже постгрес будет существенно замедляться. И тут вовсе не нужна транзакционность и поэтому таже Mongo будет явно предпочтительнее Постгреса (хотя под SQL может что-то другое имелось в виду). Для чего эта история с заготовленными ссылками можно просто брать timestamp 4 байта + 4байта случайное число? Вероятность коллизиии минимальна c учетом 40rps на запись и решается повторной перегенерацией в случае неудачи ( вероятность коллизии 40/4 000 000 000 = 0.000001%). И про кеш совсем не очевидная история: смущает срок жизни ссылки - 10 лет, и на эти 10 лет жизни 100 запросов на ее чтение (конечно можно предположить, что пик запросов придется на какой-то короткий интервал после выдачи, но все равно использование кеша не очевидно при данных вводных). В общем мне кажется, что о многих очевидных вещах много поговорили, а про многие важные вещи, такие как выбор СУБД (как мне кажется это ключевое) не поговорили
@UmanIgorАй бұрын
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Ай бұрын
Забавно, но первую задачу вот как есть только что давали мне в мете на интервью в конце апреля
@user-vr4rf3se7fАй бұрын
в вопросе с дефером где 123 и 456 вообще то в исходном задании выводится 456 а не 123
@Magomedrasul7Ай бұрын
Что если упадет хранилище заготовленных ссылок 200кк ? Если это inMemory хранилище, то при рестарте оно восполнится снова этими же заготовками или же будут новые заготовки ? 🤔
@yaroslavlymar6599Ай бұрын
Я был на совсем другом собесе в Яндекс. Там были задачи Хард из литкода, где не базовые алгоритмы нужно писать.
@ihorvodko767Ай бұрын
Проблема интервалов не полностью решена с точки зрения временной сложности. 1) Создайте вектор с размером = максимальному концу всех интервалов. 2) Перебрать входные интервалы и сохранить их в векторе: позиция вектора - это начало интервала, если интервал уже существует, объединить эти два интервала. 4) Взаимодействие с вектором для обработки интервалов в соответствии с логикой видео. Временная сложность равна O(n), n - количество введенных интервалов. (нет необходимости сортировать O(n*log(n))). Сортировка подсчетом выполняется за время O(n), что делает ее асимптотически быстрее, чем алгоритмы сортировки на основе сравнения, такие как быстрая сортировка. ================================================================================================= хорошее место для практики (не стесняйтесь поставить звезду :) ) github.com/IhorVodko/Hackerrank_solutions
@haiwiaksbab7362Ай бұрын
Интервюер мямлит, вебки закрывают код
@noone7796Ай бұрын
26 букв, + верхний регистр + числа в 8 символах это 62^8 возможных уникальных значений. разве вероятность коллизии высокая?
@oo_ilinАй бұрын
В вашем варианте словарь хороший и коллизий в принципе нет если генерировать ключ последовательно. Речь шла о другом. Что если взять какой-нибудь алгоритм хеширования, например MD5, то у него длина 32 символа, а сами символы это всего лишь шестнадцатиричная система: 0-9A-F. Так как наша задача сделать короткую ссылку, то если мы от md5 отрежим 8 символов, то будет очень высокая вероятность коллизии. Ну и в интервью я подталкивал Сашу на то что 8 символов это очень большое число уникальных значений и ключ можно сократить до 6 или 7 символов.
@aleksandr_t3 күн бұрын
@@oo_ilinКажется для того, чтобы ответить на этот вопрос, стоило понять какие конкретно символы у нас есть (алфавит), допустим если алфавит 72 (26 uppercase/lowercase, 10 цифр и 10 спец символов), то нам нужно как раз таки 6 символов (log72(10^10), 10^10 - потому что у меня получилось 12 * 10^9 ссылок за 10 лет, что примерно равно 10^10). Ну и блочный CRC как раз таки идеально подходит под эту задачу. Вообще задача хоть и тривиальная на первый взгляд, но может проверить глубокие знания и даже умение считать
@noone7796Ай бұрын
Почему тут не модет быть проблема селебрити? Кто-то популярный создал ссылку и разметил ее у себя в соц. сетях, на эту одну ссылку будет очень много запросов на чтение. Кажеться интервьюируемый правильно задал вопрос.
@oo_ilinАй бұрын
Потому что проблема селебрити в том что один человек может иметь много связей. Например много подписчиков и проблема оповестить всех о выходе нового поста. Тут ты делаешь ровно один адрес и никого не уведомляешь. Тут проблема высокого трафика, а это уже другая история.
@comparison9436Ай бұрын
Чел идет на тим лида, использует сортировку и говорит скорость линейная🤦🏻 как их вообще рассматривают с такими знаниями?
@MiclellАй бұрын
Как можно распинаться пол часа при решении столь лёгкой задачи то?
@user-zp7ty5yh7wАй бұрын
Вы идиот?
@HeczZotsАй бұрын
в цикле будет паника если в матрице пустые массивы без элементов
@user-zl1zv9wi3mАй бұрын
Вопрос к Авито. А что у вас за разработчики такие, что доказывают мне, что при передаче ссылки на структуру в метод, на новый стектрейс помимо передачи ссылки происходит еще и копирование на куче! Был у вас на собеседовании (N этапов) и на кодинге после такого не знал что ответить. А позиция у человека была далеко не старший =)
@user-uv8ll6bl7tАй бұрын
Во 2й задаче можно уйти от for: в store хранить актуальные позиции встреченных символов и двигать левый указатель сразу на старый + 1, если символ уже встречался и его позиция > текущего левого. Позиции всегда обновляем
@romanarxxyАй бұрын
18:19, ну я бы не сказал что 2 ответа скорее, abc, bca, cab, abc, 4 ответа, получается, разве не так?
@user-nl7fw3yp8pАй бұрын
так сосредоточились на очепятках, что забыли вызвать анонимную горутину в конце)
@dimama1551Ай бұрын
Наш брат головами таких в школе мел с доски вытирал
@user-cs3db6ct2oАй бұрын
Я б обернул select в for, потому что вместо долгого ответа получили ошибку отмены таймаута. Как была низкой стабильность метода, так и осталась.
@lauhG321 күн бұрын
зачем? ты в селекте ждешь канал который быстрее сработает. Там нету смысла обрабатывать другой код в этот момент
@young_flex3077Ай бұрын
16:35 ну все задачу с первой проходки не решил, в яндекс не берем
@young_flex3077Ай бұрын
6:11 Володька, что с лицом, совсем уже на юродивого стал похож со своими алгоритмами. Выйди на улицу, с детишками погуляй
@iamo0Ай бұрын
Досмотрел (предыдущий коммент писал посреди видео). Собеседующий хорошо видит что происходит, адекватно оценивает ситуацию, учитывает все детали и когда что-то для себя прояснил, готов двигать интервью вперед даже самостоятельно подсказывая соискателю. Очень круто и профессионально. Респект.
@iamo0Ай бұрын
Собеседующий дает некоторые ответы соискателю. На самом деле это не хорошо и не плохо, можно если человек запутался подтолкнуть его и смотреть на блеск в глазах, все еще понимает он контекст или мы его потеряли. Но может быть и наоборот: кто-то пролезет на энтузиазме собеседующего. Но может быть этот энтузиазм происходит из того, что ребята друг друга знают.
@user-je8yv6gq7oАй бұрын
Это нумерология какая то что ли? Или астрология?
@user-fb6wy6sq6oАй бұрын
Какие map? Вектора надо использовать во второй задаче. С этими map до 100 символов алфавита вектор быстрее будет тупо из за того, что проц хотя бы закешировать значения себе сможет. В map элементы памяти по разным адресам находятся. Это очень медленно.
@user-cg7jr2kt4lАй бұрын
В задаче про мердж каналов мы возвращаем закрытый канал. Что нам потом делать с закрытыми каналом? На 7 строчке мы всегда будем виснуть, потому что из этого канала никто не читает. Примерно код должен выглядеть так; out := make(chan int) defer close(out) go func() { // Код записи из всех каналов в out } return out
@user-cg7jr2kt4l2 ай бұрын
Чувак вообще не понимает основы программирования и компьютер сайнс, какой ему junior ему бы ещё годик поучиться
@spinacker162 ай бұрын
дали тимлиду два изяна... а мне хард впаяли с дп на 50 строк кода.
@tsttst31792 ай бұрын
Вроде на собеседованиях в яндекс задачи сильно сложнее спрашивают. Или это не так?
@poezdun2 ай бұрын
А вы никогда не задумывались - нахер так жить? Исполнять код в уме, париться над подкапотными гвоздями? Убогие гошники...
@funnyduck63262 ай бұрын
Спасибо большое, интересное собеседование и хорошего уровня кандидат))
@user-zi3er5oi5y2 ай бұрын
Именно из-за таких собеседований я каждый раз отказываю рекрутерам яндекса
@calculaction2 ай бұрын
Полезно! Жду ещё! пс: на опечатки время я бы не тратил и на кучу лишних слов о кружках и к!отиках (имхо)^^
Пікірлер
буквально кейс из одной из первых глав книги с кабанчиком (про твиттер), как раз сейчас читаю ее и очень приятно было послушать обсуждение этой задачи! спасибо!
12:20 я так и не понял, как у вас а2 и а3 тут получаются разными. Я проверил сам и а2 и а3 должны выходят одинаковыми с cap = 6
Мне кажется дизайн должны делать LLM для человека это слишком
Что за задачи такие где оценить сложность задачи уже сложно )
Ozon набор на route256: решите 8 около олимпиадных задач, чтоб попасть к нам на обучение Собес на джуна: что значит неизменяемый тип данных....
Все круто. Спасибо. Пожелание: зумить схему чтобы было видно о чем речь идет. Excalidraw позволяет зумить.
Можете обьяснить джуну, пожалуйста, в чем минус хранить в кэше не готовую ленту для пользователя из 20 постов, а хранить 20 последних постов пользователей и на основе того, что нам известны подписки пользователя, формировать его ленту?
если сравнить структуру двух кэшей, в каждой из структур мы делаем выбор в пользу того или иного преимущества с наименее болезненным негативным эффектом - 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 друзей, обновляя их пред-подготовленную ленту)
Зачем все это делать в реальном времени? Дается задание, дается время на реализацию, потом можно обсудить результат и в процессе обсуждения скорректировать элементы.
Потому что оценивается не результат, а путь к результату.
да, вот это "инженеры" - не могут байтики между размерностями сконвертировать, зато архитектуры инстараграмов обсуждают, слова умные заучили, ДАУ, МАУ, трафик, капасити... не удивлюсь, если у этих "архитекторов" за плечами лишь колледжи и гребля на галере N лет, после которых они посчитали себя архитекторами, назвались синьорами, тимлидами и думают, что действительно что-то умеют
аргумент в пользу таких инженеров прост: - расчет произвести можно в конвертере и калькуляторе, не столь важно, но отличие лишь в том, что если человек умеет рассчитывать безошибочно на листочке, это продвинет лишь на одну ступеньку вверх к систем дизайну на обсуждение непосредственно системы - знание constant hashing, sharding, LB, quadtree cassandra vs mongo (master/replica strategy) и прочее, сильно может повлиять на экономику проекта не судите по себе, если вы посчитали правильно, но другие нет. Видео носит информативный характер, очень хорошо, если вы что-то из него подчерпнёте полезное. Комментарий неадекватный по своей агрессивной интонации и наверняка, ваш болезненный и тернистый путь к вершине карьеры сказывается на вас травмой, но не все должны страдать как вы. ___________ повторюсь, на видео люди УЧАТЬСЯ, демонстрируют свои навыки и определяют свои знание на общей системе координат. Они не обязаны вам или кому-то еще. Любой желающий может поучаствовать в таком мероприятии, запишитесь и вы. Очень стыдно читать не поддержку коллеги, а попытки пристыдить. Укажите на ошибки, поправьте, скиньте ресурсы, есть другой подход в обучении
p.s. [являюсь опытным backend разработчиком и сертифицированным архитектором]
@@timmyyyyyyyyyyyydimkakoopa5732 судя по количеству слов в вашем комментарии, моё сообщение вас сильно задело :) ваши "аргументы", как и, вероятно, ваши сертификаты, бессмысленно комментировать. Метать перед свиньями бисер себе дороже.
биты в байты почему то умеют конвертировать ученики 5го класса, а вот сделать приложение - почему то не все ученики 5го класса :) не находишь ничего странного? да ты видимо и есть тот самый злой стажер который не может 5 лет уже найти работу хотя выучил всю "БАЗУ" но не устроился даже на 20 тыщ .... рублей в месяц
@@user-ly6cv4sx2w буду очень признателен, если увижу от вас ВАШУ ссылку на линкедин профиль. Задеть комментарием, вы конечно значительно преувеличиваете.. нет абсолютно никакого повода кому-то что-то доказать, чего о вас не скажешь
На мой взгляд систем дизайн это всегда разговор, как с коллегой, не всегда крайние случаи и острые углы архитектуры может продумать один человек, поэтому для интервьюера не зазорно делать на таких вещах акцент, потому что вы на время интервью - одна команда, которая строит архитектуру продукта. И это нормально не покрыть все аспекты в интервью, ведь оно проверяет технологический кругозор и опыт интервьюемого. Хороший собес вышел, свою компетентность парень показал. Гуд!
12:17 Расчеты немного неверные, вы 200 байт прибавили к 500 КИЛОбайт
Как всегда супер!
1:06:44
Прикольное интервью, но хотелось бы понять: 1. На какой уровень это интервью 2. Такого рода задачи где то применяются на практике? Какие задачи решают?
Молодец хорошо держится! Красавчик!
Стопэ, вторая задача это по моему easy с leetcode
Я то думал там спрашивают какой то ужас, а там чет все слишком легкое
А зачем для этой задачи SQL DB? При 100нях миллионов - миллиардах записей тотже постгрес будет существенно замедляться. И тут вовсе не нужна транзакционность и поэтому таже Mongo будет явно предпочтительнее Постгреса (хотя под SQL может что-то другое имелось в виду). Для чего эта история с заготовленными ссылками можно просто брать timestamp 4 байта + 4байта случайное число? Вероятность коллизиии минимальна c учетом 40rps на запись и решается повторной перегенерацией в случае неудачи ( вероятность коллизии 40/4 000 000 000 = 0.000001%). И про кеш совсем не очевидная история: смущает срок жизни ссылки - 10 лет, и на эти 10 лет жизни 100 запросов на ее чтение (конечно можно предположить, что пик запросов придется на какой-то короткий интервал после выдачи, но все равно использование кеша не очевидно при данных вводных). В общем мне кажется, что о многих очевидных вещах много поговорили, а про многие важные вещи, такие как выбор СУБД (как мне кажется это ключевое) не поговорили
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; }
Забавно, но первую задачу вот как есть только что давали мне в мете на интервью в конце апреля
в вопросе с дефером где 123 и 456 вообще то в исходном задании выводится 456 а не 123
Что если упадет хранилище заготовленных ссылок 200кк ? Если это inMemory хранилище, то при рестарте оно восполнится снова этими же заготовками или же будут новые заготовки ? 🤔
Я был на совсем другом собесе в Яндекс. Там были задачи Хард из литкода, где не базовые алгоритмы нужно писать.
Проблема интервалов не полностью решена с точки зрения временной сложности. 1) Создайте вектор с размером = максимальному концу всех интервалов. 2) Перебрать входные интервалы и сохранить их в векторе: позиция вектора - это начало интервала, если интервал уже существует, объединить эти два интервала. 4) Взаимодействие с вектором для обработки интервалов в соответствии с логикой видео. Временная сложность равна O(n), n - количество введенных интервалов. (нет необходимости сортировать O(n*log(n))). Сортировка подсчетом выполняется за время O(n), что делает ее асимптотически быстрее, чем алгоритмы сортировки на основе сравнения, такие как быстрая сортировка. ================================================================================================= хорошее место для практики (не стесняйтесь поставить звезду :) ) github.com/IhorVodko/Hackerrank_solutions
Интервюер мямлит, вебки закрывают код
26 букв, + верхний регистр + числа в 8 символах это 62^8 возможных уникальных значений. разве вероятность коллизии высокая?
В вашем варианте словарь хороший и коллизий в принципе нет если генерировать ключ последовательно. Речь шла о другом. Что если взять какой-нибудь алгоритм хеширования, например MD5, то у него длина 32 символа, а сами символы это всего лишь шестнадцатиричная система: 0-9A-F. Так как наша задача сделать короткую ссылку, то если мы от md5 отрежим 8 символов, то будет очень высокая вероятность коллизии. Ну и в интервью я подталкивал Сашу на то что 8 символов это очень большое число уникальных значений и ключ можно сократить до 6 или 7 символов.
@@oo_ilinКажется для того, чтобы ответить на этот вопрос, стоило понять какие конкретно символы у нас есть (алфавит), допустим если алфавит 72 (26 uppercase/lowercase, 10 цифр и 10 спец символов), то нам нужно как раз таки 6 символов (log72(10^10), 10^10 - потому что у меня получилось 12 * 10^9 ссылок за 10 лет, что примерно равно 10^10). Ну и блочный CRC как раз таки идеально подходит под эту задачу. Вообще задача хоть и тривиальная на первый взгляд, но может проверить глубокие знания и даже умение считать
Почему тут не модет быть проблема селебрити? Кто-то популярный создал ссылку и разметил ее у себя в соц. сетях, на эту одну ссылку будет очень много запросов на чтение. Кажеться интервьюируемый правильно задал вопрос.
Потому что проблема селебрити в том что один человек может иметь много связей. Например много подписчиков и проблема оповестить всех о выходе нового поста. Тут ты делаешь ровно один адрес и никого не уведомляешь. Тут проблема высокого трафика, а это уже другая история.
Чел идет на тим лида, использует сортировку и говорит скорость линейная🤦🏻 как их вообще рассматривают с такими знаниями?
Как можно распинаться пол часа при решении столь лёгкой задачи то?
Вы идиот?
в цикле будет паника если в матрице пустые массивы без элементов
Вопрос к Авито. А что у вас за разработчики такие, что доказывают мне, что при передаче ссылки на структуру в метод, на новый стектрейс помимо передачи ссылки происходит еще и копирование на куче! Был у вас на собеседовании (N этапов) и на кодинге после такого не знал что ответить. А позиция у человека была далеко не старший =)
Во 2й задаче можно уйти от for: в store хранить актуальные позиции встреченных символов и двигать левый указатель сразу на старый + 1, если символ уже встречался и его позиция > текущего левого. Позиции всегда обновляем
18:19, ну я бы не сказал что 2 ответа скорее, abc, bca, cab, abc, 4 ответа, получается, разве не так?
так сосредоточились на очепятках, что забыли вызвать анонимную горутину в конце)
Наш брат головами таких в школе мел с доски вытирал
Я б обернул select в for, потому что вместо долгого ответа получили ошибку отмены таймаута. Как была низкой стабильность метода, так и осталась.
зачем? ты в селекте ждешь канал который быстрее сработает. Там нету смысла обрабатывать другой код в этот момент
16:35 ну все задачу с первой проходки не решил, в яндекс не берем
6:11 Володька, что с лицом, совсем уже на юродивого стал похож со своими алгоритмами. Выйди на улицу, с детишками погуляй
Досмотрел (предыдущий коммент писал посреди видео). Собеседующий хорошо видит что происходит, адекватно оценивает ситуацию, учитывает все детали и когда что-то для себя прояснил, готов двигать интервью вперед даже самостоятельно подсказывая соискателю. Очень круто и профессионально. Респект.
Собеседующий дает некоторые ответы соискателю. На самом деле это не хорошо и не плохо, можно если человек запутался подтолкнуть его и смотреть на блеск в глазах, все еще понимает он контекст или мы его потеряли. Но может быть и наоборот: кто-то пролезет на энтузиазме собеседующего. Но может быть этот энтузиазм происходит из того, что ребята друг друга знают.
Это нумерология какая то что ли? Или астрология?
Какие map? Вектора надо использовать во второй задаче. С этими map до 100 символов алфавита вектор быстрее будет тупо из за того, что проц хотя бы закешировать значения себе сможет. В map элементы памяти по разным адресам находятся. Это очень медленно.
В задаче про мердж каналов мы возвращаем закрытый канал. Что нам потом делать с закрытыми каналом? На 7 строчке мы всегда будем виснуть, потому что из этого канала никто не читает. Примерно код должен выглядеть так; out := make(chan int) defer close(out) go func() { // Код записи из всех каналов в out } return out
Чувак вообще не понимает основы программирования и компьютер сайнс, какой ему junior ему бы ещё годик поучиться
дали тимлиду два изяна... а мне хард впаяли с дп на 50 строк кода.
Вроде на собеседованиях в яндекс задачи сильно сложнее спрашивают. Или это не так?
А вы никогда не задумывались - нахер так жить? Исполнять код в уме, париться над подкапотными гвоздями? Убогие гошники...
Спасибо большое, интересное собеседование и хорошего уровня кандидат))
Именно из-за таких собеседований я каждый раз отказываю рекрутерам яндекса
Полезно! Жду ещё! пс: на опечатки время я бы не тратил и на кучу лишних слов о кружках и к!отиках (имхо)^^
поддерживаю