Pular para o conteúdo
subtl

Como Explicar Seu Código em uma Entrevista Técnica em Inglês

Aprenda a comunicar seu processo de raciocínio em voz alta em inglês durante uma entrevista técnica. Este guia oferece frases, estratégias e erros a evitar.

· 9 min de leitura

A software developer explains their code during a technical interview conducted over a video call from their home office.

Uma entrevista técnica em um idioma que não é o seu primeiro é um desafio único. Não se trata apenas de resolver um problema; trata-se de demonstrar seu processo de resolução de problemas em voz alta, em tempo real. Os entrevistadores querem entender como você pensa, e isso exige uma comunicação clara e confiante.

Este guia oferece uma abordagem estruturada e frases específicas em inglês para ajudá-lo a narrar seu processo de codificação. Abordaremos tudo, desde o esclarecimento do problema inicial até a apresentação da sua solução final, ajudando você a demonstrar suas habilidades técnicas e de comunicação ao mesmo tempo.

Antes de Começar a Codificar: Esclareça o Problema

Um dos erros mais comuns que os candidatos cometem é mergulhar no código rápido demais. Antes de escrever uma única linha, você deve ter certeza absoluta de que entende o problema, suas entradas, saídas e restrições. Isso mostra ao entrevistador que você é ponderado e metódico.

Comece reformulando o problema com suas próprias palavras para confirmar seu entendimento.

Frases para Esclarecer Requisitos

  • "So, just to make sure I understand correctly, the goal is to write a function that takes [input] and returns [output]?" (Então, só para ter certeza de que entendi corretamente, o objetivo é escrever uma função que recebe [entrada] e retorna [saída]?)
  • "To clarify, are we expecting the input array to contain only numbers, or can it have other data types?" (Para esclarecer, devemos esperar que o array de entrada contenha apenas números, ou pode ter outros tipos de dados?)
  • "Could you give me an example of a valid input and the expected output?" (Você poderia me dar um exemplo de uma entrada válida e a saída esperada?)
  • "When you say 'most frequent,' if there's a tie, which value should be returned?" (Quando você diz 'mais frequente', se houver um empate, qual valor deve ser retornado?)

Frases para Discutir Restrições e Casos Especiais (Edge Cases)

  • "What are the constraints on the size of the input? For example, how large can the array be?" (Quais são as restrições quanto ao tamanho da entrada? Por exemplo, quão grande o array pode ser?)
  • "How should the function handle invalid inputs, like a null or an empty list? Should it return an error, or a specific value?" (Como a função deve lidar com entradas inválidas, como um null ou uma lista vazia? Deve retornar um erro ou um valor específico?)
  • "Are there any performance requirements I should be aware of, like time or space complexity?" (Há algum requisito de desempenho que eu deva saber, como complexidade de tempo ou espaço?)
  • "I'm thinking about edge cases. For instance, what if the input list contains duplicates? Or what if all elements are the same?" (Estou pensando nos casos especiais. Por exemplo, e se a lista de entrada contiver duplicatas? Ou se todos os elementos forem iguais?)

Reservar alguns momentos para fazer isso não apenas evita que você resolva o problema errado, mas também lhe dá um tempo valioso para pensar enquanto interage com o entrevistador.

O Método "Pensar em Voz Alta": Narrando Seu Processo de Raciocínio

Os entrevistadores usam desafios de codificação para avaliar seu raciocínio. Uma solução perfeita entregue em silêncio é menos valiosa do que uma boa solução que foi claramente explicada. Você precisa narrar sua jornada do problema à solução.

Etapa 1: A Abordagem Inicial

Comece descrevendo sua primeira ideia, a mais simples. Muitas vezes, essa é a solução de "força bruta" (brute-force). Isso mostra que você consegue encontrar uma solução funcional antes de tentar otimizá-la.

  • "My first thought is to approach this with a nested loop. I can iterate through each element and then compare it with every other element." (Meu primeiro pensamento é abordar isso com um loop aninhado. Posso iterar por cada elemento e depois compará-lo com todos os outros.)
  • "A straightforward way to solve this would be to sort the array first. That would simplify finding the duplicates." (Uma maneira direta de resolver isso seria ordenar o array primeiro. Isso simplificaria a busca por duplicatas.)
  • "Initially, I'm thinking of a brute-force approach. It might not be the most efficient, but it would work. From there, we can look for optimizations." (Inicialmente, estou pensando em uma abordagem de força bruta. Pode não ser a mais eficiente, mas funcionaria. A partir daí, podemos procurar otimizações.)

Etapa 2: Analisando e Refinando

Depois de apresentar sua ideia inicial, analise suas vantagens e desvantagens (trade-offs), especialmente sua complexidade de tempo e espaço. Isso demonstra um entendimento mais profundo de algoritmos e estruturas de dados.

  • "The time complexity of this nested loop approach would be O(n²), which might be too slow if the input is very large." (A complexidade de tempo desta abordagem de loop aninhado seria O(n²), o que pode ser muito lento se a entrada for muito grande.)
  • "This solution has a space complexity of O(n) because I'm creating a new data structure to store the results." (Esta solução tem uma complexidade de espaço de O(n) porque estou criando uma nova estrutura de dados para armazenar os resultados.)
  • "We could optimize this. If we use a hash map, we can reduce the time complexity to O(n) by trading off some space." (Poderíamos otimizar isso. Se usarmos um hash map, podemos reduzir a complexidade de tempo para O(n) em troca de um pouco de espaço.)
  • "I think we can do better. Let me consider an alternative approach using a two-pointer technique." (Acho que podemos fazer melhor. Deixe-me considerar uma abordagem alternativa usando uma técnica de dois ponteiros.)

Etapa 3: Estruturando Seu Código

Antes de começar a digitar freneticamente, descreva seu plano. Explique as funções, variáveis e a lógica que você pretende usar. Isso funciona como um roteiro para você e para o entrevistador.

  • "Okay, my plan is to first initialize an empty dictionary to store character counts." (Ok, meu plano é primeiro inicializar um dicionário vazio para armazenar a contagem de caracteres.)
  • "I'll write a main function that takes the array as an argument. Inside it, I'll have a loop to iterate through the elements." (Vou escrever uma função principal que recebe o array como argumento. Dentro dela, terei um loop para iterar pelos elementos.)
  • "I think I'll need a helper function to handle the logic for reversing this part of the string. It will make the main function cleaner." (Acho que vou precisar de uma função auxiliar para lidar com a lógica de inverter esta parte da string. Isso tornará a função principal mais limpa.)
  • "I'll start by handling the edge cases we discussed, like an empty input array." (Vou começar tratando os casos especiais que discutimos, como um array de entrada vazio.)

Enquanto Você Codifica: Mantenha a Conversa Fluindo

Enquanto escreve seu código, continue explicando o que está fazendo e por quê. Não apenas leia seu código em voz alta. Explique o propósito de cada bloco lógico.

  • "Now, I'm creating a for loop that will go from the beginning of the array to the end." (Agora, estou criando um loop for que irá do início ao fim do array.)
  • "This variable, max_so_far, will keep track of the largest value we've seen." (Esta variável, max_so_far, irá registrar o maior valor que vimos até agora.)
  • "Inside the loop, this if statement checks if we've encountered this element before. If we have, I'll increment its count in the map." (Dentro do loop, esta instrução if verifica se já encontramos este elemento antes. Se sim, vou incrementar sua contagem no mapa.)
  • "I'm using a while loop here because the number of iterations isn't fixed; it depends on the values of these two pointers." (Estou usando um loop while aqui porque o número de iterações não é fixo; depende dos valores desses dois ponteiros.)

E se você travar? O silêncio é seu inimigo. É perfeitamente normal precisar de um momento para pensar. Apenas comunique isso.

  • "Let me take a moment to think about the best way to structure this next part." (Deixe-me parar um momento para pensar na melhor maneira de estruturar esta próxima parte.)
  • "I'm just double-checking my logic for this condition. One second." (Estou apenas verificando minha lógica para esta condição. Um segundo.)
  • "Hmm, I think there might be a small issue here. Let me trace the execution with an example input to find it." (Hmm, acho que pode haver um pequeno problema aqui. Deixe-me rastrear a execução com uma entrada de exemplo para encontrá-lo.)

Se você está focado na lógica e as palavras certas em inglês não vêm à mente, pode ser estressante. Um assistente que possa sugerir frases profissionais pode ser útil. Por exemplo, o prompter de IA do Subtl pode sugerir frases como "Let me think through the logic for this edge case" (Deixe-me pensar na lógica para este caso especial) em tempo real, ajudando você a manter uma conversa fluida sem quebrar sua concentração.

Lidando com Dicas e Feedback

Se o seu entrevistador oferecer uma dica, não é um sinal de fracasso. É um convite para colaborar. A forma como você recebe e incorpora o feedback é uma habilidade crucial que eles estão testando. Ouça com atenção, reconheça a dica e explique como você a usará.

Frases para Reconhecer uma Dica

  • "That's a great point. Using a set here would indeed make the lookup much faster. I'll change my approach." (Esse é um ótimo ponto. Usar um 'set' aqui realmente tornaria a busca muito mais rápida. Vou mudar minha abordagem.)
  • "Thank you, that clarifies it. I see now that I was overcomplicating the base case for the recursion." (Obrigado, isso esclarece. Agora vejo que eu estava complicando demais o caso base da recursão.)
  • "Ah, I didn't consider that edge case. You're right. I need to add a check for that before the loop starts." (Ah, eu não considerei esse caso especial. Você está certo. Preciso adicionar uma verificação para isso antes do loop começar.)

Se você estiver realmente travado, é melhor pedir um empurrãozinho do que ficar em silêncio. Isso demonstra autoconsciência e disposição para pedir ajuda.

  • "I'm a bit stuck on optimizing the space complexity here. Could I perhaps get a small hint?" (Estou um pouco travado na otimização da complexidade de espaço aqui. Poderia talvez me dar uma pequena dica?)
  • "I'm considering two data structures for this part, a dictionary or a simple list. I'm leaning towards the dictionary for performance, but I'm not sure. Do you have any thoughts on that?" (Estou considerando duas estruturas de dados para esta parte, um dicionário ou uma lista simples. Estou inclinado para o dicionário por causa do desempenho, mas não tenho certeza. Você tem alguma opinião sobre isso?)

Depois de Codificar: Testando e Explicando

Quando terminar de escrever sua solução, não diga apenas "Terminei". A entrevista ainda não acabou. Você precisa verificar seu código e discutir seu desempenho.

  1. Teste com um exemplo: Percorra manualmente seu código com uma entrada de exemplo. Isso ajuda a encontrar bugs e prova que você entende o que escreveu.

    • "Let's test this with the example input [3, 1, 4, 1, 5]." (Vamos testar isso com a entrada de exemplo [3, 1, 4, 1, 5].)
    • "First, the map is empty. In the first iteration, we add 3 with a count of 1. In the second, we add 1 with a count of 1. In the fourth iteration, we see 1 again, so we increment its count to 2." (Primeiro, o mapa está vazio. Na primeira iteração, adicionamos 3 com uma contagem de 1. Na segunda, adicionamos 1 com uma contagem de 1. Na quarta iteração, vemos o 1 novamente, então incrementamos sua contagem para 2.)
  2. Discuta a complexidade novamente: Reafirme a complexidade de tempo e espaço da sua solução final.

    • "The final time complexity is O(n) because we iterate through the list once. The space complexity is O(k), where k is the number of unique elements, because of the hash map." (A complexidade de tempo final é O(n) porque iteramos pela lista uma vez. A complexidade de espaço é O(k), onde k é o número de elementos únicos, por causa do hash map.)
  3. Fale sobre melhorias: Mencione brevemente como o código poderia ser melhorado se você tivesse mais tempo.

    • "If this were production code, I would add more robust error handling for different input types." (Se este fosse um código de produção, eu adicionaria um tratamento de erros mais robusto para diferentes tipos de entrada.)
    • "Another possible optimization, if memory were a major concern, might be to modify the input array in-place, although that has its own trade-offs." (Outra otimização possível, se a memória fosse uma grande preocupação, seria modificar o array de entrada diretamente (in-place), embora isso tenha suas próprias desvantagens.)

Erros Comuns a Evitar

  • Trabalhar em silêncio. Este é o maior erro. O entrevistador não consegue ler sua mente. Comunique excessivamente seu processo de raciocínio.
  • Ir direto para o código. Sempre esclareça o problema e discuta sua abordagem primeiro.
  • Ignorar ou discutir as dicas. Veja o entrevistador como um colaborador. Incorpore o feedback dele com elegância.
  • Desistir quando travar. Não há problema em fazer uma pausa, mas comunique que você está pensando. Tente depurar seu próprio código em voz alta.
  • Esquecer os casos especiais (edge cases). Sempre considere entradas vazias, nulas, duplicatas e outros cenários não padrão.

Uma Nota sobre Consentimento e Ferramentas

Se você planeja usar qualquer ferramenta para transcrição ao vivo ou assistência durante uma chamada, você deve ser transparente. Em muitas jurisdições, todas as partes devem consentir em ser transcritas ou gravadas. Sempre informe o entrevistador no início da chamada se estiver usando tal ferramenta. Para mais detalhes, você pode revisar orientações gerais sobre leis de gravação de chamadas. Veja nosso guia em /law/.

Explicar seu código em voz alta em inglês é uma habilidade que você pode desenvolver com a prática. Ao estruturar sua comunicação, usar frases claras e tratar a entrevista como uma sessão colaborativa, você pode demonstrar efetivamente suas habilidades técnicas, mesmo que o inglês não seja sua língua nativa.

Para se preparar para entrevistas de alto risco, praticar com uma ferramenta que fornece feedback e tradução em tempo real pode aumentar a confiança. O Subtl para Mac oferece uma transcrição ao vivo da sua conversa, para que você possa revisar o que foi dito, e ajuda a formular respostas claras e profissionais. Saiba mais sobre como usá-lo para /use-cases/interviews/.

entrevista técnicaentrevista de empregocomunicação em inglêsdesenvolvimento de software

Perguntas

E se meu sotaque em inglês for forte?

Concentre-se na clareza, não na perfeição. Fale mais devagar do que o normal e faça pausas entre as frases. Os entrevistadores se importam muito mais com sua lógica e habilidades de resolução de problemas do que com seu sotaque.

O quanto eu devo falar? É possível falar demais?

Busque uma narração constante de seus pensamentos técnicos. Explique seu plano geral, as vantagens e desvantagens que está considerando e o propósito dos blocos de código principais. Você não precisa narrar cada caractere que digita. Se o entrevistador começar a falar, é um sinal para pausar e ouvir.

E se eu não souber o termo exato em inglês para uma estrutura de dados?

Descreva-a por sua função e propriedades. Por exemplo, se você não se lembra de 'hash map', pode dizer 'a data structure that stores key-value pairs and gives me very fast lookups' (uma estrutura de dados que armazena pares de chave-valor e me dá buscas muito rápidas). O conceito é o que mais importa.

Posso escrever comentários no meu código durante a entrevista?

Sim, pode ser útil, especialmente como marcadores de posição. Você poderia dizer: 'I'll add a quick comment here to remind myself to implement the sorting logic next' (Vou adicionar um comentário rápido aqui para me lembrar de implementar a lógica de ordenação em seguida). No entanto, sua explicação verbal é sempre mais importante que os comentários no código.

O que devo fazer se o entrevistador ficar em completo silêncio?

Não deixe que o silêncio dele interrompa seu fluxo. Continue com seu processo de pensar em voz alta. Você também pode engajá-lo proativamente fazendo uma pergunta simples, como 'Does this approach make sense so far?' (Esta abordagem faz sentido até agora?) para verificar.

Como o Subtl ajuda nisso

Experimente na sua próxima chamada

40 minutos por mês grátis, sem cartão. macOS 13 ou mais recente.

Leia também