deel-trainer — contexto
Interview Gym — Deel (deel-trainer)
App pessoal do Marcus pra treinar pra entrevista técnica AO VIVO da Deel. Alvo do cargo: Sr Full Stack Engineer (Node.js + React.js) — não é backend puro (corrigido 2026-07). Entrevistadores Matheus Hertzog e Victor Tommasi, sem IA durante a call. Uso pessoal, não é produto.
No ar
- URL: https://deel-trainer.swarm.kodama.solutions (HTML estático único, ~300KB, React 18 UMD sem JSX)
- Deploy do HTML: scp direto pro Hermes →
/var/www/swarm-lp/deel-trainer/index.html(nginx wildcard*.swarm.kodama.solutions). Backupsindex.html.bak-*. ⚠️deploy_landing_pagedo Swarm SOBRESCREVE se rodar — houve várias colisões com uma session paralela; semprecurlo live e compara antes de deployar.
A entrevista real da Deel (pesquisa verificada 2026)
Processo: recruiter screen → entrevista técnica AO VIVO (live coding em pair + system design, explicar raciocínio em voz alta) → comportamental STAR. NÃO é take-home (confirmado pelo Marcus). Medem maturidade de engenharia e trade-offs de produção, não decoreba — sondam ALÉM da superfície. Temas: concorrência (esp. banco), SQL, event loop/async, filas, system design + React/frontend/performance (é full-stack).
Modos do app
- 🎙️ Entrevista Ao Vivo (Mock) — o mais próximo da call real. IA age como entrevistador: dá um problema (área à escolha: node/sql/react/system/fullstack/mix), ouve a resposta (voz 🎤 ou texto/código), e puxa follow-ups sondando o furo (ex: resposta genérica sobre re-render → cutuca o loop infinito de useEffect). No fim: debrief (nota + pontos fortes + o que treinar). Endpoint
/deel-mock(start/reply/debrief), conversacional. - 🎲 Modo Infinito (IA) — questões novas toda vez (mc/bug + code), anti-decoreba. Distratores fortes garantidos por filtro no servidor (correta nunca é a mais longa). Na home (mix geral) e por trilha. Endpoint
/deel-gen(paramonly:"code"gera só código). - 🎤 Treino Falado — responde em voz alta, IA valida contra gabarito. Seletor de idioma 🇧🇷/🇺🇸 (STT
rec.lang). Endpoint/deel-eval. - Trilhas clássicas (níveis fixos, ❤️/XP): 6 backend + 4 frontend. Cada trilha tem um nível "Codar 💻" (escrever código, sempre desbloqueado).
Trilhas (10 no total)
Backend (hand-authored + Codar gerado): ⚡ Event Loop & Async · 🔒 Concorrência em Banco (tema #1) · 🗄️ SQL & Migrations · 📬 Filas & Sistemas · 🎯 Entrevista & Histórias (sem Codar) · 🕸️ Grafos & System Design.
Frontend (geradas por IA, curadas): ⚛️ React: Hooks & Re-render · 🔄 React: Estado & Dados · 🚀 Frontend Performance · 🔗 Full-Stack Integração. Cada uma: 3 níveis mc/bug + 1 Codar (6 code).
Questões de código (escrever de verdade)
- Editor CodeMirror (CDN cdnjs 5.65.16) com autocomplete (SQL + JS), line numbers, match/close brackets, tema material-darker. Fallback pro textarea se o CDN falhar. Componente
CodeChallenge. - "Avaliar código" →
/deel-code: IA revisa (não executa) contra tarefa+rubrica+solução. Regra de ouro do revisor: o ENUNCIADO é a única fonte de verdade — nunca penaliza por requisito não pedido, aceita abordagens alternativas corretas (fix depois do incidentesafePromiseAllonde inventava "retornar array de promises"). - Depois de avaliar, se nota < 100 aparece "🔄 Editar e reavaliar" (edita e remanda; nos níveis a 1ª nota conta pra ❤️/XP).
UX
- Dark mode: botão 🌙/☀️ fixo (canto sup. direito), lembra escolha (localStorage), respeita
prefers-color-schemese não escolher. Técnica:filter: invert(1) hue-rotate(180deg)na página; editor e blocos.codeblk/.CodeMirrorcontra-invertidos pra ficarem escuros nos dois modos. - Embaralhamento: opções e ordem das perguntas embaralham a cada tentativa (mata decoreba de posição). Guard:
q.options&&q.options.map(code/open não têm options — incidente de crash resolvido).
Backend (Hermes, systemd deel-eval.service, 127.0.0.1:8791)
/opt/deel-eval/server.py— Python stdlib puro (sem pip). Rotas:/deel-eval(voz),/deel-gen(gera questões),/deel-code(revisa código),/deel-mock(entrevistador). Prompts ampliados pra full-stack (Node+React+integração).- Chave DeepSeek de
/home/swarm/.secrets.env(DEEPSEEK_API_KEY=sk-f1a8…, pay-per-use). A do/root/.hermes/auth.jsonera inválida. - nginx:
location = /deel-{eval,gen,code,mock}no wildcard swarm-lp → same-origin, zero CORS.
Verificação (QA)
agent-browser TRAVA nessa máquina (não dá QA visual). Substituído por harness de render em node (mock de React que executa os componentes) — renderiza todas as trilhas/níveis e pega crash de render (que node --check não pega). Backend testado ponta a ponta via curl.
Pendências / próximos
- Mirror mais explícito do formato ao vivo (o Mock já faz o essencial).
- Consolidar deploys (parar a colisão com a session paralela).
- Talvez TTS pro Mock (IA falar a pergunta) — hoje é texto + você responde por voz.