По первой задаче ставим по курсору на конец каждого массива. Если arr1id < arr2id берем arr2id и сдвигаем курсор второго, иначе берем arr1id и сдвигаем курсор первого
@phoenixg46614 ай бұрын
Очень крутой собес получился Спасибо, что выложил) Отдельный респект лиду, сложилось очень хорошее впечатление о человеке
@Andro5003 ай бұрын
Я наверное другое собеседование просмотрел. Атмосфера уныния и духоты.
@Диман-е9ш6 ай бұрын
интересная первая задача, спс за собес
@АлексейЕгарев-и5у3 ай бұрын
В первой задаче проще всего рекурсией. Количество итераций будет зависеть от того, сколько нам элементов нужно получить, если столько конечно есть в двух массивах function getLastDecision(decisions1, decisions2, k) { let result = []; const lastItemD1 = decisions1[decisions1.length - 1]; const lastItemD2 = decisions2[decisions2.length - 1]; // Базовый случай if(!k || (!lastItemD1 && !lastItemD2)) { return result; } // Рекурсивный случай else{ if((lastItemD1?.id ?? 0) > (lastItemD2?.id ?? 0)){ result.push(lastItemD1); decisions1.pop(); } else { result.push(lastItemD2); decisions2.pop(); } return result.concat(getLastDecision(decisions1, decisions2, k - 1)); } }
@paulos_swim4 ай бұрын
Задачи про массивы покажут умение решать задачи про массивы. За 8+ лет во фронтенде ничего такого на практике не приходилось применять, и на собесах тоже не спрашиваю.
@paulos_swim4 ай бұрын
Это дрочево может пригодиться, только если всё совсем плохо на фронте)
@fidget824 ай бұрын
По первой задаче не проще было бы взять К последних элементов из 2 массивов. Объединить, отсортировать и взять опять K последних элементов?
@vladimirlebedev000104 ай бұрын
Сортировка n*log(n) по времени, в остальном отличий нет, можно и так)
@dkoldyaev3 ай бұрын
Было бы сильно проще. Особенно если это действительно БД, где селект со срезом дорогой, а не просто массивы
@РоманРовнинин2 ай бұрын
А как оно в третьей задаче у них работало если там is not a function?) алсо там наверное не больше и равно, а % fn.length или % 3
@alexandrkryzhevnikov73252 ай бұрын
а почему нельзя объединить 2 массива, далее отсортировать по дате или id... и взять из полученного массива n количество записей последних?
@vladimirlebedev000102 ай бұрын
Привет! Собеседующий упомянул, что массивы могут быть произвольных размеров, а нам могут потребоваться всего 3 элемента, например
@ЭдикФинце5 ай бұрын
Имхо очень уверенно отвечал на все теоретические вопросы, ответы на них узнавал из рабочей практики или изучал вопросы для собеседовий? Если да, можешь подсказать ресурс, хотелось бы также уверенно проходить собесы)
@vladimirlebedev000105 ай бұрын
Привет! Спасибо) По большей части, было так: приходил на собес, выписывал вопросы, на которые не могу ответить, изучал их и снова шел на собес. Можешь попробовать смотреть подобные записи собеседований на ютубе, сначала пытаться ответить самому, потом слушать ответ автора и идти изучать вопрос. На мой взгляд, самая эффективная тактика)
@asphix19802 ай бұрын
По второй задачке на сумму чисел в массиве, хз как там на leetcode, но вроде как-то так: const hasPairWithSum = (arr, num) => arr.some((el, i) => arr.slice(i+1).includes(num - el));
@bigmovie22845 ай бұрын
Подскажи, пожалуйста, какой опыт ты указывал в резюме? Накручивал ли? Просто меня даже на собеседования не зовут, когда узнают, что нет коммерческого опыта. Заранее благодарю за ответ
@vladimirlebedev000105 ай бұрын
Привет! Я опыт не накручивал, потому что больше 3 лет реального коммерческого опыта есть, но если бы у меня сейчас коммерческого опыта не было, я бы накрутил опыт, чтобы фильтр hr пройти и попасть на собес
@ВикторияКрючкова-ь5й27 күн бұрын
function getList(obj1, obj2, k) { let result = [] let currindexObj1 = obj1.length - 1 let currindexObj2 = obj2.length - 1 while (result.length < k && (currindexObj1 >= 0 || currindexObj2 >= 0)) { if (Number(obj1[currindexObj1]['id']) > Number(obj2[currindexObj2]['id'])) { result.push(obj1[currindexObj1]) currindexObj1-- } else { result.push(obj2[currindexObj2]) currindexObj2-- } } return result.reverse() }
@azatfarmanyan1502 ай бұрын
Здравствуйте! Я хотел бы узнать, есть ли возможность записаться на собеседование для оценки моих знаний. Буду признателен за информацию!
@vladimirlebedev000102 ай бұрын
Привет! Да, можем мок собес провести, напиши в тг, плиз (t.me/VladimirLebedev02)
@marcinskavysh86902 ай бұрын
А какой ответ ожидали услышать по Ангуляр задачке?
@vlades74 ай бұрын
Привет. Скажи, были ли ещё собеседования на эту позицию? В видео не раз упоминались какие-то другие встречи
@vladimirlebedev000104 ай бұрын
Привет! Да, собесился осенью 23 года ещё, тогда до оффера не дошел
@РоманРовнинин2 ай бұрын
Вторую задачу по старинке можно 2 форами сделать, тоже норм решение, сравнить arr[i] + arr[j] === sum. Но видимо это был реально вопрос на маппинг. Если да то ок
@saluteup51982 ай бұрын
2 фора это не линейная скорость
@РоманРовнинин2 ай бұрын
@@saluteup5198 может функция?
@СергейКарих-ж3ы2 ай бұрын
Привет, подскажи плз, что за хук Inject на 1:01:44
@vladimirlebedev000102 ай бұрын
Привет! Вот хорошее видео по этому поводу: kzbin.info/www/bejne/pInNfGqqjL9rqbM&ab_channel=DecodedFrontend
@ВикторМожарук2 ай бұрын
Интереса ради накидал 1-ую задачу тоже, проще всего, по-моему, сложить в одну отсортированную мапу и достать поледние k элементов function getLastDecision(decision1, decision2, k) { const sortedDecisions = new Map(); const totalDecisions = [ ...decision1, ...decision2 ] for (let decision of totalDecisions) { sortedDecisions[decision.id] = decision } return Object.values(sortedDecisions).slice(-k); }
@aleksb6349Ай бұрын
по памяти не очень, а если массивы весят по 2-20 гигов? создастся мапа еще на 4-40 гигов
@strangerfromthevoid62372 ай бұрын
Возможно ли пойти стажером в какую-либо компанию на позицию ангулярщика фронта, с последующим повышением до джуна и тд?
@vladimirlebedev000102 ай бұрын
Привет! Можно в тинек, я таким путем и шел: попал на стажировку на ангуляр и дальше рос внутри компании по грейду
@strangerfromthevoid62372 ай бұрын
@@vladimirlebedev00010 интересно! Спасибо за ответ. А то многое говорят про накрутку опыта и другие уловки, но вот про то как хотя бы стажером устроиться особо информации нет)
@ИгорьМурамщиков5 ай бұрын
Будет сильно удобнее, если добавишь таймкоды)
@vladimirlebedev000105 ай бұрын
Привет! А они есть в описании, ютуб не подтянул их в главы по какой-то причине
@ViacheslavChernyavskij2 ай бұрын
ну прям скажем если парень поплыл с первой задачей последних пяти элементов, то на сеньера и тем более мида ему точно пока не стоит. не досмотрел, но как по мне все четко было задано. даны два массива отсортированных, которые являются представлением какого-то очень важного списка, нужно получить последние пять добавленных, как добавлялось неизвестно... ключевые слова "даны отсортированные" и "последние пять". просто берешь последние пять из одного и последние пять из другого, конкатишь и сортируешь, возвращаешь последние пять из результата. закавырки по поводу мол в одном всего три во втором четыре, это решается потом. а суть в том что выдрать последние и отсортировать 10 элементов максимум. и не надо никаких мап придумывать тут или циклов или еще чего-то
@РоманРовнинин2 ай бұрын
тотал соглы, подумал про return [...arr1, ...arr2].sort((x1, x2) => x1.id - x2.id).slice(-5), а тут Ваш комментарий, кек
@saluteup51982 ай бұрын
по-моему это ты поплыл, друг мой. У тебя в одном массиве допустим 10 000 элементов, а в другом 100 000 элементов. Если ты их будешь конкатить и сортировать (даже с быстрой сортировкой), то по перформансу может долго идти. Такие задачи чаще всего решаются по методу двух указателей. Если не вдаваться в другие пограничные условия, то ты просто создаёшь две переменные, которые указывают на последние значения в массивах, а затем сравниваешь их, пока длина результирующего массива не будет равна условно 5. Если 2 указатель (2 индекс) больше, чем у первого, то тогда пушишь в результирующий массив последний элемент по указателю второго массива и сдвигаешь 2 указатель, если всё наоборот, то пушишь последний элемент по указателю первого массива и соотвественно сдвигаешь 1 указатель. Твоё решение имеет смысл, но тут явно была задача не такая простая как могло показаться
@ViacheslavChernyavskij2 ай бұрын
@@saluteup5198 читай внимательно что написал, последние в одном и последние в другом. получится максимум 10, а не как ты фантазировать начал. без негатива, просто внимательно прочти. пускай хоть миллионы записей будут, работать надо с последними...
@saluteup51982 ай бұрын
@@ViacheslavChernyavskij так я понимаю, что надо работать с последними и брать последние 5. Просто если ты будешь конкатенировать два массива с большим количеством элементов и потом это сортировать, то у тебя сортировка будет жрать перформанс. Мой посыл был в этом и что такие задачи обычно решают двумя указателями
@ViacheslavChernyavskij2 ай бұрын
@@saluteup5198может я не так тебя понял. пять последних с одного и пять с другого. после собираешь в один и его же сортируешь, т.е. сортировка для массива в 10 элементов максимум. Почему конкат с большим кол-вом элементов? входные данные вообще не трогаются...
@romanosssip5 ай бұрын
Прикольно, а ты предупреждал что собес будешь записывать или это постановка?
@vladimirlebedev000105 ай бұрын
Привет! Не постановка, но и не предупреждал)
@IQ-120Ай бұрын
Эээ, Але!?? Где вопросы по Angular???? Какой нафиг чилдрен... Через Терни к звёздам??? Где директивы... Пайпы... Формы.... Где про всю прелесть фрамеворка??? Говно какое то по спрашивали, а про Angular где?
@mattspeed2 ай бұрын
Максимально шаблонный собес. Идёт два часа, а почти никак уровень кандидата не определяет и не проверяет его опыт. Нет описаний задач в текстовом виде и явных формулировок, что сбивает с толку. Так много про безопасность, а в итоге собеседующий вместо CSRF описал фишинг 🙃 40+ минут тратить на какие-то академические задачи с первых строчек гугла аля "js задачи для собеседования", вместо того чтобы придумать практическое задание с ключевыми навыками для позиции. Видимо премии за продолжительность собеседования, не иначе 😅 Про ContentChildren в конце хороший вопрос на опыт кандидата, но опять же устное описание всё портит, на второй час интенсивного собеседования уже котелок не особо варит устные формулировки воспринимать.
По первой задаче конечно полная бессмыслица сидеть очко рвать подобными решениями, когда создали механизмы чтобы так не писать и писать быстрее, никогда не пойму этого...
@deo56865 ай бұрын
Что за решения? Можешь пожалуйста уточнить или ссылку кинуть.