В первой задаче думаю есть смысл в reduce сделать инъекцию категории, чтобы потом было можно проще отфильтровать данные в зависимости от категории (насколько вижу ограничений в этом нет). Уверен, в реальном проекте в любом случае нужно было бы это сделать (на бэкенде). Плюс, в самой функции нет смысла, можно сделать 2 переменные (с filteredProducts и fruitsProducts). И не нужно было бы каждый раз при переключении чекбокса вызывать эту функцию. Привести к интерфейсу: interface Product { name: string, category: 'fruits' | 'other', price: number, count: number, }
Не совсем понял твой ответ про замыкания, что внешняя функция убирается из стека в то время как внутренняя находится в стеке и имеет доступ к лексическому окружению внешней функции функция 1 находится ниже в стеке функции 2 и после функция 2 выходит первой из стека а потом функция 1
@@lightseeker745 подобные вопросы уместно задавать джуну например, выше уже нет смысл задрачивать теорию на собесе так как она вообще никаким образом не показывает опыт кандидата, я вот проработал 11лет , многие вещи уже просто на автомате делаются и про теорию не задумываясь даже
@@rhost-9968 вполне может быть что какой-нибудь другой разработчик (не вы) все 11 лет делал что-то не так, допустим, подключал js скрипты не в конце html страницы, а в начале. Если он работал на индивидуальные заказы, то мб никто бы ему претензий не предъявлял, скриптов не очень много, подгружаются быстро и т.д. Но понятно же что так делать не надо. И похожих примеров кучу можно придумать
@@rhost-9968 я сначала когда начал смотреть собесы (не конкретно этот а в общем, их много на ютубе) тоже так подумал типа такая позиция и такие простые вопросы зачем это всё, а потом пришло осознание что ты можешь быть глубоко погружен в какие то штуки под капотом яп но например не работал никогда с Rest, OAuth (чисто верстал) и не ответишь какой там корс политики и что такое u:p > base64. Или например ты один фронт на деревне и не знаешь что такое тесты, в общем всегда есть слабые места и таким образом собеседующий от самых простых вещей идёт к более сложным щупая те моменты которые конкретно в этой команде могут понадобится
Да в смысле, зачем городить огород было с измененикм функции на получение одинакового продукта В чем была проблема просто отфильтровать в одну строчку, если чекбокс включен?
ух ты, сначала послушал теорию думаю как хорошо пошло, а на практике очень удивился - DRY, само мышление построение кода и оптимизации у меня как то не сопоставилось с первой частью. Я сам не знал таких глубоких нюансов например о том каким алгоритмом реакт сравнивает изменения, какие деревья как они разрушаются и насколько точно описана очередь работы микротасок с макротасками и тд, мне показалось что такая теория должна быть помножена на x2 практических навыков и какой то разрыв шаблона произошёл, на моменте готовой функции фильтрации и аггрегации фруктов где ифы и код продублирован я бы подумал ооо этот друг нам нашаманит, может переволновался, я сам тот ещё алгоритмщик в кавычках так что не как критика а просто хотел выразить удивление. Когда дело доходит до практики мы можем посыпаться на самых неожиданных местах хоть за спиной не один десяток кодовых баз. Спасибо за ролик много нового узнал и очень много кому будет полезно
Так и делают, человеку еще кардбланш дали в виде того, что вебку можно не включать, но даже с вебкой много людей гуглит прямо во время собесов :) Если обратишь внимание автор сам гуглит местами, как например с замыканием
Вообще первый раз слышу про рендер дерева с дочерних компонентов до родительских. Где про это можно прочитать? (я про задачу с console.log 1 console.log 2 32:00)
статью не смог найти, но в кратце - рендер родительского компонента завершается, после рендера всех его дочерних компонентов, поэтому порядок useffect будет сначала 2 потом 1 видео по теме - ruclips.net/video/AcflYn8snMo/видео.htmlsi=Mn2laEB7R8TGYOkB
кто-нибудь понял, зачем он спросил: "получается в чем разница между debounce и throttle одним предложением?" когда автор рассказал суть debounce, throttle и почему потом такой странный вопрос - на какой технологии js построены, капец на какой, timer api, event loop, замыкания, ему че все перечислить?
парень довольно приятный и хорошо провёл собеседование, но такие, как ты, считающие, что вас нужно только погладить по головке и без вопросов принять на работу, всё равно найдут, как обосрать
@@enjoymtx ага, вот только я прошел и провел кучу собесов, провожу собесы в свою компанию, поэтому я так пристально уделяю этому внимание, и есть практики для проведения собеседований, например, когда кандидат и собеседующий на время меняются местами, чтобы разрядить обстановку и дать понять, что вопросы задаются не с целью демонстрации превосходства всезнающего собеседующего, думаю у приятного парня возникли бы проблемы с его же вопросами, так как они не всегда понятные, зачем мне обсирать и критиковать нормальные вопросы, если с ними все ок, это не интересно
27:00 батчинг как таковой появился только в 18 версии реакта, стейт асинхронным был всегда. 35:10 (Есть или у типов в ТСе "или"?) - Имеется ввиду Union Type? - Ну нет, имеется ввиду прямой слеш ( | ). ... Интервьюверы как обычно выдают базу (нет). Да и вопросы в основном на джуна, а не сеньора. Задачи норм на мидла +- чтобы джунов фильтрануть.
@@ArtemkaGameVerse Если речь об автоматическом батчинге стейт апдейтов - он появился только в 18 версии, до этого была экспериментальная функция батчинга, которую надо было вызывать вручную
Могу ли я попросить тебя ссылку на sandbox последней задачи или статью решения? Не представляешь как долго я не могу реализовать компонент по типу или Link, img, etc. С моего первого опыта на MUI и по сей день не гугл не ИИ не находит)
гитхаб /total-typescript/react-typescript-tutorial/blob/main/src/08-advanced-patterns/72-as-prop-with-forward-ref.solution.tsx есть такой вариант решения проблемы
@@Ramosok, прости, не было времени тебе ответить, отдыхал у бабушки в деревне, в которой все твою маму, кстати, знали, и приветы передавали. Особенно те пятеро с той вписки. А теперь к сути. Человек старается, зубрит теоретическую никому ненужную ссанину, проходит потом все эти собесы общаясь с людьми, которые, возможно ещё хуже разбираются в теме, просто они в этот раз по другую сторону собеседования и у них есть ответы перед глазами(и то не факт, что правильные). Записывает видосы, выкладывает за просто так,людям помочь, чтобы потом к нему никому не нужный ноунейм в комменты пришел и написал, что он бы "не взял" автора в свое сообщество "великих и замечательных разработчЕков своего о...а". Не нравится контент? -выключай и иди дальше смотреть великих инженеров всея айти и играть в танки под асмр стримерш с хвостами енота.
Собеседующий идёт по шаблону вопросов и даже не слушает ответы... Ему уже ответили, а он задаёт тот же вопрос только с боку. Его не интересуют знания. Его интересуют ответы. Ужасно! Каждый раз поиходится уточнять, что он имеет в виду. Студент какой-то...
А каким должен быть собес на сеньора? Можно парочку примеров? P.S. Я без сарказма. Вот сам сижу и пытаюсь понять... Может сеньор должен рассказать как JS-движок под капотом работает?
мои варианты решения второй задачи, не думаю что они хотели именно это, но я не понимаю чего именно они хотели 1. type IProps< T extends keyof React.JSX.IntrinsicElements | React.JSXElementConstructor > = { Component: T; height: number; } & ComponentProps; 2. type IProps = { Component: T; height: number; } & V; 3. type IProps = { Component: T; height: number; } & ComponentProps; 4. type IProps = { Component: T; height: number; } & Parameters[0]; если вдруг кто-то знает - пишите в комменты, интересно
С автором что-то не так! Он или откуда-то читает, или ему подсказывают (через наушник) или ещё что-то. Многие ответы не стыкуются и порой на мелочах может нести чушь (как с батчингом, к примеру).
Ответы автора такие слабые и неуверенные... Ощущение, что на джуна+ тянет едва. В чём разница css и мрепртцессорных переменных? - там через -- обьявлял, а препроцессор через $. А в чём принципиальная разница? Э... Css переменные в браузере видны %} Понимания ноль.
ТГ канал - t.me/m1sha_frontend
Тг для связи - t.me/m1sha_bbn
💥Помощь в трудоустройстве и повышении ЗП - goo.su/xeDj
Первый реально крутой собес. Вопросы далеко не простые были. Интервьюер красава, задавал небанальные вопросы
на самом деле очередной душный собес где дрочат теорию, вообще не отражает опыт и реальные знания, я бы понял если бы собес был на джуна
Ты дурак? Самые банальные вопросы, или ты не знаешь методы копирования, Event loop? Ты вообще код пишешь? Ну автор молодец отвечал как лев
@@graezzywormz1438 я бы сказал самые херовые вопросы и в целом собес душный, чисто собес чтобы заебать кандидата но так ничего и не узнав о нем
@@graezzywormz1438 У каждого разный уровень подготовки...
@@graezzywormz1438 я например про Critical Rendering Path на собеседовании первый раз слышу вопрос. и про гит даже вопросы были. так что ты не прав.
Молодец Миша!
Хорошо подготовился к собесу!
Было интересно посмотреть видео.
Отличные собесы на канале, спасибо что делишься )
В первой задаче думаю есть смысл в reduce сделать инъекцию категории, чтобы потом было можно проще отфильтровать данные в зависимости от категории (насколько вижу ограничений в этом нет). Уверен, в реальном проекте в любом случае нужно было бы это сделать (на бэкенде). Плюс, в самой функции нет смысла, можно сделать 2 переменные (с filteredProducts и fruitsProducts). И не нужно было бы каждый раз при переключении чекбокса вызывать эту функцию. Привести к интерфейсу:
interface Product {
name: string,
category: 'fruits' | 'other',
price: number,
count: number,
}
Голос хорош когда не можешь заснуть
Хорошие задачки, спасибо
почему в задаче о логе реакт сначала лог выведется во вложенном компонене? я попробовал, это так не работает
Не совсем понял твой ответ про замыкания, что внешняя функция убирается из стека в то время как внутренняя находится в стеке и имеет доступ к лексическому окружению внешней функции
функция 1 находится ниже в стеке функции 2 и после функция 2 выходит первой из стека а потом функция 1
если бы не современный мир с техно нейронками, то подумал бы , что это GPT Voice отвечал на вопросы:)))
это то же самое что с синусами и косинусами. В школе заставляют учить и сдавать экзы, а в жизни никогда не понадобится. Тоже самое здесь.
Начало смотрю, вполне адекватные вопросы, в разработке пригождаются. Вы о чем именно?
@@lightseeker745 подобные вопросы уместно задавать джуну например, выше уже нет смысл задрачивать теорию на собесе так как она вообще никаким образом не показывает опыт кандидата, я вот проработал 11лет , многие вещи уже просто на автомате делаются и про теорию не задумываясь даже
@@rhost-9968 вполне может быть что какой-нибудь другой разработчик (не вы) все 11 лет делал что-то не так, допустим, подключал js скрипты не в конце html страницы, а в начале. Если он работал на индивидуальные заказы, то мб никто бы ему претензий не предъявлял, скриптов не очень много, подгружаются быстро и т.д. Но понятно же что так делать не надо. И похожих примеров кучу можно придумать
@@rhost-9968 я сначала когда начал смотреть собесы (не конкретно этот а в общем, их много на ютубе) тоже так подумал типа такая позиция и такие простые вопросы зачем это всё, а потом пришло осознание что ты можешь быть глубоко погружен в какие то штуки под капотом яп но например не работал никогда с Rest, OAuth (чисто верстал) и не ответишь какой там корс политики и что такое u:p > base64. Или например ты один фронт на деревне и не знаешь что такое тесты, в общем всегда есть слабые места и таким образом собеседующий от самых простых вещей идёт к более сложным щупая те моменты которые конкретно в этой команде могут понадобится
@@rhost-9968 Ты 11 лет решал простые посильные задачки для дебилов под диктовку коллеги за 500 баксов в месяц.
Забавно слышать стук клавиш при некоторых сеттаймаут на вопросах 😅
Да в смысле, зачем городить огород было с измененикм функции на получение одинакового продукта
В чем была проблема просто отфильтровать в одну строчку, если чекбокс включен?
ух ты, сначала послушал теорию думаю как хорошо пошло, а на практике очень удивился - DRY, само мышление построение кода и оптимизации у меня как то не сопоставилось с первой частью. Я сам не знал таких глубоких нюансов например о том каким алгоритмом реакт сравнивает изменения, какие деревья как они разрушаются и насколько точно описана очередь работы микротасок с макротасками и тд, мне показалось что такая теория должна быть помножена на x2 практических навыков и какой то разрыв шаблона произошёл, на моменте готовой функции фильтрации и аггрегации фруктов где ифы и код продублирован я бы подумал ооо этот друг нам нашаманит, может переволновался, я сам тот ещё алгоритмщик в кавычках так что не как критика а просто хотел выразить удивление. Когда дело доходит до практики мы можем посыпаться на самых неожиданных местах хоть за спиной не один десяток кодовых баз. Спасибо за ролик много нового узнал и очень много кому будет полезно
сам обосрал, сам похвалил, ну ты даешь...
Отвечать на теорию легко научиться, просто надо сходить на 20-30 собеседований. А писать код это уметь надо, тут опыт нужен.
Сижу и понимаю, что 95 процентов этих вопросов, в том число и задач - практически ответит / решит GPT при правильном промте и корректировке
Так и делают, человеку еще кардбланш дали в виде того, что вебку можно не включать, но даже с вебкой много людей гуглит прямо во время собесов :)
Если обратишь внимание автор сам гуглит местами, как например с замыканием
Сижу и понимаю, что на все вопросы бы ответил. Но до собеса не могу дойти😢
@@РамильФатуллаев-о9цзначит, с резюме что-то не так
@@РамильФатуллаев-о9цсколько по времени отправляете заявки?
@@екатеринамаврицкая-и6ф месяца 3 уже.
Круто!
Вообще первый раз слышу про рендер дерева с дочерних компонентов до родительских. Где про это можно прочитать? (я про задачу с console.log 1 console.log 2 32:00)
статью не смог найти, но в кратце - рендер родительского компонента завершается, после рендера всех его дочерних компонентов, поэтому порядок useffect будет сначала 2 потом 1
видео по теме - ruclips.net/video/AcflYn8snMo/видео.htmlsi=Mn2laEB7R8TGYOkB
@@frontend-m0ney Благодарю)
кто-нибудь понял, зачем он спросил: "получается в чем разница между debounce и throttle одним предложением?" когда автор рассказал суть debounce, throttle и почему потом такой странный вопрос - на какой технологии js построены, капец на какой, timer api, event loop, замыкания, ему че все перечислить?
парень довольно приятный и хорошо провёл собеседование, но такие, как ты, считающие, что вас нужно только погладить по головке и без вопросов принять на работу, всё равно найдут, как обосрать
@@enjoymtx ага, вот только я прошел и провел кучу собесов, провожу собесы в свою компанию, поэтому я так пристально уделяю этому внимание, и есть практики для проведения собеседований, например, когда кандидат и собеседующий на время меняются местами, чтобы разрядить обстановку и дать понять, что вопросы задаются не с целью демонстрации превосходства всезнающего собеседующего, думаю у приятного парня возникли бы проблемы с его же вопросами, так как они не всегда понятные, зачем мне обсирать и критиковать нормальные вопросы, если с ними все ок, это не интересно
42:00 - офигенное название для переменной - mapa :))) Я только из-за этого кандидата гнал бы уже искать новый собес на джуна
Как же он хорош!
это точно не мок? на сеньор позицию спрашивать про назначение стейт менеджеров
в редюсе достаточно было acc[name]= {...cur}, cur же уже объект нужный.
27:00 батчинг как таковой появился только в 18 версии реакта, стейт асинхронным был всегда.
35:10 (Есть или у типов в ТСе "или"?) - Имеется ввиду Union Type? - Ну нет, имеется ввиду прямой слеш ( | ).
... Интервьюверы как обычно выдают базу (нет). Да и вопросы в основном на джуна, а не сеньора. Задачи норм на мидла +- чтобы джунов фильтрануть.
Батчинг был в реакте всегда, еще даже до того, как аудитория реакта узнала о нем)
То что в 18 реакте его апнули и сделали на этом акцент, не говорит о том, что он появился только в 18 реакте
@@ArtemkaGameVerse Если речь об автоматическом батчинге стейт апдейтов - он появился только в 18 версии, до этого была экспериментальная функция батчинга, которую надо было вызывать вручную
Всё видео ждал, когда собеседуемый всё таки уснёт...
Могу ли я попросить тебя ссылку на sandbox последней задачи или статью решения? Не представляешь как долго я не могу реализовать компонент по типу или Link, img, etc. С моего первого опыта на MUI и по сей день не гугл не ИИ не находит)
codesandbox.io/p/sandbox/broken-river-yklvxt?file=%2Fsrc%2Ftask_ts_2.tsx%3A51%2C22
гитхаб /total-typescript/react-typescript-tutorial/blob/main/src/08-advanced-patterns/72-as-prop-with-forward-ref.solution.tsx
есть такой вариант решения проблемы
я бы в задаче с фруктами , массив фрукт сделал Set 1 раз, и проверял за O(1) при тогле
Камон автор читает ответы из ЧАТГПТ 🙂
Редюс, он же применим только к массивам\масивопдобным типам и возвращает только массив, но никак не все типы... Либо я не понял вопрос
Редьюс может вернуть что угодно, всё зависит от функции шага
Последнии аргумент, который передал, то и возвратит
лол, что?
@@topsy_kreds Попробуй перефразировать
Это на позицию примерно мидл++?
Ответы автора на Джун+ имхо
Чисто интереса ради что за градация такая мидл+? То есть бывает мидл просто без плюсов или какой-нибудь мидл++?
Это если еще один плюс, то возможно будет senior -
Middle++ это уже 2 мидла :)
Хороший собес, только у тебя голос очень тихий. Плохо слышно
По хард скилам очень не плохо, но я бы не взял софты хромают на обе ноги, скучно душно.
Что хромает?
Да это чел с завода, он бы не взял к себе в цех, потому что разговор о бабах не поддержит
@@razdvatri4pyat сразу видно высокий профессионализм ) дети так себя ведут когда их обидят)
каждому своё, мне наоборот комфортно с такими работать, сидите кнопки красите, на чилле)
@@Ramosok, прости, не было времени тебе ответить, отдыхал у бабушки в деревне, в которой все твою маму, кстати, знали, и приветы передавали. Особенно те пятеро с той вписки.
А теперь к сути.
Человек старается, зубрит теоретическую никому ненужную ссанину, проходит потом все эти собесы общаясь с людьми, которые, возможно ещё хуже разбираются в теме, просто они в этот раз по другую сторону собеседования и у них есть ответы перед глазами(и то не факт, что правильные).
Записывает видосы, выкладывает за просто так,людям помочь, чтобы потом к нему никому не нужный ноунейм в комменты пришел и написал, что он бы "не взял" автора в свое сообщество "великих и замечательных разработчЕков своего о...а".
Не нравится контент?
-выключай и иди дальше смотреть великих инженеров всея айти и играть в танки под асмр стримерш с хвостами енота.
Это точно на синьора?!? А! В заголовке /мидл, ну тогда может быть
Собеседующий идёт по шаблону вопросов и даже не слушает ответы...
Ему уже ответили, а он задаёт тот же вопрос только с боку.
Его не интересуют знания. Его интересуют ответы.
Ужасно! Каждый раз поиходится уточнять, что он имеет в виду.
Студент какой-то...
ща бы путать юнион и утилити типы, как там у собеседующего дела?
человеческий фактор
в итоге прошел собес или нет?
в конце фидбек от HR, позвали на 2 этап (общение с командой), отказался, чтобы не тратить их время)
На позицию сеньора не хватает вопросов по систем дизайн
Я бы первую таску через map решил
Перезалив?
net
type Props = {
component: FC,
prop: Prop
}
Спасибо за собес, но твой микрофон тише собеседующего
Как мне показалось, собес на джуна был. Не в обиду.
А каким должен быть собес на сеньора? Можно парочку примеров?
P.S. Я без сарказма. Вот сам сижу и пытаюсь понять... Может сеньор должен рассказать как JS-движок под капотом работает?
Тупейшие вопросы в начале которые на качество кода никак не влияют
рендер идет снизу вверх - это сильное заявление!\
я конечно могу ошибаться, но как будто бы спрашивать фронта за CI/CD это лишнее
22:46 на конце цепочки прототипов вообще анал)
проходил собес 2 года назад. За такие ответы и решение задач даже на джуна не взяли бы
Попроходи ещё раз, зазнался ты
У собеседующего голос довольно сильно похож на голос Кристо - игрока в мафию (например, Мафия у Левши)
Сами сравните на ютубе)))
ЗП сеньерская, а вопросы мидловские))
Зп на мидла
2700 баксов это гроши для сеньёра помидора !
Задача два какая-то душная)
Сбер?)
или газпрём.
очень мутно-тяжёлый собеседующий. сам, видно, не очень шарит, от того и вопросы такие.
В названии папки code sandbox было имя собеседующего. Если его пробить, то вылезет последнее место работы Сбер
Да. Созвон у них в SberJazz проходил, судя по иконке
Почему у программистов такие душные занудные голоса????
мои варианты решения второй задачи, не думаю что они хотели именно это, но я не понимаю чего именно они хотели
1.
type IProps<
T extends keyof React.JSX.IntrinsicElements | React.JSXElementConstructor
> = {
Component: T;
height: number;
} & ComponentProps;
2.
type IProps = {
Component: T;
height: number;
} & V;
3.
type IProps = {
Component: T;
height: number;
} & ComponentProps;
4.
type IProps = {
Component: T;
height: number;
} & Parameters[0];
если вдруг кто-то знает - пишите в комменты, интересно
type IProps = {
Component: FC;
height: number;
} & T;
@@vladimir.olishevsky ComponentType
А че автор так мямлит? Харды есть, причём нифига себе какие, а нормально разговаривать не может(
С автором что-то не так! Он или откуда-то читает, или ему подсказывают (через наушник) или ещё что-то.
Многие ответы не стыкуются и порой на мелочах может нести чушь (как с батчингом, к примеру).
Ответы автора такие слабые и неуверенные... Ощущение, что на джуна+ тянет едва.
В чём разница css и мрепртцессорных переменных? - там через -- обьявлял, а препроцессор через $. А в чём принципиальная разница? Э... Css переменные в браузере видны %} Понимания ноль.
отвратный стек, отвратное интервью