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

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

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

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

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

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

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

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

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

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

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

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

Все подборки
  • Python17 139
  • Облачные технологии14 067
  • QA вакансии3 444
  • Backend вакансии2 115
  • Инженер данных1 805
  • Продакт-менеджер1 261

Разработка

  • Android1 854
  • iOS1 693
  • Fullstack вакансии989
  • AI вакансии953
  • Frontend вакансии750
  • Mobile вакансии44

По стеку

  • Go8 688
  • Java6 527
  • Node.js2 022
  • .NET1 720
  • Kotlin1 595
  • Rust1 462
  • C#708
  • PHP683
  • C++573

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

  • Kubernetes7 764
  • DevOps вакансии6 053
  • Linux-инфраструктура5 490
  • Terraform / IaC4 269
  • CI/CD3 241
  • Мониторинг и Observability1 789
  • SRE571
  • Кибербезопасность460

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

  • Data Scientist1 138
  • Бизнес-аналитик922
  • Аналитик данных856
  • Системный аналитик152

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

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

По регионам

  • Вакансии в США44 498
  • Вакансии в Европе23 818
  • Вакансии в Канаде4 529
  • Работа в России3 898

По формату

  • Удалённые вакансии75 272
  • Релокация в США44 503
  • Гибридная работа12 389
  • Офисная работа7 082

По уровню

  • Senior вакансии42 735
  • Middle вакансии20 978
  • Junior вакансии6 731

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

Все компании
  • Wise190 вакансий
  • Rakuten189 вакансий
  • ASML166 вакансий
  • Grab137 вакансий
  • Celonis39 вакансий
  • Spotify37 вакансий
  • Adyen28 вакансий
  • Infobip28 вакансий
  • Monzo20 вакансий
  • Darktrace16 вакансий

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

КомпанииО насНовостиПубличная офертаУсловия использованияПолитика конфиденциальностиПоддержка
←К теме Phoenix (Elixir)Все вопросы
Phoenix (Elixir)MiddleТеория

Что такое Phoenix LiveView и какую проблему он решает?

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

Phoenix LiveView позволяет строить интерактивный UI без JS: сервер хранит состояние, при событиях отправляет только HTML-diff через WebSocket, а браузер применяет его к DOM. Первый рендер — стандартный HTTP, последующие обновления — через WebSocket.

Как работает LiveView

  1. Первый запрос — обычный HTTP, сервер рендерит полную HTML-страницу (хорошо для SEO и TTI).
  2. Браузер устанавливает WebSocket-соединение через phx-socket.
  3. При событии (клик, ввод, таймер) LiveView обновляет состояние на сервере и отправляет только изменившиеся части HTML как diff.
  4. JS-хук на клиенте применяет diff к DOM — пользователь видит мгновенное обновление.
defmodule MyAppWeb.CounterLive do
  use MyAppWeb, :live_view

  def mount(_params, _session, socket) do
    {:ok, assign(socket, count: 0)}
  end

  def handle_event("increment", _params, socket) do
    {:noreply, update(socket, :count, &(&1 + 1))}
  end

  def render(assigns) do
    ~H"""
    <div>
      <p>Count: {@count}</p>
      <button phx-click="increment">+1</button>
    </div>
    """
  end
end

Phoenix LiveView: концепция и решаемая проблема

Phoenix LiveView — библиотека для построения интерактивных веб-интерфейсов без написания JavaScript. Она позволяет создавать real-time UI, формы с живой валидацией, автодополнение и другие интерактивные элементы, используя только Elixir на сервере.

Проблема, которую решает LiveView

Традиционно есть два подхода к интерактивности:

  • Server-side rendering (SSR): простой, но требует полного перезапроса страницы для каждого действия.
  • SPA (React/Vue): интерактивен, но требует REST/GraphQL API, клиентского state-менеджмента, бандлинга и значительного объёма JS-кода.

LiveView предлагает третий путь: серверный рендеринг с WebSocket-синхронизацией состояния. Сервер владеет состоянием, а браузер отображает только diff.

Подключение к роутеру

scope "/", MyAppWeb do
  pipe_through :browser

  live "/counter", CounterLive
  live "/users", UserLive.Index
  live "/users/:id", UserLive.Show
end

Что LiveView умеет из коробки

  • Живая валидация форм через phx-change без перезагрузки страницы.
  • Загрузка файлов с прогресс-баром.
  • Оптимистичные обновления UI через JS-команды.
  • PubSub-интеграция для real-time обновлений между пользователями.
  • Навигация между LiveView-страницами без полного перезапроса.
  • Streams для эффективного рендеринга больших списков.

Когда LiveView не подходит

  • Оффлайн-функциональность — нужен JS-фреймворк с локальным хранилищем.
  • Высоконагруженные клиентские анимации — лучше CSS или небольшой JS.
  • Мобильные приложения — только для веба.

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

  • Каждый LiveView — отдельный процесс в BEAM: 1000 пользователей = 1000 процессов. При неограниченных данных в assigns память растёт.
  • Состояние теряется при перезапуске сервера — используйте mount/3 для восстановления из БД или сессии.
  • Без JavaScript не обойтись для специфических вещей: JS Hooks нужны для интеграции со сторонними библиотеками.
  • Дебаггинг сложнее: события идут через WebSocket, не видны в стандартных HTTP-логах.
  • Форма с phx-change отправляет запрос при каждом нажатии клавиши — нужен debounce через phx-debounce.
  • Временные артефакты на first render: страница рендерится дважды (HTTP + WebSocket reconnect) — это нормально, но может вызвать мигание.
  • Не путайте push_navigate и push_patch: первый монтирует новый LiveView, второй обновляет текущий.

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

  • Как планировать zero-downtime deploy Phoenix-приложения с Ecto migrations и rolling releases?
  • Что такое Plugs в Phoenix и как работает plug-конвейер?
  • Чем Phoenix отличается от Rails или Django по архитектуре?
  • В чём разница между Phoenix templates (.heex) и традиционными EEx-шаблонами?

Типичные ошибки

  • Сводить liveview к названию метода без lifecycle и failure path.
  • Игнорировать модель runtime: Phoenix 1.8 работает поверх Plug, Endpoint, Router, Controllers/LiveViews, PubSub и OTP supervision.
  • Не отделять validation, authorization, transaction boundary и business logic.

Что проверяет интервьюер

  • Объясняет liveview через конкретную точку lifecycle в Phoenix (Elixir).
  • Приводит корректный минимальный пример без вымышленных методов или callbacks.
  • Называет edge cases: пустые значения, ошибки, транзакции, безопасность или concurrency.

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

Проверить себя по теме Phoenix (Elixir) →

Источники

  • https://hexdocs.pm/phoenix_live_view/Phoenix.LiveView.html
  • https://hexdocs.pm/phoenix/
←Предыдущий вопросЧто такое LiveView streams (представленные в Phoenix 0.18+) и почему они эффективнее списков?Следующий вопрос→Что такое `assigns` в LiveView и как работает обновление состояния?

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

Phoenix (Elixir)Backend-Engineeringphoenix-ecosystem