REACT FRONTEND || НЕСТАНДАРТНОЕ СОБЕСЕДОВАНИЕ В СБЕР || ДАЛИ ОФФЕР НА 250К
Вставка
- Опубліковано 2 гру 2024
- Таймкоды:
17:20 - самопрезентация
26:23 - что предложил по изменению стека?
31:00 - опыт в B2C vs опыт в B2B продуктах
31:40 - важность хорошей команды
34:35 - в бар часто ходите?
35:40 - кто ты на вечеринках?
37:00 - ЗАДАЧА на виртуализацию и рендеринг больших списков
1:34:55 - заключение
#javascript #js #reactjs #programmer #programming #обучениепрограммированию #программист #программирование #developers #frontend #собеседование #frontenddeveloper #webdevelopment #programmingcourses #typescript #nextjs #reactdeveloper #javascript #js #reactjs #programmer #programming #обучениепрограммированию #программист #программирование #developers #angular #vuejs #webpack #frontend #собеседование #frontenddeveloper #webdevelopment #typescript #nextjs #reactdeveloper
Эта задача на виртуализацию могла бы быть очень крутой и приближенной к жизни, если бы не требование писать ее в блокноте, без обратной связи от консоли и браузера. Предполагаю, что данная компания в собеседованиях на 400к требует писать код гусиным пером по пергаменту, а на 500к - еще и своей кровью) Мне кажется, что цель собеседования - поставить кандидата в реальные условия и посмотреть, как он справляется с задачей, а не проонанировать ему мозги.
Факт
присоединяюсь) неужели нельзя было в какой нибудь codeSandbox хотя бы перейти чтобы там задачи решать. Плюс шум коллег на заднем фоне, который может отвлекать, есть же переговорки в офисе)
есть такое) очень эффектно описал мои мысли каждый раз когда мне скидывают ссылку на яндекс код)
@@mir-itishki в идеале вообще, чтобы давали возможность писать в своей среде разработки, но с отключением Copilot/Tabnine к примеру
Странная идея с использованием рефа.
Можно было по условию сделать таким образом, чтобы компонент принимал весь список (а не его длину). А также, чтобы он передавал нужный элемент в рендер-функцию.
Тогда все проблемы по дополнительному обновлению через реф уйдут
Ощущение что ревьюер сидит на фоне смотрит телек с новостями, попивая чаек и закусывая. Вторым глазом поглядывая как там справляется кандидат.
такое часто бывает, что решаешь задачи, а собеседующий по работе там что-то делает)
Было бы хорошо, если от hr обратную связь вставлял. Я так и не понял, прошел или нет
Окей, постараюсь внедрить) спасибо за фидбэк)
Прошел. В названии "дали оффер" - значит, что прошел
надо было массив длиной visibleItemCount создавать
да, согласен
Возможно я что-то не правильно понял, но задачу можно было решить вот таким достаточно простым способом:
onScroll={(e) => {
if (e.target?.scrollHeight - 700 < e.target?.scrollTop) {
setVisableItemsCount((prevState) => prevState + 30);
}
}}
ну и ниже
{list.slice(0, visableItemsCount).map((_, i) => (
{children(i)}
))}
в таком случае видимые элементы будут постоянно добавляться и добавляться, тогда где тут оптимизация? И как быть если ты начнеш скролить вверх? Плюс такие топорные значения, 700 и 30, любое изменение верстки которое не будет подходить к этим числам, просто приведет к тому, что код перестанет работать как надо
Пока тип отходил, успел на второй моник в чат гпт задачу написать? чтобы он помог
именно так все и было)
@@mir-itishki Правда так и было?
Я уже вижу эти моменты 😅 Видно что сначала идёт пауза и никакого движения по задаче) значит Карен анализирует ответ чата жпт 😂
И не понятно как тебе предложили оффер если ты идешь на мидла и не знаешь что такое виртуализация. Это не критика в твою сторону, а скорее в их сторону.
Писал как то виртуализацию, тот еще гемор, особенно учитывая тот факт что у меня по тз она была еще и бесконечная(зацикленная), лучшее решение к которому удалесь придти это создать контекст, где хранятся данные, мапить данные частями через обертку, которая обрабатывала позицию своего элемента, и двигать их через transform: translate(Y), как только элемент понимал что он вылетел за пределы списка, он подавал инфу наверх, убирался из списка и добирался новый элемент. Задача как по мне так вообще не для собеса
С одной стороны да, не для собеса) с другой хотя бы какое-то разнообразие) я до этого вообще не шарил за визуализацию. В любом случае полезно
Зачем подавать инфу наверх от элементов?
А не проще разве просто определить, какая сейчас позиция скролла и декларативно рассчитать, какие элементы списка у нас видны? Определяем "от" (позиция скролла) и "до" (позиция скролла + высота контейнера. Также, все элементы внутри позиционируем абсолютно. И передаём на отображение только нужные элементы. И всё, ничего сложного не вижу
Если бесконечная, то может быть сложнее, но, думаю, можно как-то деление с остатком использовать. Могут быть нюансы уже
@@ПользовательПользователь-с8к Затем что бы взять сопоставить то что есть с тем что уже на экране и добавить/удалить элементы с экрана. Этоим должен заниматься кто то один, а не каждый элемент списка, иначе фпс просядт. Ставить все на абсолютах и считать позиции тоже не подойдет, чтение и перезаписи top значений вызывают рефлоуи репеинт, на больших массивах данных фпс сильно сядет. и это только начало, не забывайте что у нас еще каждый браузер по разному отдает дельту на обработчиках wheel, его нужно нормализовать, убрать дребезги, для мобилок добавить фолбеки на тач эвенты, а там тоже не все так просто.
Это только в теории и голове выглядит как посмотри где стоит и выкинь/добавь. Для вывода в прод это очень комплексная задача с кучей подводных камней.
+ Не понял что вы имеете ввиду под "декларативно рассчитать", при том что декларативность не подразумивает никаких рассчетов.
@@MassEffecn согласен, есть такой момент, короче, надо самому пробовать)
Я на когнитивное искажение попался, можно сказать 😅
спасибо, а ты принял в итоге оффер?
нет, не принимал)
так ему и не предложили офер
@@inqvisitor3722 читай в названии автор написал что предложили оффер
@@mir-itishki ждешь, когда больше предложат или тебе не интересно? мне понравился момент с временным лимитом)
@@inqvisitor3722 предложили вообще-то
250 к за такую задачу? хех, я бы теорию + такую задачу минимум 350 давал бы лол
:D
дай мне, я решил (в коммах ответ)
Шутка, конечно 🤣 Но задание сделал
Можно сразу слать подальше когда на собесе такую задачу дают.
почему?
@@mgrm7031 сликом времязатратно. И без гугла такое проблематично решить