Найти ближайшее значение в бинарном дереве
Напишите функцию, которая принимает два аргумента — бинарное дерево и значение в виде числа, а возвращает ближайшее значение, найденное в бинарном дереве.
Node = { value: number | null, left: Node | null, right: Node | null }
Зная свойство сбалансированного бинарного дерева, где слева находятся все значения нод меньше текущей, а справа равные или больше по значению, мы можем в лучшем случае откидывать каждый раз половину дерева.
В данном решении мы идем рекурсивным путём по нодам, записывая и сравнивая разницу со значением из аргумента. Если значение равно нужному, значит мы нашли нужную нам ноду, а иначе мы смотрим, является ли текущее значение ноды меньше или больше того, которое мы ищем. В зависимости от этого мы продолжаем рекурсивно спускаться в нужном нам направлении, обновляя разницу, до тех пор пока не упремся в конец ветки.
👉 @frontendInterview
Напишите функцию, которая принимает два аргумента — бинарное дерево и значение в виде числа, а возвращает ближайшее значение, найденное в бинарном дереве.
Node = { value: number | null, left: Node | null, right: Node | null }
Зная свойство сбалансированного бинарного дерева, где слева находятся все значения нод меньше текущей, а справа равные или больше по значению, мы можем в лучшем случае откидывать каждый раз половину дерева.
В данном решении мы идем рекурсивным путём по нодам, записывая и сравнивая разницу со значением из аргумента. Если значение равно нужному, значит мы нашли нужную нам ноду, а иначе мы смотрим, является ли текущее значение ноды меньше или больше того, которое мы ищем. В зависимости от этого мы продолжаем рекурсивно спускаться в нужном нам направлении, обновляя разницу, до тех пор пока не упремся в конец ветки.
👉 @frontendInterview
Как работает «сборщик мусора» в JS?
Основной алгоритм сборки мусора называется «алгоритм пометок» (от англ. «mark-and-sweep»).
Согласно этому алгоритму, сборщик мусора регулярно выполняет следующие шаги:
- Сборщик мусора «помечает» (запоминает) все корневые объекты.
- Затем он идёт по ним и «помечает» все ссылки из них.
- Затем он идёт по отмеченным объектам и отмечает их ссылки. Все посещённые объекты запоминаются, чтобы в будущем не посещать один и тот же объект дважды.
…И так далее, пока не будут посещены все достижимые (из корней) ссылки.
- Все непомеченные объекты удаляются.
👉 @frontendInterview
Основной алгоритм сборки мусора называется «алгоритм пометок» (от англ. «mark-and-sweep»).
Согласно этому алгоритму, сборщик мусора регулярно выполняет следующие шаги:
- Сборщик мусора «помечает» (запоминает) все корневые объекты.
- Затем он идёт по ним и «помечает» все ссылки из них.
- Затем он идёт по отмеченным объектам и отмечает их ссылки. Все посещённые объекты запоминаются, чтобы в будущем не посещать один и тот же объект дважды.
…И так далее, пока не будут посещены все достижимые (из корней) ссылки.
- Все непомеченные объекты удаляются.
👉 @frontendInterview
This media is not supported in your browser
VIEW IN TELEGRAM
IT образование в 2022 стало бесплатным!
Все лекции и гайды топовых вузов страны тут
https://news.1rj.ru/str/vse_ob_it
Все лекции и гайды топовых вузов страны тут
https://news.1rj.ru/str/vse_ob_it
Основы Redux
Современная разработка давно проходит по стандартам использования фреймворков, что обеспечивает приложения долголетием и безопасностью. Это руководство расскажет об актуальной версии библиотеки Redux и познакомит вас с его популярными инструментами управления состоянием приложения.
👉 @frontendInterview
Современная разработка давно проходит по стандартам использования фреймворков, что обеспечивает приложения долголетием и безопасностью. Это руководство расскажет об актуальной версии библиотеки Redux и познакомит вас с его популярными инструментами управления состоянием приложения.
👉 @frontendInterview
Is every value in the array an array
Создайте функцию, которая проверит, все ли элементы массива являются массивами.
Примеры:
👉 @frontendInterview
Создайте функцию, которая проверит, все ли элементы массива являются массивами.
Примеры:
[[1],[2]] => true
['1','2'] => false
[{1:1},{2:2}] => false👉 @frontendInterview
Что такое прогрессивный рендеринг?
Прогрессивный рендеринг на стороне сервера (PSSR) основан на концепции потоковой передачи HTML. PSSR разбивает страницы на осмысленные компоненты с помощью разделения кода. Эти части страницы управляются разными скриптами, и теперь у нас есть возможность сделать гидратацию независимо. Давайте посмотрим, как работает PSSR:
1. Браузер запрашивает у сервера HTML-код.
2. Сервер делает API запросы и сначала рендерит критический контент, а затем отправляет его клиенту.
3. Браузер анализирует HTML и отображает его на экране.
4. Сервер рендерит некритический контент и передает его браузеру.
5. Затем браузер анализирует и отображает некритичный контент.
6. Между тем JS-бандлы загружаются и выполняются в фоновом режиме, а браузер передаёт интерактивность элементам DOM.
PSSR повышает производительность вашего веб-приложения, извлекая и визуализируя компоненты страницы параллельным и приоритетным образом.
👉 @frontendInterview
Прогрессивный рендеринг на стороне сервера (PSSR) основан на концепции потоковой передачи HTML. PSSR разбивает страницы на осмысленные компоненты с помощью разделения кода. Эти части страницы управляются разными скриптами, и теперь у нас есть возможность сделать гидратацию независимо. Давайте посмотрим, как работает PSSR:
1. Браузер запрашивает у сервера HTML-код.
2. Сервер делает API запросы и сначала рендерит критический контент, а затем отправляет его клиенту.
3. Браузер анализирует HTML и отображает его на экране.
4. Сервер рендерит некритический контент и передает его браузеру.
5. Затем браузер анализирует и отображает некритичный контент.
6. Между тем JS-бандлы загружаются и выполняются в фоновом режиме, а браузер передаёт интерактивность элементам DOM.
PSSR повышает производительность вашего веб-приложения, извлекая и визуализируя компоненты страницы параллельным и приоритетным образом.
👉 @frontendInterview
Хватит!
Хватит ходить на собеседования и сидеть без работы!
Подпишись на канал и прокачивайся: @frontend_loft
Хватит ходить на собеседования и сидеть без работы!
Подпишись на канал и прокачивайся: @frontend_loft
Почему результатом сравнения двух похожих объектов является false?
В JS объекты и примитивы сравниваются по-разному. Примитивы сравниваются по значению. Объекты — по ссылке или адресу в памяти, где хранится переменная. Вот почему первый console.log возвращает false, а второй — true. Переменные «a» и «c» ссылаются на один объект, а переменные «a» и «b» — на разные объекты с одинаковыми свойствами и значениями.
👉 @frontendInterview
В JS объекты и примитивы сравниваются по-разному. Примитивы сравниваются по значению. Объекты — по ссылке или адресу в памяти, где хранится переменная. Вот почему первый console.log возвращает false, а второй — true. Переменные «a» и «c» ссылаются на один объект, а переменные «a» и «b» — на разные объекты с одинаковыми свойствами и значениями.
👉 @frontendInterview
Что такое временная мёртвая зона (temporal dead zone)?
TDZ: термин для описания состояния, когда переменные недоступны. Они находятся в области видимости, но не объявлены.
Переменные let и const существуют в TDZ с начала их объемлющей области видимости до момента их объявления.
Можно также сказать, что переменные существуют в TDZ с момента их привязки (когда переменная привязывается к области видимости, внутри которой она находится) до момента ее объявления (когда для этой переменной в памяти резервируется имя).
Вы можете видеть на картинке, что если бы я обратился к переменной age раньше, чем она была объявлена, это вызвало бы ошибку ReferenceError. Из-за TDZ.
👉 @frontendInterview
TDZ: термин для описания состояния, когда переменные недоступны. Они находятся в области видимости, но не объявлены.
Переменные let и const существуют в TDZ с начала их объемлющей области видимости до момента их объявления.
Можно также сказать, что переменные существуют в TDZ с момента их привязки (когда переменная привязывается к области видимости, внутри которой она находится) до момента ее объявления (когда для этой переменной в памяти резервируется имя).
Вы можете видеть на картинке, что если бы я обратился к переменной age раньше, чем она была объявлена, это вызвало бы ошибку ReferenceError. Из-за TDZ.
👉 @frontendInterview
👍1
+1 в копилку полезных каналов о фронтенде
С Senior Frontend стартовать в айти намного проще:
• готовые примеры кода: смотрите на превью, как работает код, и сразу редактируете его в CodePen
• лайфхаки по JS, HTML, CSS, которыми делятся только в крупных компаниях
• тесты и опросы для тех, кто не запоминает сухую инфу
Сохраняйте: @seniorFront
С Senior Frontend стартовать в айти намного проще:
• готовые примеры кода: смотрите на превью, как работает код, и сразу редактируете его в CodePen
• лайфхаки по JS, HTML, CSS, которыми делятся только в крупных компаниях
• тесты и опросы для тех, кто не запоминает сухую инфу
Сохраняйте: @seniorFront