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

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

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

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

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

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

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

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

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

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

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

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

Все подборки
  • Python16 417
  • Облачные технологии13 174
  • QA вакансии3 433
  • Backend вакансии2 035
  • Инженер данных1 666
  • Продакт-менеджер1 162

Разработка

  • Android1 816
  • iOS1 666
  • AI вакансии937
  • Fullstack вакансии892
  • Frontend вакансии717
  • Mobile вакансии38

По стеку

  • Go8 561
  • Java6 090
  • Node.js1 889
  • Kotlin1 554
  • .NET1 545
  • Rust1 432
  • PHP640
  • C#562
  • C++498

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

  • Kubernetes7 303
  • DevOps вакансии5 594
  • Linux-инфраструктура5 291
  • Terraform / IaC4 014
  • CI/CD2 557
  • Мониторинг и Observability1 735
  • SRE548
  • Кибербезопасность398

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

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

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

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

По регионам

  • Вакансии в США44 779
  • Вакансии в Европе21 327
  • Вакансии в Канаде4 450
  • Работа в России3 877

По формату

  • Удалённые вакансии73 902
  • Релокация в США44 794
  • Гибридная работа11 412
  • Офисная работа6 956

По уровню

  • Senior вакансии41 197
  • Middle вакансии20 361
  • Junior вакансии6 638

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

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

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

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

Проект на Astro вырос из небольшого интерфейса в большой продукт. Какие архитектурные проблемы вы ожидаете увидеть?

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

При росте Astro-проекта возникают: расползание клиентских островков (потеря главного преимущества), отсутствие глобального state management, монолитная структура роутов, дублирование data-fetching логики и деградация времени сборки при тысячах статических страниц.

2. Отсутствие глобального состояния

Острова изолированы по определению. Когда пользователь авторизуется в одном острове, второй об этом не знает.

Решение — nanostores (официально рекомендованы командой Astro):

// src/stores/auth.ts
import { atom, computed } from 'nanostores';

export const $user = atom(null);
export const $isAuthenticated = computed($user, (user) => user !== null);
// src/components/Header.tsx (React island)
import { useStore } from '@nanostores/react';
import { $user } from '../stores/auth';

export function Header() {
  const user = useStore($user);
  return <div>{user ? user.name : 'Login'}</div>;
}

Для сервер-клиент синхронизации состояния сессии используйте cookies и серверное чтение в Astro.locals через middleware.

Контекст: от MVP к продукту

Astro идеально подходит для контентных сайтов с небольшим количеством интерактивности. Когда продукт вырастает — появляются формы, аутентификация, real-time обновления, сложные фильтры — архитектура начинает трещать по швам. Ниже — типичные болезни роста и способы их лечения.

1. Расползание клиентских островков

Изначально на странице один островок — хедер с меню. Потом добавляется поиск, фильтры, корзина, чат. Каждый компонент тянет свой фреймворк. Итог: страница загружает React, Vue и Svelte одновременно.

  • Зафиксируйте правило в архитектурном решении (ADR): один UI-фреймворк на проект.
  • Регулярно запускайте astro build --verbose и отслеживайте рост клиентского JS.
  • Рассмотрите переход на output: 'hybrid' и явный список страниц с prerender = true — это сохраняет статику там, где она нужна.

3. Монолитная структура роутов

Сотни файлов в src/pages/ превращаются в неуправляемое дерево. Решение — файловая группировка и Content Collections:

src/
  pages/
    blog/[slug].astro
    docs/[...slug].astro
  content/
    blog/          # .md/.mdx файлы
    docs/
  collections/
    blog.ts        # схема + query
// src/content/config.ts
import { defineCollection, z } from 'astro:content';

export const collections = {
  blog: defineCollection({
    type: 'content',
    schema: z.object({
      title: z.string(),
      pubDate: z.date(),
      tags: z.array(z.string()).default([]),
    }),
  }),
};

4. Дублирование data-fetching логики

В frontmatter каждой страницы копируется один и тот же fetch к API. При изменении endpoint нужно обновлять десятки файлов.

Решение — выносить fetching в отдельный слой:

// src/lib/api/posts.ts
export async function getPost(slug: string) {
  const res = await fetch(`${import.meta.env.API_URL}/posts/${slug}`);
  if (!res.ok) throw new Error(`Post not found: ${slug}`);
  return res.json();
}
// src/pages/blog/[slug].astro
---
import { getPost } from '../../lib/api/posts';
const { slug } = Astro.params;
const post = await getPost(slug);
---

5. Деградация времени сборки

При 10 000+ статических страниц astro build может занимать 20+ минут. Стратегии:

  • Переход на output: 'hybrid': тяжёлые разделы переводятся на SSR, критичные остаются статическими.
  • Incremental builds через внешний кеш: Vercel и Netlify поддерживают кеш сборки, Astro записывает кеш в .astro/.
  • Параллельный content processing: используйте Workers в astro.config.mjs через vite.worker.

6. Слабость типизации между сервером и клиентом

Props, передаваемые в клиентский компонент, сериализуются в JSON. Если TypeScript-тип содержит Date или кастомный класс, на клиент придёт строка, и типы соврут.

// Ловушка: Date сериализуется в строку
<MyComponent client:load startDate={new Date()} />
// В компоненте props.startDate будет string, не Date

// Решение: явная типизация
interface Props {
  startDate: string; // ISO string
}

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

  • Middleware накапливает побочные эффекты: с ростом команды в src/middleware.ts накапливаются проверки auth, логирование, A/B-тесты. Без явного порядка и документации middleware превращается в «чёрный ящик».
  • Content Collections и горячая замена: при изменении схемы коллекции в src/content/config.ts нужно перезапускать dev-сервер — HMR схему не подхватывает.
  • Server Islands (Astro 5+) vs. обычные острова: Server Islands рендерятся на сервере по запросу, но не кешируются автоматически. Добавить кеш можно через cache-заголовки или платформенный KV.
  • Отсутствие встроенного роутинга на клиенте: View Transitions API — не полноценный клиентский роутер. Для сложных SPA-переходов всё равно нужен дополнительный инструмент или переосмысление архитектуры.
  • Рост зависимостей интеграций: каждая интеграция (@astrojs/react, @astrojs/sitemap, @astrojs/image) имеет собственный lifecycle. После major-обновления Astro часть интеграций ломается раньше, чем выходят совместимые версии.
  • Тестирование серверных компонентов: .astro-файлы нельзя тестировать через Jest/Vitest напрямую. Бизнес-логика обязана быть вынесена в .ts-модули — иначе покрытие тестами будет нулевым.

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

  • В чём разница между статическим режимом вывода (static output mode) и SSR (server) режимом в Astro?
  • Что такое Astro и какую проблему он решает? В чём его основная философия?
  • Что такое Islands Architecture? Как Astro её реализует?
  • Как Astro работает с контентом? Что такое Content Collections API?

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

  • Говорить только о запуске Astro, но не об эксплуатации
  • Не упоминать observability, обновления, безопасность и rollback
  • Описывать риски абстрактно, без способов их снижать

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

  • Видит production-риски Astro
  • Говорит про monitoring, rollout, rollback и безопасность
  • Умеет ранжировать риски по вероятности и влиянию

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

Проверить себя по теме Astro →
←Предыдущий вопросКакие production-риски есть у Astro: hydration, bundle size, caching, accessibility, browser compatibility или observability?Следующий вопрос→Что такое адаптеры (adapters) в Astro и когда они нужны?

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

Astroproduction-readinesstechnical-communicationtechnology-selectiontrade-off-analysis