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

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

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

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

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

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

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

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

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

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

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

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

Все подборки
  • Python17 192
  • Облачные технологии14 192
  • QA вакансии3 483
  • Backend вакансии2 095
  • Инженер данных1 793
  • Продакт-менеджер1 332

Разработка

  • Android1 865
  • iOS1 702
  • Fullstack вакансии984
  • AI вакансии940
  • Frontend вакансии745
  • Mobile вакансии44

По стеку

  • Go8 737
  • Java6 595
  • Node.js2 034
  • .NET1 747
  • Kotlin1 621
  • Rust1 477
  • C#724
  • PHP688
  • C++577

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

  • Kubernetes7 806
  • DevOps вакансии6 117
  • Linux-инфраструктура5 518
  • Terraform / IaC4 298
  • CI/CD3 300
  • Мониторинг и Observability1 796
  • SRE561
  • Кибербезопасность475

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

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

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

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

По регионам

  • Вакансии в США43 643
  • Вакансии в Европе24 110
  • Вакансии в Канаде4 500
  • Работа в России3 826

По формату

  • Удалённые вакансии74 327
  • Релокация в США43 642
  • Гибридная работа12 531
  • Офисная работа7 066

По уровню

  • Senior вакансии42 313
  • Middle вакансии20 864
  • Junior вакансии6 647

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

Все компании
  • Rakuten190 вакансий
  • Wise187 вакансий
  • ASML165 вакансий
  • Grab136 вакансий
  • Celonis41 вакансия
  • Spotify38 вакансий
  • Adyen30 вакансий
  • Infobip29 вакансий
  • Monzo20 вакансий
  • Darktrace18 вакансий

Вакансии из 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