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

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

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

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

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

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

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

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

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

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

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

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

Все подборки
  • Python8 800
  • Облачные технологии6 644
  • QA вакансии2 164
  • Android1 317
  • Инженер данных868
  • Продакт-менеджер314

Разработка

  • iOS1 229
  • Backend вакансии1 199
  • AI вакансии548
  • Fullstack вакансии495
  • Frontend вакансии424
  • Mobile вакансии28

По стеку

  • Go5 236
  • Java3 132
  • Kotlin1 120
  • Node.js1 005
  • Rust852
  • .NET659
  • PHP319
  • C++268
  • C#207

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

  • Kubernetes3 909
  • Linux-инфраструктура2 843
  • DevOps вакансии2 675
  • Terraform / IaC2 175
  • Мониторинг и Observability1 072
  • CI/CD915
  • SRE305
  • Кибербезопасность33

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

  • Аналитик данных532
  • Data Scientist435
  • Бизнес-аналитик400
  • Системный аналитик68

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

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

По регионам

  • Вакансии в США25 825
  • Вакансии в Европе10 301
  • Работа в России3 618
  • Вакансии в Канаде2 268

По формату

  • Удалённые вакансии42 661
  • Релокация в США25 825
  • Гибридная работа5 655
  • Офисная работа4 428

По уровню

  • Senior вакансии22 630
  • Middle вакансии11 534
  • Junior вакансии3 862

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

Все компании
  • Rakuten189 вакансий
  • Wise187 вакансий
  • ASML164 вакансии
  • Grab134 вакансии
  • Celonis47 вакансий
  • Spotify37 вакансий
  • Infobip28 вакансий
  • Adyen27 вакансий
  • 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 вакансии
  • HMI D&E Software- Delivery Line Manager - Hsinchu
  • QA Fullstack (C#)
  • Middle/Senior Full-Stack Python Engineer (Django) (#5841)
  • Senior .NET Fullstack Engineer( With Angular) (#5846)
  • Associate Manager, Engineering (Perforce IPLM)

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

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