- 4
- 124 676
it-interview
Приєднався 13 чер 2022
Потренируйтесь проходить собеседования с разработчиками из ведущих компаний и получите подробный отзыв о том, на какую зарплату и грейд вы можете расчитывать, или над чем вам еще стоит поработать.
Mock собеседование по System Design от Team Lead из Ozon
Потренироваться проходить собеседования: clck.ru/3ASssc
Курсы по программированию: clck.ru/3ASt6y
Mock-собеседование от Team Lead из Ozon секции по языку Golang на платформе it-interview.io. Потренируйтесь и вы проходить собеседования с разработчиками из ведущих компаний и получите подробный отзыв о том, на какую зарплату и грейд вы можете расчитывать, или над чем вам еще стоит поработать!
Telegram канал Олега: t.me/oo_ilin
UA-cam канал Олега: www.youtube.com/@oo_ilin
Таймкоды:
00:00 Знакомство
03:31 Начинаем проектировать URL Shortner
04:02 Сбор функциональных требований
07:53 Сбор нефункциональных требований
12:56 Схема данных и рассчет объема базы
22:42 Рассчет RPS
23:53 Рассчет пропускной способности
26:30 Высокоуровневая схема
30:45 База данных
32:28 Шардирование базы данных
37:14 API
39:09 Шардирование продолжение
41:45 Добавляем кэш
45:03 Уникальность ключей на шардах
48:13 Внешний сервис для генерации ссылок
53:13 Соединяем потоки
53:56 Поток создания
58:24 Добавляем аналитику
1:00:25 Добавляем RateLimiter
1:04:16 Возвращаемся к аналитике
1:05:13 Обсуждаем точки отказа
1:09:06 Обсуждаем идемпотентность
1:14:12 Обратная связь от Олега
1:18:10 Обратная связь от Саши
[[ Отзыв о кандидате ]]
Александр во время собеседования показал себя хорошо. Показал себя как специалист способный анализировать предметную область и способный подстраиваться под новые требования. В качестве системы для проектирования был выбран URL Shortnet (сокращатель ссылок). Кандидат собрал все требования, реализовал верхнеуровневый дизайн и постепенно углубился до компонентов. Из плюсов еще могу отметить что разделил трафик на чтение и на запись и проработал оба потока данных. Проработал систему хранения, масштабирования и отказоустойчивости.
В ходе интерью из за того что сразу не спроектировал API ошибся с выбором ключа для шардирования данных. Но после того как спроектировал две API ручки быстро сообразил в какую сторону необходимо смотреть. Так же не до конца раскрыл как именно будет генерироваться уникальная ссылка. Не определились со словарем и полным алгоритмом.
По коммуникациям приятный в общении, рассудительный. Все предположения обосновывает и рассуждает в слух, что дает понять в какую сторону движется.
Из рекомендаций можно посоветовать следить за таймингом, чаще просматривать первоначальный требования и не повторяться на тех моментах, которые уже были овучены ранее.
#собеседование #mockсобеседование
Курсы по программированию: clck.ru/3ASt6y
Mock-собеседование от Team Lead из Ozon секции по языку Golang на платформе it-interview.io. Потренируйтесь и вы проходить собеседования с разработчиками из ведущих компаний и получите подробный отзыв о том, на какую зарплату и грейд вы можете расчитывать, или над чем вам еще стоит поработать!
Telegram канал Олега: t.me/oo_ilin
UA-cam канал Олега: www.youtube.com/@oo_ilin
Таймкоды:
00:00 Знакомство
03:31 Начинаем проектировать URL Shortner
04:02 Сбор функциональных требований
07:53 Сбор нефункциональных требований
12:56 Схема данных и рассчет объема базы
22:42 Рассчет RPS
23:53 Рассчет пропускной способности
26:30 Высокоуровневая схема
30:45 База данных
32:28 Шардирование базы данных
37:14 API
39:09 Шардирование продолжение
41:45 Добавляем кэш
45:03 Уникальность ключей на шардах
48:13 Внешний сервис для генерации ссылок
53:13 Соединяем потоки
53:56 Поток создания
58:24 Добавляем аналитику
1:00:25 Добавляем RateLimiter
1:04:16 Возвращаемся к аналитике
1:05:13 Обсуждаем точки отказа
1:09:06 Обсуждаем идемпотентность
1:14:12 Обратная связь от Олега
1:18:10 Обратная связь от Саши
[[ Отзыв о кандидате ]]
Александр во время собеседования показал себя хорошо. Показал себя как специалист способный анализировать предметную область и способный подстраиваться под новые требования. В качестве системы для проектирования был выбран URL Shortnet (сокращатель ссылок). Кандидат собрал все требования, реализовал верхнеуровневый дизайн и постепенно углубился до компонентов. Из плюсов еще могу отметить что разделил трафик на чтение и на запись и проработал оба потока данных. Проработал систему хранения, масштабирования и отказоустойчивости.
В ходе интерью из за того что сразу не спроектировал API ошибся с выбором ключа для шардирования данных. Но после того как спроектировал две API ручки быстро сообразил в какую сторону необходимо смотреть. Так же не до конца раскрыл как именно будет генерироваться уникальная ссылка. Не определились со словарем и полным алгоритмом.
По коммуникациям приятный в общении, рассудительный. Все предположения обосновывает и рассуждает в слух, что дает понять в какую сторону движется.
Из рекомендаций можно посоветовать следить за таймингом, чаще просматривать первоначальный требования и не повторяться на тех моментах, которые уже были овучены ранее.
#собеседование #mockсобеседование
Переглядів: 950
Відео
Mock собеседование по Go (Junior) от Team Lead из Ozon
Переглядів 12 тис.2 місяці тому
Потренироваться проходить собеседования: clck.ru/3ASssc Курсы по программированию: clck.ru/3ASt6y Mock-собеседование от Team Lead из Ozon секции по языку Golang на платформе it-interview.io. Потренируйтесь и вы проходить собеседования с разработчиками из ведущих компаний и получите подробный отзыв о том, на какую зарплату и грейд вы можете расчитывать, или над чем вам еще стоит поработать! Tele...
Mock-собеседование по Go от Старшего разработчика из Авито
Переглядів 8 тис.3 місяці тому
Потренироваться проходить собеседования: clck.ru/3ASssc Курсы по программированию: clck.ru/3ASt6y Mock-собеседование от старшего разработчика из Авито секции по языку Golang на платформе it-interview.io. Потренируйтесь и вы проходить собеседования с разработчиками из ведущих компаний и получите подробный отзыв о том, на какую зарплату и грейд вы можете расчитывать, или над чем вам еще стоит пор...
Mock-собеседование по алгоритмам от Team Lead из Яндекса
Переглядів 104 тис.3 місяці тому
Потренироваться проходить собеседования: clck.ru/3ASssc Курсы по программированию: clck.ru/3ASt6y Mock-собеседование от Team Lead из Яндекс алгоритмической секции на платформе it-interview.io. Потренируйтесь и вы проходить собеседования с разработчиками из ведущих компаний и получите подробный отзыв о том, на какую зарплату и грейд вы можете расчитывать, или над чем вам еще стоит поработать! UA...
Прикольное интервью, но хотелось бы понять: 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 символов.
Почему тут не модет быть проблема селебрити? Кто-то популярный создал ссылку и разметил ее у себя в соц. сетях, на эту одну ссылку будет очень много запросов на чтение. Кажеться интервьюируемый правильно задал вопрос.
Потому что проблема селебрити в том что один человек может иметь много связей. Например много подписчиков и проблема оповестить всех о выходе нового поста. Тут ты делаешь ровно один адрес и никого не уведомляешь. Тут проблема высокого трафика, а это уже другая история.
Чел идет на тим лида, использует сортировку и говорит скорость линейная🤦🏻 как их вообще рассматривают с такими знаниями?
Как можно распинаться пол часа при решении столь лёгкой задачи то?
Вы идиот?
в цикле будет паника если в матрице пустые массивы без элементов
Вопрос к Авито. А что у вас за разработчики такие, что доказывают мне, что при передаче ссылки на структуру в метод, на новый стектрейс помимо передачи ссылки происходит еще и копирование на куче! Был у вас на собеседовании (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 строк кода.
Вроде на собеседованиях в яндекс задачи сильно сложнее спрашивают. Или это не так?
А вы никогда не задумывались - нахер так жить? Исполнять код в уме, париться над подкапотными гвоздями? Убогие гошники...
Спасибо большое, интересное собеседование и хорошего уровня кандидат))
Именно из-за таких собеседований я каждый раз отказываю рекрутерам яндекса
Полезно! Жду ещё! пс: на опечатки время я бы не тратил и на кучу лишних слов о кружках и к!отиках (имхо)^^
поддерживаю
Хороший собес, лайк!
Чувак пол собеса палил ответы с экрана🤣 Топ🤘
Николай II на собеседовании, вот чудеса!
мб я путаю, но в задании со строками при range гошка сама же в руны преобразовывает, а чтобы идти по байтам надо Итовый форик, и тащить по индексу?
Ты прав, бро
2 дкнь изучаю Го, изи решил все задачи! )))
Это особенность данного интервью или это общая динамика го-собеседований, что собеседующего интересует только знание голанга в вакууме и не интересуют понимание операционных систем, сетей, железа, файловых систем и тд?
В 1 задачке же вместо lastItem = max... должен быть merged =..?
lastItem[1] = max(lastItem[1], intervals[i][1]) В логике кода все правильно. Это для расширения диапазона интервала Если у нас есть последовательность [[1,3],[2,8],[2,6]...] На первой итерации lastItem - [1,3], а intervals[i] - [2,8], и назначается "больший" конец lastItem[1] = max(3, 8) // диапазон lastItem становится [1,8] На следущей итерации lastItem - [1,8], а intervals[i] - [2,6] , и назначается "больший" конец lastItem[1] = max(8, 6) // диапазон lastItem остается [1,8]
Т.е. в яндексе занимаются не интерпрайз программированием, а пишут алгоритмы? Ну-ну.
Сложность сортировки log(n)👍, отлично
а какая ?
@@bbrother92 n log(n), сортировка
@@bbrother92 теоретический максимум(доказывается при помощи дерева решений) в алгоритмах сортировки сравнением это Ω(n*log(n))
@@alexeysharyy8623 ну да log(n) это бинарный поиск. а для сортировки слишком революционно. А напомните кто так знатно ошибся?
Так ведь ещё и интервьюер знатно лажанулся, об этом не сказав в фидбеке.
Тимлид краш 🔥🔥🔥
Олег, выздоравливай!
спасибо)
Как показывает практика, деловые качества у разработчика или тимлида это 90% остальные 10% это кодинг. Ищите людей умеющих общаться, искать решения в сложных ситуациях а не классных кодеров. Вы продолжаете нанимать того кто вам не нужен для того что вам не нужно.
И что тебе эти 10% накодят? 5 лет и потом переписывать? Если не раньше
у тим лида согласен. А разрабу зачем эти качества?
@@user-su5by2uj6q чтобы легаси плодить
@@trashmylife7832 именно что в работе код занимает 10% времени, нет ничего сложного напечатать код, когда ты уже расписал себе всю задачу и её решение... остаётся только кодом вывести, так что да в работе самое важное это поиск решений, потому что все решения уже есть, их нужно только найти и применить, очень вряд-ли что ты будешь первопроходцем в какой-то из задач
@@trashmylife7832открою один секрет: программирование - это одно сплошное переписывание, особенно в энтерпрайзе.
Найм в ИТ конечно это цирк! Да давайте наймем кучу олимпиадников которые будут писать REST интеграции между АС, круд запросы, и тысячи юнит тестов. Браво, фиаско, плакать хочется.
или можно перестать мыслить крайнстями, иметь базовые навыки решения алгоритмических задач в 10 строк кода не равно быть олимпиадником
для прохождения собесов не нужно быть олимпиадником, для 99% заданий достаточно знать 5 алгоритмов/структур - sliding window, heap, hashmap, dynamic programming и BFS/DFS. Если ты не в состоянии разобраться даже в этом, то это просто skill issue, может надо подумать о другой профессии.
@@sdramare864я полагаю, что суть оригинального комментария в том, что у нас спрашивают проход дерева в ширину/глубину, алгоритмы динамического программирования, а потом мы выхожим на работу и перекладываем байтики с одной Кафки в другую (ну или в базу). В этом смысле, если проводить аналогию: найм в АйТи это когда у тебя спрашивают на собеседовании как сделать операцию на сердце, а потом на работе ты собакам лапки перебинтовываешь
@@sdramare864xd
@@sdramare864small dick energy