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

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

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

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

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

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

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

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

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

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

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

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

Все подборки
  • Python13 614
  • Облачные технологии9 925
  • QA вакансии3 157
  • Android1 675
  • Инженер данных1 071
  • Продакт-менеджер317

Разработка

  • iOS1 558
  • Backend вакансии1 462
  • AI вакансии743
  • Fullstack вакансии576
  • Frontend вакансии495
  • Mobile вакансии28

По стеку

  • Go7 718
  • Java4 674
  • Node.js1 474
  • Kotlin1 310
  • Rust1 275
  • .NET1 098
  • PHP474
  • C++314
  • C#210

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

  • Kubernetes5 760
  • Linux-инфраструктура4 462
  • DevOps вакансии3 927
  • Terraform / IaC3 213
  • Мониторинг и Observability1 531
  • CI/CD932
  • SRE416
  • Кибербезопасность29

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

  • Аналитик данных611
  • Бизнес-аналитик534
  • Data Scientist444
  • Системный аналитик80

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

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

По регионам

  • Вакансии в США31 393
  • Вакансии в Европе11 635
  • Работа в России3 672
  • Вакансии в Канаде2 524

По формату

  • Удалённые вакансии47 029
  • Релокация в США31 393
  • Гибридная работа8 379
  • Офисная работа6 474

По уровню

  • Senior вакансии25 431
  • Middle вакансии11 844
  • Junior вакансии4 210

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

Все компании
  • Wise190 вакансий
  • Rakuten189 вакансий
  • ASML164 вакансии
  • Grab134 вакансии
  • Celonis45 вакансий
  • Spotify36 вакансий
  • Infobip28 вакансий
  • Adyen27 вакансий
  • Monzo19 вакансий
  • Darktrace17 вакансий

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

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

Какие архитектурные решения Vue.js навязывает вокруг rendering, state, routing, styling, data loading или deployment?

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

Vue навязывает Proxy-реактивность с batch-обновлениями, SFC-компилятор с static hoisting и patch flags, Vue Router 4 с async guards, Pinia для state, scoped CSS в компонентах. Data loading и deployment архитектура остаётся на выбор разработчика (Vite, Nuxt/Nitro).

State: реактивная система Proxy

Vue 3 строит реактивность на Proxy (reactive(), ref(), computed(), watchEffect()). При чтении свойства активный эффект регистрируется как зависимость (track); при записи все зависимые эффекты ставятся в очередь (trigger → scheduler). Обновления DOM асинхронны и батчируются через Promise.resolve(); nextTick() даёт доступ к DOM после применения всех изменений очереди.

import { ref, computed, watchEffect, nextTick } from 'vue'

const count = ref(0)
const double = computed(() => count.value * 2)

watchEffect(() => console.log('double:', double.value))

count.value++
await nextTick() // DOM обновлён

Rendering: виртуальный DOM и компилятор

Vue 3 компилирует .vue-шаблоны в функции рендера при сборке (AOT через @vue/compiler-dom). Компилятор применяет статический подъём (static hoisting) и патч-флаги (patch flags) — числа в VNode, указывающие, какие именно свойства могут измениться. Во время обновления Vue сравнивает только «помеченные» VNode, что делает diff в разы быстрее, чем наивный обход дерева.

Рантайм рендерер (@vue/runtime-dom) отделён от ядра (@vue/runtime-core): это позволяет собирать рендереры для Weex, NativeScript или тестовых окружений без изменения бизнес-логики.

Routing: Vue Router 4

Vue Router 4 — официальный роутер; интегрируется через app.use(router). Архитектурное решение: навигационные хуки (beforeEach, beforeResolve, afterEach) выполняются в строгом порядке и асинхронны. Lazy-loaded routes через динамический import() — стандартный способ code splitting:

import { createRouter, createWebHistory } from 'vue-router'

const router = createRouter({
  history: createWebHistory(),
  routes: [
    { path: '/', component: () => import('./views/Home.vue') },
    {
      path: '/admin',
      component: () => import('./views/Admin.vue'),
      meta: { requiresAuth: true },
    },
  ],
})

