Собеседование на Angular Frontend разработчика (Middle+/Senior)

  Рет қаралды 7,860

Vladimir Lebedev

Vladimir Lebedev

Күн бұрын

Пікірлер: 72
@НикитаЯкунин-и2ф
@НикитаЯкунин-и2ф 2 ай бұрын
По первой задаче ставим по курсору на конец каждого массива. Если arr1id < arr2id берем arr2id и сдвигаем курсор второго, иначе берем arr1id и сдвигаем курсор первого
@phoenixg4661
@phoenixg4661 4 ай бұрын
Очень крутой собес получился Спасибо, что выложил) Отдельный респект лиду, сложилось очень хорошее впечатление о человеке
@Andro500
@Andro500 3 ай бұрын
Я наверное другое собеседование просмотрел. Атмосфера уныния и духоты.
@Диман-е9ш
@Диман-е9ш 6 ай бұрын
интересная первая задача, спс за собес
@АлексейЕгарев-и5у
@АлексейЕгарев-и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_swim
@paulos_swim 4 ай бұрын
Задачи про массивы покажут умение решать задачи про массивы. За 8+ лет во фронтенде ничего такого на практике не приходилось применять, и на собесах тоже не спрашиваю.
@paulos_swim
@paulos_swim 4 ай бұрын
Это дрочево может пригодиться, только если всё совсем плохо на фронте)
@fidget82
@fidget82 4 ай бұрын
По первой задаче не проще было бы взять К последних элементов из 2 массивов. Объединить, отсортировать и взять опять K последних элементов?
@vladimirlebedev00010
@vladimirlebedev00010 4 ай бұрын
Сортировка n*log(n) по времени, в остальном отличий нет, можно и так)
@dkoldyaev
@dkoldyaev 3 ай бұрын
Было бы сильно проще. Особенно если это действительно БД, где селект со срезом дорогой, а не просто массивы
@РоманРовнинин
@РоманРовнинин 2 ай бұрын
А как оно в третьей задаче у них работало если там is not a function?) алсо там наверное не больше и равно, а % fn.length или % 3
@alexandrkryzhevnikov7325
@alexandrkryzhevnikov7325 2 ай бұрын
а почему нельзя объединить 2 массива, далее отсортировать по дате или id... и взять из полученного массива n количество записей последних?
@vladimirlebedev00010
@vladimirlebedev00010 2 ай бұрын
Привет! Собеседующий упомянул, что массивы могут быть произвольных размеров, а нам могут потребоваться всего 3 элемента, например
@ЭдикФинце
@ЭдикФинце 5 ай бұрын
Имхо очень уверенно отвечал на все теоретические вопросы, ответы на них узнавал из рабочей практики или изучал вопросы для собеседовий? Если да, можешь подсказать ресурс, хотелось бы также уверенно проходить собесы)
@vladimirlebedev00010
@vladimirlebedev00010 5 ай бұрын
Привет! Спасибо) По большей части, было так: приходил на собес, выписывал вопросы, на которые не могу ответить, изучал их и снова шел на собес. Можешь попробовать смотреть подобные записи собеседований на ютубе, сначала пытаться ответить самому, потом слушать ответ автора и идти изучать вопрос. На мой взгляд, самая эффективная тактика)
@asphix1980
@asphix1980 2 ай бұрын
По второй задачке на сумму чисел в массиве, хз как там на leetcode, но вроде как-то так: const hasPairWithSum = (arr, num) => arr.some((el, i) => arr.slice(i+1).includes(num - el));
@bigmovie2284
@bigmovie2284 5 ай бұрын
Подскажи, пожалуйста, какой опыт ты указывал в резюме? Накручивал ли? Просто меня даже на собеседования не зовут, когда узнают, что нет коммерческого опыта. Заранее благодарю за ответ
@vladimirlebedev00010
@vladimirlebedev00010 5 ай бұрын
Привет! Я опыт не накручивал, потому что больше 3 лет реального коммерческого опыта есть, но если бы у меня сейчас коммерческого опыта не было, я бы накрутил опыт, чтобы фильтр hr пройти и попасть на собес
@ВикторияКрючкова-ь5й
@ВикторияКрючкова-ь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() }
@azatfarmanyan150
@azatfarmanyan150 2 ай бұрын
Здравствуйте! Я хотел бы узнать, есть ли возможность записаться на собеседование для оценки моих знаний. Буду признателен за информацию!
@vladimirlebedev00010
@vladimirlebedev00010 2 ай бұрын
Привет! Да, можем мок собес провести, напиши в тг, плиз (t.me/VladimirLebedev02)
@marcinskavysh8690
@marcinskavysh8690 2 ай бұрын
А какой ответ ожидали услышать по Ангуляр задачке?
@vlades7
@vlades7 4 ай бұрын
Привет. Скажи, были ли ещё собеседования на эту позицию? В видео не раз упоминались какие-то другие встречи
@vladimirlebedev00010
@vladimirlebedev00010 4 ай бұрын
Привет! Да, собесился осенью 23 года ещё, тогда до оффера не дошел
@РоманРовнинин
@РоманРовнинин 2 ай бұрын
Вторую задачу по старинке можно 2 форами сделать, тоже норм решение, сравнить arr[i] + arr[j] === sum. Но видимо это был реально вопрос на маппинг. Если да то ок
@saluteup5198
@saluteup5198 2 ай бұрын
2 фора это не линейная скорость
@РоманРовнинин
@РоманРовнинин 2 ай бұрын
@@saluteup5198 может функция?
@СергейКарих-ж3ы
@СергейКарих-ж3ы 2 ай бұрын
Привет, подскажи плз, что за хук Inject на 1:01:44
@vladimirlebedev00010
@vladimirlebedev00010 2 ай бұрын
Привет! Вот хорошее видео по этому поводу: 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
@aleksb6349 Ай бұрын
по памяти не очень, а если массивы весят по 2-20 гигов? создастся мапа еще на 4-40 гигов
@strangerfromthevoid6237
@strangerfromthevoid6237 2 ай бұрын
Возможно ли пойти стажером в какую-либо компанию на позицию ангулярщика фронта, с последующим повышением до джуна и тд?
@vladimirlebedev00010
@vladimirlebedev00010 2 ай бұрын
Привет! Можно в тинек, я таким путем и шел: попал на стажировку на ангуляр и дальше рос внутри компании по грейду
@strangerfromthevoid6237
@strangerfromthevoid6237 2 ай бұрын
@@vladimirlebedev00010 интересно! Спасибо за ответ. А то многое говорят про накрутку опыта и другие уловки, но вот про то как хотя бы стажером устроиться особо информации нет)
@ИгорьМурамщиков
@ИгорьМурамщиков 5 ай бұрын
Будет сильно удобнее, если добавишь таймкоды)
@vladimirlebedev00010
@vladimirlebedev00010 5 ай бұрын
Привет! А они есть в описании, ютуб не подтянул их в главы по какой-то причине
@ViacheslavChernyavskij
@ViacheslavChernyavskij 2 ай бұрын
ну прям скажем если парень поплыл с первой задачей последних пяти элементов, то на сеньера и тем более мида ему точно пока не стоит. не досмотрел, но как по мне все четко было задано. даны два массива отсортированных, которые являются представлением какого-то очень важного списка, нужно получить последние пять добавленных, как добавлялось неизвестно... ключевые слова "даны отсортированные" и "последние пять". просто берешь последние пять из одного и последние пять из другого, конкатишь и сортируешь, возвращаешь последние пять из результата. закавырки по поводу мол в одном всего три во втором четыре, это решается потом. а суть в том что выдрать последние и отсортировать 10 элементов максимум. и не надо никаких мап придумывать тут или циклов или еще чего-то
@РоманРовнинин
@РоманРовнинин 2 ай бұрын
тотал соглы, подумал про return [...arr1, ...arr2].sort((x1, x2) => x1.id - x2.id).slice(-5), а тут Ваш комментарий, кек
@saluteup5198
@saluteup5198 2 ай бұрын
по-моему это ты поплыл, друг мой. У тебя в одном массиве допустим 10 000 элементов, а в другом 100 000 элементов. Если ты их будешь конкатить и сортировать (даже с быстрой сортировкой), то по перформансу может долго идти. Такие задачи чаще всего решаются по методу двух указателей. Если не вдаваться в другие пограничные условия, то ты просто создаёшь две переменные, которые указывают на последние значения в массивах, а затем сравниваешь их, пока длина результирующего массива не будет равна условно 5. Если 2 указатель (2 индекс) больше, чем у первого, то тогда пушишь в результирующий массив последний элемент по указателю второго массива и сдвигаешь 2 указатель, если всё наоборот, то пушишь последний элемент по указателю первого массива и соотвественно сдвигаешь 1 указатель. Твоё решение имеет смысл, но тут явно была задача не такая простая как могло показаться
@ViacheslavChernyavskij
@ViacheslavChernyavskij 2 ай бұрын
@@saluteup5198 читай внимательно что написал, последние в одном и последние в другом. получится максимум 10, а не как ты фантазировать начал. без негатива, просто внимательно прочти. пускай хоть миллионы записей будут, работать надо с последними...
@saluteup5198
@saluteup5198 2 ай бұрын
@@ViacheslavChernyavskij так я понимаю, что надо работать с последними и брать последние 5. Просто если ты будешь конкатенировать два массива с большим количеством элементов и потом это сортировать, то у тебя сортировка будет жрать перформанс. Мой посыл был в этом и что такие задачи обычно решают двумя указателями
@ViacheslavChernyavskij
@ViacheslavChernyavskij 2 ай бұрын
@@saluteup5198может я не так тебя понял. пять последних с одного и пять с другого. после собираешь в один и его же сортируешь, т.е. сортировка для массива в 10 элементов максимум. Почему конкат с большим кол-вом элементов? входные данные вообще не трогаются...
@romanosssip
@romanosssip 5 ай бұрын
Прикольно, а ты предупреждал что собес будешь записывать или это постановка?
@vladimirlebedev00010
@vladimirlebedev00010 5 ай бұрын
Привет! Не постановка, но и не предупреждал)
@IQ-120
@IQ-120 Ай бұрын
Эээ, Але!?? Где вопросы по Angular???? Какой нафиг чилдрен... Через Терни к звёздам??? Где директивы... Пайпы... Формы.... Где про всю прелесть фрамеворка??? Говно какое то по спрашивали, а про Angular где?
@mattspeed
@mattspeed 2 ай бұрын
Максимально шаблонный собес. Идёт два часа, а почти никак уровень кандидата не определяет и не проверяет его опыт. Нет описаний задач в текстовом виде и явных формулировок, что сбивает с толку. Так много про безопасность, а в итоге собеседующий вместо CSRF описал фишинг 🙃 40+ минут тратить на какие-то академические задачи с первых строчек гугла аля "js задачи для собеседования", вместо того чтобы придумать практическое задание с ключевыми навыками для позиции. Видимо премии за продолжительность собеседования, не иначе 😅 Про ContentChildren в конце хороший вопрос на опыт кандидата, но опять же устное описание всё портит, на второй час интенсивного собеседования уже котелок не особо варит устные формулировки воспринимать.
@vanek_keks2488
@vanek_keks2488 2 ай бұрын
const getLastDicision = (decision1, decision2, k) => { const arr = [...decision2.slice(-k), ...decision1.slice(-k)] const res = arr.sort((a, b) => a.id - b.id) return res.slice(-k) }
@ichestor509
@ichestor509 5 ай бұрын
По первой задаче конечно полная бессмыслица сидеть очко рвать подобными решениями, когда создали механизмы чтобы так не писать и писать быстрее, никогда не пойму этого...
@deo5686
@deo5686 5 ай бұрын
Что за решения? Можешь пожалуйста уточнить или ссылку кинуть.
@andrewkhar4615
@andrewkhar4615 4 ай бұрын
@@deo5686 const getLast = (arr1, arr2, k) => { const arr = arr1.concat(arr2); const lastArr32 = arr.sort((a,b) => b.id - a.id) console.log(lastArr32 .slice(0, k)); }
@ДмитрийВладимирович-е4р
@ДмитрийВладимирович-е4р 4 ай бұрын
Особенно на тернарке возвращать true/false)
@paulos_swim
@paulos_swim 4 ай бұрын
Про DI тема сисек не раскрыта - что такое DI, для чего, почему, нет ответов. Вопросы и ответы на уровне синтаксиса =/
@вывыфв-у5й
@вывыфв-у5й 6 ай бұрын
дальше мэтч или отказ?
@vladimirlebedev00010
@vladimirlebedev00010 6 ай бұрын
Привет! Мэтч)
@вывыфв-у5й
@вывыфв-у5й 6 ай бұрын
​@@vladimirlebedev00010 серьезно? отталкиваясь от своего опыта если ответил не оч на пару вопрос-скип гарантирован, потому удивляюсь))). скок дали?
@vladimirlebedev00010
@vladimirlebedev00010 5 ай бұрын
@@вывыфв-у5й только сейчас оффер прислали, 270 нет предложили
@вывыфв-у5й
@вывыфв-у5й 5 ай бұрын
@@vladimirlebedev00010 точно знаю, что в селекти вилка для псб начинается с 300 на руки. возможно будет полезно знать для дальнейших торгов
@dmitriyobidin6049
@dmitriyobidin6049 5 ай бұрын
@@vladimirlebedev00010 Это без премий? Сколько просил?
@ichestor509
@ichestor509 5 ай бұрын
После слов что рест и граф ничем не отличается, можно было в принципе бросать трубку... какие же пердуны там сидят это жесть
@damirlive2387
@damirlive2387 4 ай бұрын
вот мое решение. просьба дать оценку: const getLastDecision = (decisions1, decisions2, k) => { let d1 = decisions1.length - 1, d2 = decisions2.length - 1, result = []; while (result.length < Math.min(k, Math.max(decisions1.length, decisions2.length)) && (d1 >= 0 || d2 >= 0)) { if (d1 < 0 || (d2 >= 0 && decisions2[d2].id > decisions1[d1].id)) { result.push(decisions2[d2]); d2--; continue; } if (d2 < 0 || (d1 >= 0 && decisions1[d1].id > decisions2[d2].id)) { result.push(decisions1[d1]); d1--; } } return result; }; const hasPairWithSum = (arr, sum) => { const data = new Set(); for (let i = 0; i < arr.length; i++) { const numberToFind = sum - arr[i]; if (data.has(numberToFind)) return true; data.add(arr[i]); } return false; }
@moscowtv5767
@moscowtv5767 4 ай бұрын
Очевидность кода запредельная
@РоманРовнинин
@РоманРовнинин 2 ай бұрын
очень много((( тяжело воспринимать
@dmitriy6382
@dmitriy6382 Ай бұрын
function getLastDecisions(arr1, arr2, amount) { const partOfArr1 = arr1.slice(-amount) const partOfArr2 = arr2.slice(-amount) const result = [] while(result.length < amount) { if (!partOfArr1.length && !partOfArr2.length) { return result } else if (!partOfArr1.length) { result.push(partOfArr2.pop()) } else if (!partOfArr2.length) { result.push(partOfArr1.pop()) } else { if (partOfArr1.at(-1).id > partOfArr2.at(-1).id) { result.push(partOfArr1.pop()) } else { result.push(partOfArr2.pop()) } } } return result }
Собеседование на NodeJS/Typescript в СБЕР
1:18:12
One day.. 🙌
00:33
Celine Dept
Рет қаралды 60 МЛН
Чистка воды совком от денег
00:32
FD Vasya
Рет қаралды 4,7 МЛН
СОБЕСЕДОВАНИЕ НА ANGULAR MIDDLE
1:27:55
Ilnur Ryazhapov
Рет қаралды 4 М.
Mock-собеседование по Golang и PostgreSQL от Senior из Ozon
57:25
Никита Попков | IT Психология
Рет қаралды 186
СОБЕСЕДОВАНИЕ FRONTEND ЗП 220к JS, TS задачи
49:02
Кодерские собесы
Рет қаралды 90 М.
One day.. 🙌
00:33
Celine Dept
Рет қаралды 60 МЛН