Новое:Talanto осенью: поиск с цифрами, вакансия по шагам и каталог компаний

+1 870новых вакансий за сутки·91 664вакансии открыты сейчас·Новое:Talanto осенью: поиск с цифрами, вакансия по шагам и каталог компаний

Новые вакансии в TelegramРаботодателям
Talanto
Вакансии
Компании7 244
РезюмеAIПодготовкаСтатьи
BoostТарифыBoost
Войти

Не нашли подходящее?

Пусть нужная вакансия найдёт вас сама.

  1. Подборка в TelegramНовые вакансии по вашему фильтру — сразу в бота.Подключить
  2. Мэтчи по резюмеЗагрузите резюме — покажем, где вы подходите лучше всего.Загрузить
  3. Сохранить фильтрНастройте поиск один раз и возвращайтесь к новым вакансиям.Настроить
Что нового на TalantoTalanto осенью: поиск с цифрами, вакансия по шагам и каталог компаний

Для работодателей

Опубликуйте вакансию — отклики придут в ваш кабинет.

  1. Вакансиябесплатно
  2. Откликиконтакты бесплатно
  3. Наймэтапы и интервью

40 компаний публикуют вакансии напрямую · 4 401 кандидат открыт к предложениям

Разместить вакансию

Популярные направления

Все подборки
  • Python16 420
  • Облачные технологии13 176
  • QA вакансии3 434
  • Backend вакансии2 038
  • Инженер данных1 679
  • Продакт-менеджер1 175

Разработка

  • Android1 816
  • iOS1 666
  • AI вакансии939
  • Fullstack вакансии894
  • Frontend вакансии718
  • Mobile вакансии38

По стеку

  • Go8 562
  • Java6 092
  • Node.js1 889
  • Kotlin1 554
  • .NET1 545
  • Rust1 433
  • PHP641
  • C#563
  • C++498

DevOps и инфраструктура

  • Kubernetes7 305
  • DevOps вакансии5 595
  • Linux-инфраструктура5 291
  • Terraform / IaC4 015
  • CI/CD2 559
  • Мониторинг и Observability1 735
  • SRE548
  • Кибербезопасность411

Аналитика и данные

  • Data Scientist1 045
  • Бизнес-аналитик868
  • Аналитик данных830
  • Системный аналитик134

Другие направления

  • Проджект-менеджер531
  • UI/UX дизайн129
  • Ручное тестирование14

По регионам

  • Вакансии в США45 164
  • Вакансии в Европе21 402
  • Вакансии в Канаде4 469
  • Работа в России3 876

По формату

  • Удалённые вакансии74 516
  • Релокация в США45 163
  • Гибридная работа11 409
  • Офисная работа6 957

По уровню

  • Senior вакансии41 452
  • Middle вакансии20 529
  • Junior вакансии6 700

Сейчас нанимают

Все компании
  • Wise194 вакансии
  • Rakuten189 вакансий
  • ASML164 вакансии
  • Grab136 вакансий
  • Celonis45 вакансий
  • Spotify36 вакансий
  • Adyen29 вакансий
  • Infobip28 вакансий
  • Monzo19 вакансий
  • Darktrace17 вакансий

Вакансии из 344 источников: карьерные страницы компаний и джоб-борды.

КомпанииО насНовостиПубличная офертаУсловия использованияПолитика конфиденциальностиПоддержка
←К подготовке по вакансии←К теме JavaScriptВсе вопросы
JavaScriptMiddleОпыт

Какие особенности runtime, type system или memory model JavaScript реально влияют на архитектуру приложения?

В закладки
Сначала попробуйте ответить сами30 секунд
Сравнить с ответом ↓

Event loop делает Node.js I/O-эффективным, но синхронный CPU-код блокирует всё; прототипная типизация требует runtime-валидации (Zod); GC паузы V8 критичны для latency-sensitive сервисов.

Event Loop и однопоточный runtime

V8 выполняет JavaScript в одном потоке. Event loop состоит из фаз: timers → pending callbacks → idle/prepare → poll → check (setImmediate) → close callbacks. Это архитектурно важно: блокирующая операция в главном потоке (синхронный fs.readFileSync, тяжёлый JSON.parse на 50 MB) замораживает весь сервер.

// Плохо: блокирует event loop
const data = fs.readFileSync('/large-file.json'); // блокирует на 200ms
JSON.parse(data.toString()); // ещё 100ms — все запросы ждут

// Хорошо: не блокирует
const data = await fs.promises.readFile('/large-file.json');
const parsed = await new Promise(resolve =>
  setTimeout(() => resolve(JSON.parse(data)), 0) // или Worker Thread
);

Архитектурное следствие: CPU-intensive задачи выносятся в Worker Threads (node:worker_threads) или отдельные процессы. BFF-серверы, WebSocket-хабы и API-шлюзы идеально ложатся на event loop модель.

