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
- Fala enquanto codas — explica o que estás a fazer
- Começa com edge cases — texto vazio, chunk_size 0
- Testa no fim — corre um exemplo ou print
- Pergunta — "Queres overlap entre chunks?"
- 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.