← Voltar a AI Engineer — DEUS.ai

🟡 B — Coding / Live Coding

AI Engineer — DEUS.ai

Apresentação

💻 Coding / Live Coding — Exercícios para entrevista

Algumas entrevistas incluem live coding. Pratica estes exercícios — são típicos em AI Engineering.


Exercícios resolvidos (estudo)

1. Chunking por tamanho fixo

Problema: Implementa uma função que divide texto em chunks de tamanho máximo, com overlap opcional.

Solução:

def chunk_text(text: str, chunk_size: int = 512, overlap: int = 0) -> list[str]:
    if not text or chunk_size <= 0:
        return []
    chunks = []
    start = 0
    while start < len(text):
        end = start + chunk_size
        chunks.append(text[start:end])
        start = end - overlap if overlap > 0 else end
    return chunks

2. Retry com exponential backoff

Problema: Implementa retry para chamadas a API que podem falhar temporariamente.

Solução:

import time

def retry_with_backoff(func, max_retries=3, base_delay=1.0):
    for attempt in range(max_retries):
        try:
            return func()
        except Exception as e:
            if attempt == max_retries - 1:
                raise
            delay = base_delay * (2 ** attempt)
            time.sleep(delay)

3. Parse JSON de resposta LLM (com fallback)

Problema: O LLM pode devolver JSON malformado. Parse com fallback.

Solução:

import json
import re

def parse_llm_json(text: str) -> dict | None:
    try:
        return json.loads(text)
    except json.JSONDecodeError:
        match = re.search(r'\\{.*\\}', text, re.DOTALL)
        if match:
            try:
                return json.loads(match.group())
            except json.JSONDecodeError:
                pass
    return None

4. Mock de LLM para unit test

Problema: Como testar código que chama LLM sem gastar tokens?

Solução:

from unittest.mock import Mock

def test_rag_pipeline():
    mock_llm = Mock()
    mock_llm.invoke.return_value = "Resposta esperada"
    
    result = my_rag_function(query="test", llm=mock_llm)
    assert result == "Resposta esperada"
    mock_llm.invoke.assert_called_once()

5. Stream de tokens (generator)

Problema: Simula streaming de tokens como uma API de LLM.

Solução:

def stream_tokens(text: str):
    for word in text.split():
        yield word + " "

Dicas para live coding

  1. Fala enquanto codas — explica o que estás a fazer
  2. Começa com edge cases — texto vazio, chunk_size 0
  3. Testa no fim — corre um exemplo ou print
  4. Pergunta — "Queres overlap entre chunks?"
  5. Usa type hints — mostra maturidade em Python

Zona de prática

Sem perguntas. Clica em Editar para adicionar.

Desafios de código

Chunking por tamanho fixo

Implementa chunk_text(text, chunk_size, overlap) que divide texto em chunks. Testa com chunk_size=5, overlap=1.

Retry com exponential backoff

Implementa uma função que chama outra função e retenta em caso de exceção, com espera exponencial (1s, 2s, 4s...).

Parse JSON de resposta LLM

Implementa parse_llm_json(text) que extrai JSON de texto que pode ter texto antes/depois. Usa regex ou try/except.