Прототипная система типов и dynamic typing

JavaScript использует прототипное наследование и динамическую типизацию. Это влияет на архитектуру: без TypeScript контракты между модулями держатся только на конвенциях и тестах. V8 оптимизирует «горячий» код через JIT, но только если объект не меняет форму (shape/hidden class). Добавление свойств после создания объекта деоптимизирует путь выполнения.

// TypeScript на этапе компиляции ловит контрактные ошибки
interface User {
  id: string;
  email: string;
}

function sendEmail(user: User): void {
  // В runtime это всё равно JS — нет гарантии, что user.email существует
  // если данные пришли из внешнего API без валидации
}

// Zod добавляет runtime-валидацию:
import { z } from 'zod';
const UserSchema = z.object({ id: z.string(), email: z.string().email() });
const user = UserSchema.parse(apiResponse); // throws если схема не совпала

Garbage Collection и memory model

V8 использует generational GC: young generation (Scavenge, ~1-2ms паузы) и old generation (Mark-Sweep/Mark-Compact, до 100ms паузы). Это критично для real-time приложений. Memory leaks в Node.js чаще всего возникают через:

  • Замыкания, удерживающие большие объекты (event listeners не удалены через removeEventListener)
  • Глобальные кеши без TTL или ограничения размера
  • Циклические ссылки с native объектами (не мешают GC в V8, но могут в старых движках)
// Утечка памяти: listener не убирается
class DataProcessor extends EventEmitter {
  start() {
    // Каждый вызов start() добавляет listener без удаления предыдущего
    someGlobalEmitter.on('data', this.handleData.bind(this));
  }
}

// Правильно:
start() {
  this.boundHandler = this.handleData.bind(this);
  someGlobalEmitter.on('data', this.boundHandler);
}
stop() {
  someGlobalEmitter.off('data', this.boundHandler);
}

Асинхронная модель и Promise chain

Microtask queue (Promise callbacks, queueMicrotask) выполняется между фазами event loop и имеет приоритет над macrotasks (setTimeout, setImmediate). Бесконечная цепочка resolved promises заблокирует event loop так же, как синхронный код.

// Потенциальная проблема: рекурсивные promises без yield
async function infiniteLoop() {
  while (true) {
    await Promise.resolve(); // microtask — не даёт I/O callbacks выполниться!
  }
}

// Правильно: явный yield через setImmediate
async function safeLoop() {
  while (true) {
    await new Promise(r => setImmediate(r)); // даёт event loop пройти цикл
  }
}

Подводные камни

  • Считать, что async/await делает код параллельным — await сериализует, Promise.all() параллелизует.
  • Игнорировать unhandledRejection — в Node.js 15+ это завершает процесс; всегда вешать process.on('unhandledRejection').
  • Мутировать объекты между Worker Threads вместо передачи через postMessage (structured clone) или SharedArrayBuffer.
  • Не учитывать, что TypeScript типы стираются в runtime — JSON.parse() возвращает any, runtime-валидация обязательна для внешних данных.
  • Полагаться на порядок свойств объекта — в V8 он обычно стабилен, но спецификация не гарантирует для нецелочисленных ключей.
  • Не профилировать GC паузы в production — clinic.js, --inspect флаг и Chrome DevTools Memory Profiler.
  • Игнорировать --max-old-space-size при деплое в контейнер — по умолчанию V8 берёт 25% RAM хоста, не контейнера.

Что портит ответ

  • Знать термины JavaScript, но не понимать связи между абстракциями
  • Объяснять поведение через отдельные примеры вместо причинной модели
  • Не связывать mental model с диагностикой ошибок

Что слушает интервьюер

  • Понимает ключевые абстракции JavaScript
  • Может предсказывать поведение системы через mental model
  • Связывает модель с debugging и production decisions

Как вы знаете этот вопрос?

Проверить себя по теме JavaScript →
←Предыдущий вопросКак понять, что команда использует JavaScript идиоматично, а не переносит привычки из другого языка?Следующий вопрос→В чём разница между `==` и `===`?

Связанные темы

JavaScriptsystems-thinkingtechnical-communicationtechnology-selectiontrade-off-analysis

Вакансии с этим навыком

JavaScript вакансии
  • QA Automation Engineer
  • Junior AI Automation Specialist
  • PHP разработчик
  • Sr. Software Engineer (Starlink Enterprise)
  • Software Engineer (Starlink Enterprise)

Частые вопросы на собеседовании

  • Как защититься от XSS в браузерном приложении? Где помогают CSP, escaping и Trusted Types?
  • В чём разница между var, let и const? Как hoisting влияет на каждое из них?
  • Что такое Promise? Чем они отличаются от callback'ов?
  • Для каких задач JavaScript является сильным выбором, а где лучше честно выбрать другой язык?