router.beforeEach((to) => {
  if (to.meta.requiresAuth && !isAuthenticated()) {
    return { name: 'login' }
  }
})

State management: Pinia

Pinia — официальный менеджер состояния для Vue 3. Стор — это просто composable, доступный глобально; поддерживает DevTools, SSR, плагины и TypeScript без дополнительной конфигурации. В отличие от Vuex 4 нет mutations — только actions и getters (computed).

import { defineStore } from 'pinia'
import { ref, computed } from 'vue'

export const useCartStore = defineStore('cart', () => {
  const items = ref<CartItem[]>([])
  const total = computed(() => items.value.reduce((s, i) => s + i.price, 0))

  async function addItem(id: string) {
    const item = await fetchItem(id)
    items.value.push(item)
  }

  return { items, total, addItem }
})

Styling: Scoped CSS и CSS Modules

Vue SFC поддерживает <style scoped> — компилятор добавляет data-атрибут к элементам и селекторам, изолируя стили компонента. <style module> даёт CSS Modules с доступом через $style.className. v-bind() в CSS позволяет реактивно использовать значения из script setup как CSS custom properties.

Data loading: нет встроенного решения

Vue не навязывает способ загрузки данных — это архитектурное решение разработчика. Варианты:

  • onMounted + fetch / axios — базовый подход.
  • TanStack Query (vue-query) — кеширование, фоновая синхронизация, staleTime, refetchOnWindowFocus.
  • Nuxt useFetch / useAsyncData — SSR-совместимая загрузка с дедупликацией и гидрацией.
  • Pinia store с async actions — для глобального состояния с кешированием.

Deployment: Vite и Nuxt

Стандартный билд — vite build, результат — статические файлы в dist/. Для SSR используется Nuxt 3 (Node.js, Bun, edge-рантаймы через Nitro — Cloudflare Workers, Vercel Edge). vite.config.ts управляет code splitting, tree shaking, target браузеров через @vitejs/plugin-vue.

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

  • Мутация реактивного объекта напрямую (state.list[0] = x) работает через Proxy, но delete state.key надо заменять на delete reactive(state).key или пересоздавать объект.
  • Потеря реактивности при деструктуризации: const { count } = store разрывает связь — используйте storeToRefs(store).
  • Глубокая реактивность больших объектов через reactive() может быть медленной — используйте shallowReactive() / shallowRef() для таблиц и списков.
  • <style scoped> не пробрасывается в дочерние компоненты — для переопределения используйте :deep() селектор.
  • watchEffect запускается синхронно при регистрации (eager) и в фазе pre-flush по умолчанию — для доступа к обновлённому DOM используйте { flush: 'post' }.
  • Vue Router 4 навигация асинхронна — router.push() возвращает Promise; ошибки типа NavigationDuplicated надо обрабатывать явно.
  • Pinia не поддерживает time-travel debugging из коробки (в отличие от Vuex с плагином); для этого нужен pinia-plugin-persistedstate + ручная история.
  • Nuxt useAsyncData кеширует по ключу — одинаковые ключи в разных компонентах дадут один запрос, что может быть неожиданным поведением.

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

  • Как работает система реактивности Vue? Что изменилось между Vue 2 и Vue 3 (Proxy вместо Object.defineProperty)?
  • Что такое Pinia? Чем она отличается от Vuex и почему является рекомендованным менеджером состояния для Vue 3?
  • Что такое ref() и reactive() в Composition API? Когда использовать каждый?
  • В каких типах frontend-проектов Vue.js даёт реальный выигрыш, а где будет избыточен или неудачен?

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

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

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

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

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

Проверить себя по теме Vue.js →
←Предыдущий вопросПредставьте, приложение на Vue.js стало медленно открываться или часто перерисовываться. Как вы будете искать причину?Следующий вопрос→Что такое `defineProps` и `defineEmits` в `<script setup>`?

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

Vue.jssystems-thinkingtechnical-communicationtechnology-selectiontrade-off-analysis