Очень много комментариев получаю о том, как записаться на подобное собеседование. Для тех, кто еще не знает, я делаю набор на мок собесы через свой Telegram-канал: telegram.me/ayub_begimkulov_coding. Там есть сообщение в закрепе о том, как записаться (просто оставляете коммент с описанием о себе).
Классный канал я подписался! Я сам учитель по программированию т.к учился не так хорошо чтоб стать разработчиком, но я стараюсь работать над с собой и ваши видео помогают!
В первой задаче я тоже подзавис, "как так, 0? Вроде же должно работать". А потом понял: мы возвращаем объект с полем count, значение которого присваивается из переменной count в момент создания.
Айюб, привет! Отличное видео, спасибо за подобный материал) Самому сейчас 20 лет, смотрю такие собесы чтобы понимать свой уровень знаний) В планах есть записать видео о том как начинал свой путь, какие компании были, через какие трудности проходил, как учился и тд? Было бы интересно послушать полноценное разговорное видео от молодого сеньора!) Спасибо!
ухты, оказывается в ивентлупе 2 очереди: микро и макро таски. Надо пойти разоботчикам движка рассказать, что у них их 2, а не одна очередь с приоритетами, вот удивятся))
А будут полностью Javascript собеседования, без фреймворков? Хотелось бы побольше материала по core js. Хотя я понимаю что сейчас везде фреймворки используются)
Задача про ref непростая, просьба объяснять чуть помедленнее в следующих собесах, понимаю что когда мысль летит, то трудно разжевывать, но такая скорость наверно приходит только после лет опыта) По-моему видно что кандидат не понял ничего, а сказал что понял только чтоб от него отстали)
Могу попробовать, на пальцах. 1. Когда мы создаём ref, то он не пересоздаётся при ререндере, это его особенность. 2. Это просто объект, и мы можем в него засунуть что угодно (в поле current). Зачем так сделано - вопрос другой 3. При каждом рендере создаётся новый handler, мы его сохраняем в ref.current. Т.к. мы меняем только значение поля объекта, то ссылка на сам объект ref не меняется. 4. Т.к. useEffect в зависимостях имеет ref, а ссылка на него не меняется, то он не вызывает повторно функцию внутри себя. 5. Нам нужно получать значение из ref.current именно в момент события клик, но если мы передадим в addEventListener ref.current, то будет передана функция, которая там лежит в момент вызова addEventListener. Поэтому мы передаем функцию, которая в момент клика вызовет то, что лежит в ref.current. А именно это нам и нужно.
На многих собесах тебе скажут: "ладно, пойдем дальше". А так, у меня есть видео на эту тему, поэтому прям с нуля не объяснял, так как нужно минут 5-7. Но спасибо за фидбэк, постараюсь улучшить этот момент.
Нет, не странно. Мы же ее используем внутри функции, а не сразу. Пока модуль не инициализируется, она не должно ни где использоваться. Так на самом деле много кто делает в реакт файлах.
Потенциал у парня есть, думаю через годик сам будет улыбаться, когда посмотрит видео. А пока совет прорешать все задачки на сайте learn js после теории ну и теорию повторит заодно. Можно еще задачки на code wars решать. Понятно что все методы и свойства не запомнишь оно и не надо, есть дока. Я вот если честно не помнил что Map has(key) - проверяет наличие ключа) Редко использую.
Блин, у чувака очень крутой опыт для 19-20, но посыпался на первой же задаче по замыканию. Завидую черной завистью :) Тоже из Украины, но успел уехать.
Chad JS-developer: вайтишник, гребёт деньги лопатой не зная про замыкания и копипастя в React'e. Virgin JS-developer: true ИТшник, знает ECMA-262 наизусть, не использует фреймворки, ноет в комментах, зарабатывает меньше Chad'a.
@@nok738 тру стори. Сам не знаю зачем я на кодварсе и learnJavaScript так долго висел, только недавно начал изучать реакт - мой знакомый по курсу уже слепил портфолио и нашел работу. И теперь он обучается за счёт работодателя, а я за свой счёт, только и всего) Зато я знаю про генераторы и регулярки, лол. Так что совет идти на собес не зная некоторой базы вполне хорош.
Реф возвращает ссылку на дом объект Как документ.гетэлементбайайди Чтобы понять закинь реф в компонент или див и залогай Там есть поле каррент далее можно обратиться например к полю велью и получить текущее значение инпута.
У ref есть ещё одна фича (которую я считаю грязным хаком и поотбивать руки, но кто я такой, если (вроде) даже в документации был пример). В общем, в ref можно засунуть значение, и оно будет сохраняться от рендера к рендеру. Изначально, я так думаю, это было сделано для оптимизации: раз получили ссылку на DOM node, чё её каждый рендер заново получать? Но если туда поместить что угодно, то оно не будет заново создаваться при каждом рендере, а будет хранить значение между рендерами, что твой state. Но его изменение не будет триггерить перерендер, как изменение state. Короче, неплохой способ выстрелить себе в ногу, рекомендую 👍
@@ИмяФамилия-э4ф7в Ты не поверишь большинство кастомных хуков, либ которые их предоставляют сделаны через ref. Ref ничто иное, что как статические поле у классовых Компонентов. Так, что я бы не был так критичен) Без его использования, многих проблем не избежать.
ну норм собес)) да парень конечно молодец, на собесах все наверно чутка волнуются, но да, для такого большого опыта знаний у него думаю чутка не хватает по базе) но в целом красава!
Highcharts - офигенная библиотека, очень очень гибкая. И комьюнити у Highcharts достаточно большое. 2 года на нём сидел на проекте, хочу ещё, но перешёл в другой проект, где все графики уже сделали до меня). Highcharts топ для графиков, а для таблиц топ - это AgGrid.
Спасибо большое за полезное видео! Подскажите, пожалуйста, в задаче про использование хука useRef (1:06:55), почему передача ref.current в качестве callback функции в eventListener (window.addEventListener(event, ref.current, options);) не сработает? Безусловно, useEffect отработает один раз, но в любом случае мы же передаём зависимость от объекта, значит параметр будет обновляться, так как при вызове функции она будет смотреть напрямую на свойство текущего объекта(ref -> current), разве тогда код не будет работать как нужно? В случае если мы пишем const fn = ref.current внутри useEffect и передаём её в качестве callback функции, то, конечно, мы будем ссылаться только на первую инициализацию, поэтому будет необходимость обернуть в другую функцию. Заранее благодарю за ответ.
Запись `window.addEventListener(type, ref.current)` ничем не отилчается от: ``` const fn = ref.current; window.addEventListener(type, fn) ``` Ты ведь при вызове useEffect передаешь текущую фукнцию, которая сразу станет обработчиком и не будет меняться. То есть ты в любом случае берешь из ref первоначальное значение.
Может кто-то подсказать смысл заворачивать ref.current в функцию, в зависимостях ref, придет ссылка на другой handler при ререндере app, и как я понял useEffect, только один раз отработает, а в зависимостях current -объект, разве useEffect увидит изменение ref, ссылка же останется такая же или я что-то не так понял, было бы отлично посмотреть видео на эту тему, а так спасибо большое автору за качественный и интересный контент, всех благ и процветания каналу!)
насколько нужен TS для джуна? P.s. досмотрел видос,отличное собеседование ,отличный джун ,супер классный фидбек,везде бы так давали его,удачи в развитие канала и джуну !
Зачем ты это спрашиваешь?) Возьми да выучи на базовый уровень, там пару тем, зато будет плюс на собесах. Там на базовом уровне учить то нечего - типы, интерфейсы и дженерики. Если чуть чуть углубиться можно и ооп выучить, но на Джуна точно не потребуют
Похоже на типичную историю, когда человек ушел сразу в практику особо не углубляясь в то, как все работает. Это видно даже по тому, как он отвечает реальными кейсами вместо того чтобы дать definition на вопросы по типу "что такое map?"
Да, но это не всегда плохо. Просто надо в какой-то момент все-таки закрыть те пробелы, которые накопились. Думаю тут просто человек не то чтобы их понимал. Думаю собес на пользу пошел ему)
Скажу за себя на некоторых вопросах я тоже туплю как ответить (возможно потому что у меня ночь уже). Я это к тому что не смотря на то что я не смог бы объяснить банальные вещи мне это не мешает писать крутые проекты. Недавно запустили проект с блокчейном. Бек на ноде, фронт на нексте, смарт контракт на солидити. Вполне хороший по коду проект. На мой взгляд подобные собесы могут возможно отсеять нужных кандидатов. Возможно чел очень хорошо шарит за ваш проект и имеет большой бэкграунд, но его не взяли из-за того что затупил и не смог ответить на задачу, которая никогда ему не встречалась в продакшене.
Посмотрел половину, объективно, у соискателя очень слабая база. Верно, что и с такими познаниями можно писать рабочий код. И, зачастую, многое не понадобится в проектах. Если такой разработчик будет писать код через ревью, то ничего страшного: в 90% все будет ОК, а 10% заметит ревьюер. Тут вопрос: чего хочет работодатель? Где и как он планирует применять умения соискателя? Есть ли у него время и ресурсы выбирать, искать других?
Это да, но с другой стороны, если ты закроешь на это глаза, ты можешь нанять человека, который вообще ничего не знает. Да и так, тут вопрос зависит от позиции и от того, что нужно будет делать кандидату. Человек выше правильно подметил.
25:47 "на что больше похож Map, на объект, или на массив?" Сложно сказать, с учётом того, что массив в js - это объект, а объект - это, в некотором смысле, ассоциативный массив 🤣
Вопросы, как по мне, душные! Почти все вопросы были сведены к проверке знаний нативного js (задротского).... Не спорю, js - основа! Но в современной разработке, в 99% случаев ты спокойно сможешь нагуглить нужную инфу на том же stackoverflow и тд.. + при возникновении критической ошибки ты видишь её в консоли..... В остальном, прикольное интервью! Хорошо что не топил собеседуемого и немного помогал!
Тут 5 вопросов по core js. ПЯТЬ, не пятдесят, из которых примитивы против ссылочных, замыкания и event loop, база. Что ты ожидал на собесе для джуна? Методы массиво и вопросы какие есть типы данных?
Основная цель тестовых собесов, подготовиться к реальным. Я много проходил собесов, и поверь, были собесы намного душнее)). Конечно собесы ничего не имеют общего с реальной разработкой, но это нужно принять))
Тут фишка вот в чем: если ты понимаешь core, условно, то понять всякие библиотеки для тебя - вопрос времени, довольно небольшого. Наоборот, к сожалению, это не работает. Тут вопрос, что от тебя хочет работодатель? Если клепать однотипные лендосы под присмотром - никакой core не нужен.
Тут правильно подметили, без основ для тебя все будет магия. А смена библиотек будет очень сложной. Я бы даже сказал так, если брать джуна - то лучше, чтобы он хорошо понимал базу, нежели фреймворк и его детали.
Можно заучить работу любого фреймворка ( к примеру React ) , а выйдет что-то другое , на основе js и тебе понадобится куда больше времени на освоение нового материала , чем человеку , который шарит в js
@@ayub_begimkulov согласен, однако если идти на собес на джуна не имея до этого опыта работы с каким-то большим проектом, то на вопросах про оптимизацию через ref, useMemo, useCallback, memo можно поплыть, поскольку кандидат в глаза их не видел и не применял в пет проектах. Но как я и сказал, вопросы интересные, задачка тоже, кое что для себя подчеркнул ;)
собес очень простой, единственное что первый вопрос с подвохом, а так все очень просто. Задачки даже не алгоритмические, а на базовое знание языка. Было бы интересно посмотреть как бы решил задачу по поиск суммы/произведения из массива
Чел с 4-х летним опытом, который чпокойно может пробоваться на мидл поз с зп 200к - прйду на джуна попробуюсь. Тем временем заводчанин окончивший курсы и не имеющий опыта - гдр мои 200к? P.S. После перпого вопроса я все прнял, не понимаб, что он там разрабвтывал 4 года, когда он замыканий не понимает. Это ты его еще про прокси и прототипы не спросил
@@ayub_begimkulov,спасибо,что-то я поплыл когда попросили написать аналог метода split(скорее всего отказ будет,зато я понял,что надо просто замучивать эти задачи
@@ВасилийДимитров-с9с привет, как сейчас у тебя дела с собесами? Я кстати попробовал написать аналог метода split и у меня вроде как получилось его реализовать, с чем именно у тебя возникла проблема?
Я из Норвегии, data science моя специальность, 45-60 тыщ зп на джуна, налог не 50 процентов и не близко, это не Германия, налог 30%, который ещё становится меньше есть у тебя есть дети, ипотека и тд 1600 евро в месяц в Норвегии это не деньги) если да заплатил за всё и у тебя 1600 осталась то тогда да, ты срелнестатический работяга
Я сам как-то считал, даже если брать в учет упрощенные схемы на первый 5 лет (как в норвегии), то все равно чисто по деньгам там не сильно выгодно было (пока курс доллара не взлетел), по сравнению с той же Москвой. А если начать еще и цену жизни учитывать - то тем более. Люди обычно туда не за деньгами едут.
Ничего удивительно, от слова совсем. Работать и проходить собесы - это две разные крайности. Из-за волнений человек даже может забыть свое имя, не говоря уже о том, чтобы вспомнить, что такое замыкание
афигеть как много должен знать джуниор. Неужели все это и многое другое нужно знать только на входе в IT? Я вот уже пол года учу js и понимаю, что толку нет без практики и конкретной цели. Инфы горы и ее всю не запомнить.
Я тебе скажу больше, вопросы в видео это так, разминка. Джун в принципе должен знать все ходовые хуки (а это считай почти все). Иногда уже даже TS знать и уметь например написать свою реализацию Map/reduce и т.д.
@@kujojotaro3464 Я скажу так, по своему опыту и опыту знакомых, кто позже впрыгнул/впрыгивает в сферу. Что на трейни, что на миддла+ спрашивают в принципе одно и тоже: База JS (event loop, данные, структуры данных иногда) React (хуки, основные фичи реакта, реактивен ли реакт) HTTP и всякое около того Иногда еще по верстке могут так поверхностно спросить, всякие там reflow/repaint, серверные компоненты, shadow dom API (что это такое и какие бывают) потому что некоторые думают, что весь API, это фишка JS'а ______ Т.е. по сути разница лишь в ожидаемых более глубинных ответах и в отличие сомнений в своих ответах.
@@marchugans вообще весь api это не фишка js, даже setTimeout и event loop это не js) Ну я бы хотел что бы мой джун умел писать троттл, дебаунс, кеширование хотя б элементарное. Понимал асинхронность и мог оценить сложность алгоритма. Ну и тайпскрипт + хотя бы 1 стейт менеджер
@@kujojotaro3464 та понятно, а сложность то зачем 🤣. Не, серьезно, ну допустим, понимать сложность: понимать, что цикл в цикле - это какая-то лажа (разве что, без этого никак), а цикл в цикле в цикле - это удоляй и не запускай такое. Но оценить?! Джун такой: не, тут, похоже не n, a n*log(n). Не, оно то можно, не рокет саенс, но зачем? Да, кстати, что там по ЗП у твоего джуна, если не секрет? Друг просил узнать?
Эх вот после первой задачи даже смотреть не хочется, ну ладно сразу не допер, но когда уже откровенно тыкают и говорят вот смотри обычное замыкание и он тупит и не понимает о чем пример ну это просто уже дно😁.
@ayub_begimkulov Что-то я до конца не понял твою идею с useRef. Ты просто добавил стрелочную функцию в addEventListener, но как это повлияет на запуск useEffect, если в нем deps все равно остался ref, который меняет только значение, но не ссылку. Также 1 раз ровно запустится при первом рендере.