#Go
🔖 Почему Go-разработчик пишет код, который Java-девелопер считает "странным"?
Вы Java-разработчик, начали писать на Go и всё кажется странным: нет try-catch, нет наследования, строчные буквы для приватности, можно вызвать метод у nil. Go — это не Java, это другая парадигма. Явность вместо магии, композиция вместо наследования, ошибки как значения вместо исключений.
📎 Основные различия Go от Java:
🔸 Нет исключений (try-catch), ошибки — это значения (if err != nil)
🔸 Приватность через заглавность букв (Public vs private), не через модификаторы
🔸 Нет наследования, только композиция и интерфейсы
🔸 Интерфейсы неявные — не нужно писать implements
Go философия: явность над неявностью, простота над магией. Кода больше, но всё понятно. Нет аннотаций, нет DI фреймворков, нет магических прокси и рефлексии за кулисами. Вы видите, что происходит.
Два ключевых отличия:
✅ Go хорош для:
- Микросервисов и бекенда (явность, производительность)
- Когда нужна скорость разработки и чистота кода
- Когда нет необходимости в сложных абстракциях на старте
- Когда важна читаемость и простота отладки
❌ Привыкайте к:
- Повторению проверок ошибок (if err != nil много раз)
- Коротким названиям переменных (ctx, err, db, u, p)
- Отсутствию try-catch блоков (это норма)
- Приватности через буквы, а не ключевые слова
- Явным транзакциям и управлению ресурсами
Go требует переучивания мышления. Java — "дайте мне абстракции и автоматику". Go — "вот инструменты, делайте сами, но явно". Один раз адаптируетесь — полюбите за простоту и понятность.
📎 Статья
🎙 Новости
📝 База вопросов
Вы Java-разработчик, начали писать на Go и всё кажется странным: нет try-catch, нет наследования, строчные буквы для приватности, можно вызвать метод у nil. Go — это не Java, это другая парадигма. Явность вместо магии, композиция вместо наследования, ошибки как значения вместо исключений.
// Плохо (по Go стандартам) - Java способ обработки ошибок
try {
String raw = Files.readString(Path.of("cfg.json"));
Config cfg = mapper.readValue(raw, Config.class);
return cfg;
} catch (IOException ex) {
throw new IllegalStateException("cannot init config", ex);
}
// Хорошо (Go способ) - явная проверка каждой ошибки
raw, err := os.ReadFile("cfg.json")
if err != nil {
return nil, fmt.Errorf("read cfg: %w", err)
}
var cfg Config
if err := json.Unmarshal(raw, &cfg); err != nil {
return nil, fmt.Errorf("parse cfg: %w", err)
}
return &cfg, nil
Go философия: явность над неявностью, простота над магией. Кода больше, но всё понятно. Нет аннотаций, нет DI фреймворков, нет магических прокси и рефлексии за кулисами. Вы видите, что происходит.
Два ключевых отличия:
// 1. ЯВНАЯ ОБРАБОТКА ОШИБОК - видите каждый шаг
tx, err := db.BeginTx(ctx, nil)
if err != nil {
return fmt.Errorf("begin tx: %w", err)
}
defer tx.Rollback()
// 2. ПРИВАТНОСТЬ ЧЕРЕЗ БУКВУ - заглавная = public, строчная = private
type PaymentGateway interface { // Public
Charge(ctx context.Context) error
}
func (s *stripe) charge(ctx context.Context) error { // private method
// ...
}
- Микросервисов и бекенда (явность, производительность)
- Когда нужна скорость разработки и чистота кода
- Когда нет необходимости в сложных абстракциях на старте
- Когда важна читаемость и простота отладки
- Повторению проверок ошибок (if err != nil много раз)
- Коротким названиям переменных (ctx, err, db, u, p)
- Отсутствию try-catch блоков (это норма)
- Приватности через буквы, а не ключевые слова
- Явным транзакциям и управлению ресурсами
Go требует переучивания мышления. Java — "дайте мне абстракции и автоматику". Go — "вот инструменты, делайте сами, но явно". Один раз адаптируетесь — полюбите за простоту и понятность.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
CSS Grid — один контейнер делится на строки и столбцы в CSS. Все элементы располагаются как на шахматной доске.
Вместо кучи DIV'ов для раскладки:
.page {
display: grid;
grid-template-columns: 250px 1fr;
grid-template-rows: 80px 1fr 50px;
grid-template-areas:
'sidebar header'
'sidebar main'
'sidebar footer';
}
.header { grid-area: header; }
.sidebar { grid-area: sidebar; }
.main { grid-area: main; }Вот так! Рисуешь структуру в CSS, как картинку.
fr — "fraction", волшебный юнит Grid'а:
/* 1/4 и 3/4 пространства, автоматически пересчитывается */
grid-template-columns: 1fr 3fr;
repeat() — копирование столбцов:
/* 7 столбцов одинаковой ширины (календарь) */
grid-template-columns: repeat(7, 1fr);
Элементы занимают несколько ячеек
.child {
grid-column: 1 / 4; /* от столбца 1 до 4 */
grid-row: 1 / 3; /* от строки 1 до 3 */
}Главное
Чистый HTML, вся вёрстка в CSS!
Интерактивный гайд по ссылке ниже
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
Ненавидишь писать документацию? Davia её генерирует автоматически с диаграммами!
davia generate
- Онбординг новичков — они разберут проект за часы, а не за дни
- Возврат к старому коду — забыл, как работает? Есть документация!
- Крупные проекты — видишь всю архитектуру визуально
- Open source — пользователи быстрее разберутся
- Code review — проще объяснять изменения
Вместо этого:
TODO: написать документацию...
Теперь это:
Автоматическая документация с диаграммами модулей,
зависимостей, API и структуры проекта ✨
Почему это важно
Документация часто отстаёт от кода. Davia генерирует её из самого кода, поэтому она всегда актуальна!
Забирай на GitHub и пошли документировать проекты!
Please open Telegram to view this post
VIEW IN TELEGRAM
Знаешь ли ты разницу между
'Y' и 'y' в паттерне даты Java?Код:
Date date = new Date("2024/12/31");
var formatter = new SimpleDateFormat("dd-MM-YYYY");
System.out.println(formatter.format(date));Результат:
31-12-2025 ← Уехали на год вперёд!
А если использовать правильный:
var formatter = new SimpleDateFormat("dd-MM-yyyy");
// 31-12-2024 ✅`y` (lowercase) = обычный год → 2024, 2025
`Y` (UPPERCASE) = неделя-года (ISO 8601) → может быть на год больше/меньше!
Y использует ISO-8601 стандарт: первая неделя года — та, где четверг в январе.31 декабря 2024 входит в первую неделю 2025, поэтому
Y выдаёт 2025!1 января 2027 входит в последнюю неделю 2026, поэтому
Y выдаёт 2026!'Y', исправили на 'y'🔸 Никогда не используй `Y` в паттерне даты, если не знаешь что это!🔸 Используй `y` для обычного года
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2🤯2❤1
#article #тренажер
📚 Тренажеры для тестировщика. Где взять практику?
Возвращаемся к нашему любимому вопросу — много теории, мало практики. Где тренироваться тестированию самоучке или человеку, которому не хватает практических заданий на курсах?
Перейти к материалу
👉 База вопросов 👉 Новости
📚 Тренажеры для тестировщика. Где взять практику?
Возвращаемся к нашему любимому вопросу — много теории, мало практики. Где тренироваться тестированию самоучке или человеку, которому не хватает практических заданий на курсах?
Перейти к материалу
👉 База вопросов 👉 Новости
❤1
#HTML #CSS #UX #frontend #лайфхак
🔖 HTML лайфхак: Правильная клавиатура на мобильнике
Когда пользователь вводит дату рождения на мобильном — какая клавиатура должна появиться? Цифровая! Но разработчики часто делают так:
Почему
🔸 Правильный способ
Используй атрибут `inputmode="numeric"`:
Что получится
🔸 С type="tel": появляются символы
🔸 С inputmode="numeric": только цифры
Другие значения inputmode
🔸 Почему это важно
✅ Юзер видит нужную клавиатуру сразу
✅ Меньше ошибок при вводе
✅ Быстрее заполняет форму
✅ Работает на iOS и Android
🔸 Бонус: выключи автокапитализацию
Для полей "Почта или телефон":
Буквы остаются строчными. Удобнее вводить почту!
Другие лайфхаки смотри по ссылке⬇️
📎 Статья
🎙 Новости
📝 База вопросов
Когда пользователь вводит дату рождения на мобильном — какая клавиатура должна появиться? Цифровая! Но разработчики часто делают так:
<!-- ❌ Неправильно -->
<input type="tel" placeholder="Дата рождения">
Почему
type="tel"? Потому что раньше других способов не было. Костыль! 🤦Используй атрибут `inputmode="numeric"`:
<!-- ✅ Правильно -->
<label for="bd">Дата рождения</label>
<input type="text" id="bd" inputmode="numeric">
Что получится
# и * (не нужны для даты)0-9 (идеально!)Другие значения inputmode
<!-- Email -->
<input inputmode="email" placeholder="почта@example.com">
<!-- Телефон -->
<input inputmode="tel" placeholder="+7 9XX XXX XXXX">
<!-- URL -->
<input inputmode="url" placeholder="https://example.com">
<!-- Поиск -->
<input inputmode="search" placeholder="Поиск...">
<!-- Десятичное число -->
<input inputmode="decimal" placeholder="12.99">
Для полей "Почта или телефон":
<input type="text" autocapitalize="off" inputmode="numeric">
Буквы остаются строчными. Удобнее вводить почту!
Другие лайфхаки смотри по ссылке
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2
#Собес #oop #slots #memory_optimization
🤔 Что такое __slots__
💬 Кратко:
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
🤔 Что такое __slots__
💬 Кратко:
__slots__ — это специальный атрибут класса, который ограничивает набор атрибутов, которые можно присваивать экземплярам этого класса. Он помогает экономить память, исключая создание словаря для хранения атрибутов объектов.📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
❤1
#алгоритмы #git #diff #программирование #CS
🔖 Знаешь ли ты, почему diff выглядят по-разному в разных инструментах?
Оказывается, это не баг, а фишка алгоритмов!
🔸 Проблема
Есть две версии кода. Нужно показать разницу. Логично, что должен быть один правильный diff, верно?
❌ Неправильно! Существует множество "правильных" diff'ов.
Пример:
Столь же правильно:
Они идентичны, но выглядят совсем по-разному!
💡 Алгоритм Майерса
Большинство инструментов используют алгоритм Майерса. Он находит один из минимальных diff'ов (но не обязательно самый читаемый).
Сложность: O(ND) в обычных случаях, но может деградировать до O(N²) в наихудшем!
🔸 Почему они отличаются
1️⃣ Разная реализация — даже один алгоритм может дать разные результаты
2️⃣ Эвристики — добавляют быстродействие, но жертвуют качеством
3️⃣ Постобработка — переставляют строки, чтобы улучшить читаемость
🔸 Три режима
Есть компромисс между скоростью и качеством:
🔸 Fast — максимум скорости, минимум качества
🔸 Default — баланс (используется везде)
🔸 Minimal — идеальный diff, но медленнее
💡 Главное открытие
Читаемость diff определяется не только алгоритмом, но и его реализацией + постобработкой
Поэтому в GitHub качество выше, чем в простом
Подробнее по ссылке ниже⬇️
📎 Статья
🎙 Новости
📝 База вопросов
Оказывается, это не баг, а фишка алгоритмов!
Есть две версии кода. Нужно показать разницу. Логично, что должен быть один правильный diff, верно?
Пример:
a
+b
-c
d
Столь же правильно:
a
-c
+b
d
Они идентичны, но выглядят совсем по-разному!
Большинство инструментов используют алгоритм Майерса. Он находит один из минимальных diff'ов (но не обязательно самый читаемый).
Сложность: O(ND) в обычных случаях, но может деградировать до O(N²) в наихудшем!
Есть компромисс между скоростью и качеством:
Читаемость diff определяется не только алгоритмом, но и его реализацией + постобработкой
Поэтому в GitHub качество выше, чем в простом
diff утилите. Они используют лучшую реализацию с постобработкой (indent heuristic). Подробнее по ссылке ниже
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
🧑💻 5 вопросов с собесов Frontend разработчиков
1. Как можно синхронизировать работу между главным потоком и воркерами?
Синхронизация между главным потоком и Web Workers осуществляется через механизм сообщений, используя методы
2. В чем отличие между microtask queue и task queue?
В JavaScript есть две очереди для обработки асинхронных задач: microtask queue и task queue. Microtask queue содержит задачи, такие как
3. Как реализовать "ленивые" вычисления (lazy evaluation) в JavaScript?
Ленивые вычисления в JavaScript означают, что результат вычисления будет возвращен только по мере необходимости, а не сразу. Это может улучшить производительность, особенно если результаты не всегда нужны. Ленивые вычисления можно реализовать с помощью функций, возвращающих другие функции или используя генераторы, которые позволяют приостанавливать и возобновлять выполнение.
4. Как работает Web Workers? В чем их преимущества и ограничения?
Web Workers — это скрипты, которые выполняются в фоновом режиме, отделенные от основного потока выполнения. Это позволяет выполнять тяжелые вычисления без блокировки пользовательского интерфейса, что улучшает отзывчивость приложений. Однако Web Workers имеют ограничения, такие как отсутствие доступа к DOM и использование только безопасного контекста.
5. Как использовать MessageChannel для обмена сообщениями между потоками?
#workers #postmessage #browsr #microtask #mutationobserver #promise #lazy #optimization #функция #worker #browser
1. Как можно синхронизировать работу между главным потоком и воркерами?
Синхронизация между главным потоком и Web Workers осуществляется через механизм сообщений, используя методы
postMessage и обработчики onmessage. Главный поток отправляет сообщения в worker, а worker может отвечать тем же способом. Однако синхронизация не является мгновенной, поэтому важно учитывать, что сообщения передаются асинхронно.2. В чем отличие между microtask queue и task queue?
В JavaScript есть две очереди для обработки асинхронных задач: microtask queue и task queue. Microtask queue содержит задачи, такие как
Promise и MutationObserver, которые выполняются после завершения текущего стека выполнения, но перед выполнением задач из task queue. В отличие от этого, task queue содержит задачи, связанные с событиями и таймерами, которые обрабатываются только после выполнения всех микротасков.3. Как реализовать "ленивые" вычисления (lazy evaluation) в JavaScript?
Ленивые вычисления в JavaScript означают, что результат вычисления будет возвращен только по мере необходимости, а не сразу. Это может улучшить производительность, особенно если результаты не всегда нужны. Ленивые вычисления можно реализовать с помощью функций, возвращающих другие функции или используя генераторы, которые позволяют приостанавливать и возобновлять выполнение.
4. Как работает Web Workers? В чем их преимущества и ограничения?
Web Workers — это скрипты, которые выполняются в фоновом режиме, отделенные от основного потока выполнения. Это позволяет выполнять тяжелые вычисления без блокировки пользовательского интерфейса, что улучшает отзывчивость приложений. Однако Web Workers имеют ограничения, такие как отсутствие доступа к DOM и использование только безопасного контекста.
5. Как использовать MessageChannel для обмена сообщениями между потоками?
MessageChannel — это API в JavaScript, который позволяет создавать канал для обмена сообщениями между потоками, такими как главный поток и Web Workers. Он состоит из двух объектов: port1 и port2, которые можно использовать для отправки и получения сообщений. Этот механизм обеспечивает двустороннюю связь и помогает синхронизировать действия между потоками.#workers #postmessage #browsr #microtask #mutationobserver #promise #lazy #optimization #функция #worker #browser
🔥2
#repository #swift #frameworks
📚 iOS Awesome
Кураторский список экосистемы iOS, включающий проекты на Objective-C и Swift. Содержит разделы по фреймворкам, инструментам, библиотекам и ресурсам для обучения. Подходит для изучения лучших практик и поиска готовых решений.
Перейти к материалу
👉 База вопросов 👉 Новости
📚 iOS Awesome
Кураторский список экосистемы iOS, включающий проекты на Objective-C и Swift. Содержит разделы по фреймворкам, инструментам, библиотекам и ресурсам для обучения. Подходит для изучения лучших практик и поиска готовых решений.
Перейти к материалу
👉 База вопросов 👉 Новости
#book #blender
📚 Изучаем Blender. Практическое руководство по созданию анимированных 3D-персонажей - Оливер Вильяр
Blender - это не просто программа, а целый мир 3D-графики, и книги по геймдеву часто рекомендуют начинать именно с неё. Оливер Вильяр создал подробное руководство, где шаг за шагом раскрывается процесс создания анимированных персонажей. В книге подробно разбираются интерфейс Blender, основы моделирования, анимация объектов и персонажей, а также оптимизация рабочих процессов.
Перейти к материалу
👉 База вопросов 👉 Новости
📚 Изучаем Blender. Практическое руководство по созданию анимированных 3D-персонажей - Оливер Вильяр
Blender - это не просто программа, а целый мир 3D-графики, и книги по геймдеву часто рекомендуют начинать именно с неё. Оливер Вильяр создал подробное руководство, где шаг за шагом раскрывается процесс создания анимированных персонажей. В книге подробно разбираются интерфейс Blender, основы моделирования, анимация объектов и персонажей, а также оптимизация рабочих процессов.
Перейти к материалу
👉 База вопросов 👉 Новости
#Собес #docker #image_optimization
🤔 Какие методы уменьшения объема Docker-образа ты знаешь?
💬 Кратко:
Основные методы: использование многоступенчатой сборки (multi-stage build), выбор минимального базового образа (например,
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
🤔 Какие методы уменьшения объема Docker-образа ты знаешь?
💬 Кратко:
Основные методы: использование многоступенчатой сборки (multi-stage build), выбор минимального базового образа (например,
alpine), объединение команд RUN в одну для уменьшения слоёв, использование файла .dockerignore и удаление кэша пакетного менеджера в том же слое, где он использовался.📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
👍1
Forwarded from YeaHub
[Версия 1.3.0] - Обновление платформы
Мы продолжаем развивать YeaHub, чтобы сделать обучение ещё удобнее, эффективнее и интереснее. В этом обновлении — важные и давно ожидаемые улучшения 👇
🔹 Навыки и ключевые слова из вакансий HH
Мы запустили сервис, который помогает прокачать резюме с помощью популярных навыков и ключевых слов, встречающихся в вакансиях. Это поможет вам выше ранжироваться в поиске среди кандидатов и увеличит конверсию откликов.
https://yeahub.ru/hh-analytics?page=1&mode=skills&specialization=11
🔹 Исправления и улучшения
Мы учли вашу обратную связь: исправили баги, улучшили интерфейс и сделали работу с платформой ещё комфортнее 🧠
🔥 Скоро
1. Сервис Лайвкодинга с реальными задачами с собеседований
👉 Обучайтесь, общайтесь, растите вместе с https://yeahub.ru
#release #news #update #yeahub
Мы продолжаем развивать YeaHub, чтобы сделать обучение ещё удобнее, эффективнее и интереснее. В этом обновлении — важные и давно ожидаемые улучшения 👇
🔹 Навыки и ключевые слова из вакансий HH
Мы запустили сервис, который помогает прокачать резюме с помощью популярных навыков и ключевых слов, встречающихся в вакансиях. Это поможет вам выше ранжироваться в поиске среди кандидатов и увеличит конверсию откликов.
https://yeahub.ru/hh-analytics?page=1&mode=skills&specialization=11
🔹 Исправления и улучшения
Мы учли вашу обратную связь: исправили баги, улучшили интерфейс и сделали работу с платформой ещё комфортнее 🧠
1. Сервис Лайвкодинга с реальными задачами с собеседований
👉 Обучайтесь, общайтесь, растите вместе с https://yeahub.ru
#release #news #update #yeahub
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2🔥1
🧑💻 Вопросы с собесов для Node.js Разработчика
1. Зачем может быть нужен Middleware в Nest.js
Middleware в Nest.js — это функции, которые выполняются перед обработчиками маршрутов (controller's handlers). Они имеют доступ к объектам запроса и ответа, а также к следующей функции в цепочке middleware. Они используются для таких задач, как логирование, сжатие данных, парсинг cookies, проверка CORS и аутентификация.
#nestjs #middleware
1. Зачем может быть нужен Middleware в Nest.js
Middleware в Nest.js — это функции, которые выполняются перед обработчиками маршрутов (controller's handlers). Они имеют доступ к объектам запроса и ответа, а также к следующей функции в цепочке middleware. Они используются для таких задач, как логирование, сжатие данных, парсинг cookies, проверка CORS и аутентификация.
#nestjs #middleware
❤1🔥1
#channel #опытные #начинающие
📚 Golovach Courses
GolovachCourses - это небольшой образовательный проект, на котором можно найти сотни видео, посвящённых разным аспектам языка Java. Основатель канала, к слову, ведёт курс "Scala for Java Developers" на проекте Udemy.com. По заявлению самого автора, разнообразие видео удовлетворит как опытных разработчиков, так и новичков, желающих освоить язык с нуля.
Перейти к материалу
👉 База вопросов 👉 Новости
📚 Golovach Courses
GolovachCourses - это небольшой образовательный проект, на котором можно найти сотни видео, посвящённых разным аспектам языка Java. Основатель канала, к слову, ведёт курс "Scala for Java Developers" на проекте Udemy.com. По заявлению самого автора, разнообразие видео удовлетворит как опытных разработчиков, так и новичков, желающих освоить язык с нуля.
Перейти к материалу
👉 База вопросов 👉 Новости
❤1
#book #swift
📚 Swift подробно. Чейрд Инт Вейн
Эта книга предназначена для более менее опытных специалистов. В частности, автор рассказывает о том, как разрабатывать ПО для платформ Apple, таких как iOS и Mac, а также на сервере с Linux. Это тоже практическое руководство, с большим количеством примеров, участками кода, задачами для самостоятельного решения.
Книга помогает читателю освоить такие методы, как обобщение, обработка ошибок, протокольно-ориентированное программирование и современные шаблоны Swift. Кроме того, автор щедро делится собственным опытом, включая важные и трудно выявляемые методики, которые он освоил на протяжении работы со Swift.
Перейти к материалу
👉 База вопросов 👉 Новости
📚 Swift подробно. Чейрд Инт Вейн
Эта книга предназначена для более менее опытных специалистов. В частности, автор рассказывает о том, как разрабатывать ПО для платформ Apple, таких как iOS и Mac, а также на сервере с Linux. Это тоже практическое руководство, с большим количеством примеров, участками кода, задачами для самостоятельного решения.
Книга помогает читателю освоить такие методы, как обобщение, обработка ошибок, протокольно-ориентированное программирование и современные шаблоны Swift. Кроме того, автор щедро делится собственным опытом, включая важные и трудно выявляемые методики, которые он освоил на протяжении работы со Swift.
Перейти к материалу
👉 База вопросов 👉 Новости
#Собес #cdn #svg #optimization
🤔 Какие способы оптимизации изображений на веб-странице вы знаете?
💬 Кратко:
Оптимизация изображений включает несколько методов: сжатие изображений (использование форматов WebP, JPEG или PNG), загрузка изображений только по мере необходимости (ленивая загрузка), выбор адаптивных изображений с разными размерами для разных устройств, использование CDN для быстрой доставки и добавление атрибута
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
🤔 Какие способы оптимизации изображений на веб-странице вы знаете?
💬 Кратко:
Оптимизация изображений включает несколько методов: сжатие изображений (использование форматов WebP, JPEG или PNG), загрузка изображений только по мере необходимости (ленивая загрузка), выбор адаптивных изображений с разными размерами для разных устройств, использование CDN для быстрой доставки и добавление атрибута
alt для повышения доступности.📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
🧑💻 Вопросы с собесов для Node.js Разработчика
1. Что такое холодный, теплый и горячий кеш в оптимизации V8?
В V8 кеширование кода делится на три типа: холодный кеш, теплый кеш и горячий кеш. Холодный кеш относится к коду, который не исполнялся ранее и не имеет никаких оптимизаций. Теплый кеш содержит код, который исполнялся несколько раз, и движок может начать его оптимизировать. Горячий кеш включает часто исполняемый код, который уже оптимизирован и работает быстрее, что значительно улучшает производительность приложения.
2. Как движок JavaScript ищет ссылки на переменные в определенном scope?
JavaScript использует механизм, называемый "лексическое окружение", для поиска ссылок на переменные в определенном scope (области видимости). Когда функция вызывается, создается новое лексическое окружение, которое включает в себя ссылки на переменные, объявленные в родительских scopes. Если переменная не найдена в текущем scope, движок продолжает поиск в родительских scopes до тех пор, пока не найдет переменную или не достигнет глобального scope.
3. Как использовать Fetch API и Streams для обработки больших объемов данных?
Fetch API позволяет загружать данные с сервера, а Streams — обрабатывать их по частям, что особенно полезно для работы с большими объемами данных. Вместо загрузки всего файла сразу, можно использовать метод
4. Что такое лонг пуллинг и шорт пуллинг?
Шорт пуллинг — это метод, при котором клиент периодически отправляет запросы на сервер с определенными интервалами для проверки наличия новых данных. Лонг пуллинг, с другой стороны, позволяет клиенту отправить запрос, и сервер удерживает этот запрос открытым, пока не появятся новые данные, после чего он отправляет ответ. Лонг пуллинг более эффективен, чем шорт пуллинг, так как уменьшает количество ненужных запросов и задержек.
5. Как устроены потоки в JavaScript?
JavaScript работает на одном потоке, что означает, что он выполняет код последовательно, один за другим. Однако он использует Event Loop для обработки асинхронных операций и событий. Когда выполняется асинхронная операция, она ставится в очередь, и JavaScript продолжает выполнять следующий код, пока не придет время обработать асинхронную операцию. Таким образом, хотя JavaScript и не использует многопоточность, он эффективно управляет асинхронными задачами.
#кеш #v8 #basic #scope #область_видимости #переменные #streams #fetch #browser #пуллинг #api #потоки
1. Что такое холодный, теплый и горячий кеш в оптимизации V8?
В V8 кеширование кода делится на три типа: холодный кеш, теплый кеш и горячий кеш. Холодный кеш относится к коду, который не исполнялся ранее и не имеет никаких оптимизаций. Теплый кеш содержит код, который исполнялся несколько раз, и движок может начать его оптимизировать. Горячий кеш включает часто исполняемый код, который уже оптимизирован и работает быстрее, что значительно улучшает производительность приложения.
2. Как движок JavaScript ищет ссылки на переменные в определенном scope?
JavaScript использует механизм, называемый "лексическое окружение", для поиска ссылок на переменные в определенном scope (области видимости). Когда функция вызывается, создается новое лексическое окружение, которое включает в себя ссылки на переменные, объявленные в родительских scopes. Если переменная не найдена в текущем scope, движок продолжает поиск в родительских scopes до тех пор, пока не найдет переменную или не достигнет глобального scope.
3. Как использовать Fetch API и Streams для обработки больших объемов данных?
Fetch API позволяет загружать данные с сервера, а Streams — обрабатывать их по частям, что особенно полезно для работы с большими объемами данных. Вместо загрузки всего файла сразу, можно использовать метод
response.body.getReader(), чтобы считывать данные частями, что позволяет уменьшить использование памяти и ускорить обработку. Это позволяет начать обработку данных, не дожидаясь полной загрузки, что особенно полезно для больших файлов, таких как видео или изображения.4. Что такое лонг пуллинг и шорт пуллинг?
Шорт пуллинг — это метод, при котором клиент периодически отправляет запросы на сервер с определенными интервалами для проверки наличия новых данных. Лонг пуллинг, с другой стороны, позволяет клиенту отправить запрос, и сервер удерживает этот запрос открытым, пока не появятся новые данные, после чего он отправляет ответ. Лонг пуллинг более эффективен, чем шорт пуллинг, так как уменьшает количество ненужных запросов и задержек.
5. Как устроены потоки в JavaScript?
JavaScript работает на одном потоке, что означает, что он выполняет код последовательно, один за другим. Однако он использует Event Loop для обработки асинхронных операций и событий. Когда выполняется асинхронная операция, она ставится в очередь, и JavaScript продолжает выполнять следующий код, пока не придет время обработать асинхронную операцию. Таким образом, хотя JavaScript и не использует многопоточность, он эффективно управляет асинхронными задачами.
#кеш #v8 #basic #scope #область_видимости #переменные #streams #fetch #browser #пуллинг #api #потоки
👍2
#course #алгебра
📚 Линейная алгебра
Данный курс представляет собой краткое изложение основ линейной алгебры. Основная его задача - напомнить базовые факты линейной алгебры, использующиеся в тех или иных разделах практического программирования.
Перейти к материалу
👉 База вопросов 👉 Новости
📚 Линейная алгебра
Данный курс представляет собой краткое изложение основ линейной алгебры. Основная его задача - напомнить базовые факты линейной алгебры, использующиеся в тех или иных разделах практического программирования.
Перейти к материалу
👉 База вопросов 👉 Новости
#course #amazon
📚 MLU-EXPLAIN
Университет машинного обучения (MLU) — это образовательная инициатива компании Amazon, направленная на изучение теории и практического применения машинного обучения.
Перейти к материалу
👉 База вопросов 👉 Новости
📚 MLU-EXPLAIN
Университет машинного обучения (MLU) — это образовательная инициатива компании Amazon, направленная на изучение теории и практического применения машинного обучения.
Перейти к материалу
👉 База вопросов 👉 Новости
#Собес #countdownlatch #synchronization #threads
🤔 Как работает CountDownLatch?
💬 Кратко:
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
🤔 Как работает CountDownLatch?
💬 Кратко:
CountDownLatch позволяет одному или нескольким потокам ждать, пока другие потоки не завершат работу. Счётчик уменьшается при вызове countDown(), и ожидающие потоки разблокируются при достижении нуля.📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал