Entrevistas de Talend geralmente testam duas coisas: se você consegue projetar um job de integração de dados que faça sentido e se consegue descobrir por que um está lento ou quebrado. Espere perguntas sobre os blocos de construção (componentes, subjobs, tMap, variáveis de contexto) e, em seguida, cenários sobre erros, desempenho e implantação.
O Talend agora faz parte da Qlik, e a linha de produtos mudou ao longo dos anos. Verifique a descrição da vaga para ver se a equipe usa o Talend Studio com licença de integração de dados ou big data, o Talend Cloud, ou uma configuração open source mais antiga. Os conceitos abaixo se aplicam a todos eles, mas os nomes dos componentes e os detalhes de implantação variam.
As perguntas que você mais vai ouvir
O que é o Talend e como ele gera código?
O Talend é uma ferramenta de integração de dados. Você constrói jobs em um canvas conectando componentes, e o Talend Studio gera código Java a partir do design. Quando você executa um job, esse código é compilado e executado. Isso importa em entrevistas porque explica por que você pode colocar Java personalizado em um componente tJava ou tJavaRow, por que as routines são classes Java e por que as configurações de memória são configurações da JVM.
Qual é a diferença entre um job, um subjob e um joblet?
Um job é o fluxo de trabalho inteiro. Um subjob é um grupo de componentes conectados por links de fluxo de dados, e um job geralmente é composto por vários subjobs ligados por triggers. Um joblet é um grupo reutilizável de componentes salvo uma vez e usado em vários jobs, como uma função.
Qual é a diferença entre OnSubjobOk e OnComponentOk?
Ambos são links de trigger que são executados depois que algo dá certo. O OnSubjobOk dispara quando o subjob inteiro termina com sucesso. O OnComponentOk dispara assim que um único componente termina, o que pode acontecer no meio de um subjob. Também existem OnSubjobError e OnComponentError para falhas, além do Run if para caminhos condicionais.
O que o tMap faz?
O tMap é o principal componente de transformação. Ele faz o join de um fluxo principal com um ou mais fluxos de lookup, aplica expressões, filtra linhas e envia dados para várias saídas. Principais recursos a mencionar:
- Inner join e left outer join nos lookups
- Saídas de reject para linhas que falham em um join ou em um filtro
- Expressões de filtro nas entradas e saídas
- Variáveis, para que um cálculo seja escrito uma vez e reutilizado
- Opções de modelo de lookup: carregar uma vez, recarregar a cada linha ou recarregar a cada linha com uma chave
Como você lida com um lookup grande no tMap?
Por padrão, os dados do lookup são carregados na memória. Para um lookup grande, ative "Store temp data" para que o tMap grave em disco, aumente a memória da JVM ou evite o problema fazendo o join no banco de dados. Você também pode usar "Reload at each row" para um lookup que depende da linha de entrada, ao custo de uma consulta por linha, então isso só é adequado para fluxos principais pequenos.
O que são variáveis de contexto e por que usá-las?
Variáveis de contexto armazenam valores que mudam entre ambientes, como hostnames, schemas, caminhos de arquivos e credenciais. Você as define uma vez, agrupa em contextos (Dev, Test, Prod) e seleciona o contexto em tempo de execução. Uma boa resposta acrescenta que as senhas não devem ser armazenadas em texto simples no job e que o mesmo job exportado deve rodar em todos os ambientes mudando apenas o arquivo de contexto.
Como você passa valores entre jobs?
Com o tRunJob você pode passar parâmetros de contexto para um job filho, e um job filho pode retornar valores para o pai usando o componente tBufferOutput ou variáveis globais. Dentro de um mesmo job, os valores ficam no globalMap, um mapa Java que você lê com (String) globalMap.get("key") e escreve com globalMap.put.
Qual é a diferença entre tFlowToIterate e um fluxo normal?
Um fluxo normal move todas as linhas pelos componentes juntas. O tFlowToIterate transforma cada linha em uma iteração, então os componentes seguintes rodam uma vez por linha. É útil para iterar sobre uma lista de nomes de arquivos ou tabelas, mas é lento para grandes conjuntos de dados porque cada iteração inicia um subjob.
Como você trata erros no Talend?
Mencione várias camadas:
- Links de trigger como OnSubjobError e OnComponentError para enviar falhas por um caminho separado
- tDie para interromper o job com um código de erro, e tWarn para registrar um aviso
- tLogCatcher para coletar avisos e erros gerados por tDie, tWarn e exceções Java
- Links de reject em componentes como tMap e componentes de saída de banco de dados para linhas inválidas
- tPreJob e tPostJob para abrir e sempre liberar recursos
Como você depuraria um job que está falhando?
Execute-o em modo Debug ou adicione tLogRow para ver os dados entre os componentes. Verifique o erro exato e o nome do componente no console, depois confira as configurações de conexão e os valores de contexto em uso. Para problemas de dados, envie os rejects para um arquivo e inspecione-os. Usar o tStatCatcher ou as estatísticas do job também mostra contagens de linhas e tempos por componente.
Perguntas sobre performance
Um job que carrega um milhão de linhas está lento. O que você verifica?
- Onde o tempo está sendo gasto. A contagem de linhas e os tempos por componente mostram o gargalo.
- Se o trabalho pertence ao banco de dados. Joins e agregações costumam ser mais rápidos em SQL do que no tMap.
- Tamanho do commit. Fazer commit a cada linha é lento, então faça commit em lotes.
- Componentes de carga em massa. Muitos bancos de dados têm componentes de bulk load que são muito mais rápidos do que inserções linha a linha.
- Lookups no tMap. Um lookup grande em memória pode causar pausas de garbage collection ou erros de falta de memória.
- Configurações da JVM. Aumente o heap máximo (o valor de Xmx) se a memória for o limite.
- Paralelismo. Alguns componentes e jobs podem rodar em paralelo, mas só quando o trabalho não depende de ordem.
Como você carrega apenas registros novos ou alterados?
Mantenha um high-water mark, como um timestamp de última modificação ou um ID incremental, armazene-o em uma tabela de controle ou variável de contexto, e extraia apenas as linhas acima dele. Para atualizações no destino, compare as chaves e use ações de insert ou update, ou use um comando merge no banco de dados. Para exclusões, pode ser necessário uma comparação completa de chaves ou um feed de change data capture.
Como você remove duplicatas?
O tUniqRow remove duplicatas com base nas colunas selecionadas e pode enviar as duplicatas para uma saída separada. O tAggregateRow pode agrupar e escolher um valor. Para conjuntos de dados enormes, fazer isso no banco de dados com uma window function costuma ser melhor.
Componentes que vale a pena conhecer pelo nome
| Componente | O que ele faz |
|---|---|
| tFileInputDelimited, tFileOutputDelimited | Leem e escrevem arquivos delimitados |
| tDBInput, tDBOutput | Leem e escrevem tabelas de banco de dados (cada banco tem suas próprias versões) |
| tMap | Faz join, filtro e transformação |
| tAggregateRow | Agrupa e agrega |
| tSortRow | Ordena linhas |
| tUniqRow | Remove duplicatas |
| tReplicate | Envia o mesmo fluxo para várias saídas |
| tNormalize, tDenormalize | Divide uma coluna em linhas, ou mescla linhas em uma coluna |
| tRunJob | Chama outro job |
| tJava, tJavaRow, tJavaFlex | Código Java customizado |
| tLogRow | Imprime linhas no console |
| tDie, tWarn, tLogCatcher | Tratamento de erros e logging |
| tPreJob, tPostJob | Código que roda antes e depois do fluxo principal |
Deploy e agendamento
Esteja pronto para descrever como você leva um job do Studio para produção. Os passos típicos são compilar o job como um pacote standalone ou publicá-lo em um repositório, configurar o contexto de produção e agendá-lo com o scheduler do time, seja a ferramenta de gerenciamento do próprio Talend, cron ou outro orquestrador. Controle de versão, padrões de nomenclatura e documentação dos jobs fazem parte de uma boa resposta.
Um cenário para você praticar
"Você recebe um arquivo diário de clientes. Algumas linhas estão sem e-mail e alguns clientes já existem no warehouse. Projete o job."
Um bom roteiro:
- Leia o arquivo com tFileInputDelimited e um schema definido.
- No tMap, filtre as linhas sem e-mail para um arquivo de rejeitados e faça lookup da chave do cliente na tabela do warehouse.
- Envie os clientes existentes para um caminho de update e os novos para um caminho de insert.
- Escreva no banco de dados em lotes com um commit size adequado.
- Use tLogCatcher e uma tabela de controle para registrar contagens de linhas e erros de cada execução.
- Use uma variável de contexto para o caminho do arquivo e a conexão com o banco, para que o mesmo job rode em qualquer ambiente.
Fale suas premissas em voz alta, como o tamanho do arquivo e se o histórico precisa ser mantido, porque os entrevistadores querem ver como você raciocina.
Como se preparar
Construa um job pequeno de ponta a ponta, se puder: leia um arquivo, faça join com uma tabela no tMap, trate os rejeitados e escreva em um banco de dados. Saiba explicar o que você faria quando ele falhar na linha 500.000. Tenha um ou dois exemplos reais da sua experiência, com números como linhas por execução ou tempo economizado. Para tópicos relacionados de engenharia de dados, veja nossos guias de entrevista sobre Databricks e Snowflake.
Praticar em voz alta ajuda. Use uma entrevista simulada para explicar o design de um job e depois leia a transcrição para ver onde sua explicação pulou etapas. Siga as regras da empresa sobre ferramentas de IA em qualquer entrevista ao vivo.
Pratique respostas de entrevista sobre Talend com YesToTheOffer
Faça uma entrevista técnica simulada, explique um design de job em voz alta e revise sua transcrição depois. 30 minutos grátis, sem assinatura.



