Olha Que Interessante é o Processo Seletivo no Google

Filipe Deschamps
9 min readOct 2, 2020

--

O processo inteiro pra contratar engenheiros de software no Google pode levar até dois meses e ter de 5 a 7 entrevistas.

Clique no play acima para ver sobre o tema deste artigo em formato de vídeo, caso seja da sua preferência.

E a primeira interação que você vai ter com um recrutador de lá é através de uma ligação por telefone. Esse tipo de interação é conhecida como “phone screening”. Essa é uma prática muito comum em outras empresas também, e serve meio que pra economizar o tempo de todo mundo e entender se dessa rápida interação vale a pena pra empresa — e para o candidato — avançar com o processo seletivo.

Mas no caso do Google, se você está se candidatando pra uma vaga de programador, acaba acontecendo um detalhe muito curioso nessa parte. Parece uma ultra gambiarra mas não deixa de ser curioso. A gente já vai se aprofundar nisso e em algumas perguntas reais que eles fazem e eu quero ver se você vai saber responder… (eu falhei miseravelmente)

Então depois desse “phone screening”, você pode ter entre 4 a 6 entrevistas com diferentes funcionários do Google, e se passar, geralmente você vai iniciar a carreira no nível 3. Procurando um pouco mais sobre isso eu entendi que os níveis lá são formados por uma letra L e um número, como na tabela abaixo (clique aqui para acessar a fonte dessa informação).

  • Software Engineer II (L3 | 0–1 years of experience)
  • Software Engineer III (L4 | 2+ years of experience)
  • Senior Software Engineer (L5 | Manager I equivalent)
  • Staff Software Engineer (L6 | Manager II equivalent)
  • Senior Staff Software Engineer (L7 | Senior Manager)
  • Principal Engineer (L8 | Director)
  • Distinguished Engineer (L9 | Senior Director)
  • Google Fellow (L10 | Vice President)
  • Senior Google Fellow (L11 | Senior Vice President)

Então, por exemplo, o primeiro nível é o L3, ou Level 3, e vai até o L11 passando por cargos mais seniores e depois cargos de gestão, até chegar na Vice Presidência.

A média salarial para alguém L3 é de U$D 117.000 anuais e isso dá mais ou menos R$ 53.000 reais por mês com o dólar a R$ 5,44. Eu vou mostrar ainda o salário que eu achei de um Level 4, mas antes certifique-se que você está sentado na cadeira.

E é importante destacar que eu achei essa informação e várias outras muito legais relacionadas a quais tecnologias você precisa estudar para passar nessa entrevista num artigo chamado “Cracking the Google Coding Interview”. Eu acredito que se você se preparar pra passar numa entrevista de emprego no Google, automaticamente você vai se sentir seguro em passar em qualquer entrevista de emprego da sua cidade, do Brasil ou o que seja. E este artigo tem muito do que você precisa pra isso se tornar uma realidade, e mesmo que você não queira um emprego no Google, é importante ler porque os tópicos técnicos que eu vou apresentar vão te dar um bom direcionamento.

Eu vou te falar… dá pra encarar esse negócio sim! Não é fácil, não é rápido e é por isso que é tão valioso… Olha só:

Eu andei "cavucando" outros sites e encontrei pessoas do nível L4 que reportaram ganhar U$D 200.000 anuais, mais U$D 200.000 em ações e mais U$D 100.000 de bônus. Ou seja, um Total Compensation de U$D 500.000 ou R$ 2.718.000.

Mas cuidado! Não vá com muita sede nesse pote de ouro porque isso é o que o Google tem a te oferecer… e uma entrevista de emprego pra uma vaga tão concorrida diz mais sobre o que você pode fornecer a eles, e não o contrário… Não se esqueça desse detalhe.

E sobre as linguagens de programação preferidas, o artigo apontou que é preferencial saber Java, C, C++,Go ou Python. Aí eu pensei: "Ué, não tem JavaScript? Eles não tem frontend lá não?". Daí eu fui no site oficial de Carreiras do Google e lá também foram apontadas somente essas linguagens.

O que me deixou pensando se essas são linguagens que eles preferem só pra entrevistar a pessoa ao invés de para trabalhar lá dentro necessariamente, mas novamente, como que um especialista em Frontend passaria numa entrevista dessas?

Então, se alguém que trabalha no Google estiver lendo esse artigo, ou alguém que conhece uma pessoa que trabalha lá e puder esclarecer isso nos comentários… seria sensacional!

E tem mais coisas técnicas que eles esperam que você saiba numa entrevista que a gente já vai ver, mas antes é importante saber que podem cair 3 categorias de desafios nas entrevistas, e eu vou te desafiar com algumas perguntas malucas porém reais que eles podem fazer, e eu quero ver se você vai saber responder. Então você pode ser desafiado com:

“System Design Questions”: Que servem para mensurar sua noção em arquitetura de software em uma visão mais ampla, como fazer um software que tenha um design, uma engenharia por trás que contemple escalabilidade. Baita problema massa de escopo aberto.

Outra categoria é “Coding Interview Challenges”: que servem para mensurar o seu conhecimento em “Estrutura de Dados” ou “Algoritmos”, para que você consiga solucionar de forma otimizada problemas comuns encontrados em engenharia de software.

Última categoria é “General Analysis Questions”: que são perguntas que avaliam a sua forma de pensar, seja através de perguntas matemáticas ou baseadas na sua opinião.

E dessa última categoria eu quero agora desafiar você com algumas perguntas reais que eles fazem, e essas perguntas eu tirei de um vídeo chamado “Google: Você Passaria nessa Entrevista de Emprego?

Pergunta número 1:

"Como você pesaria um elefante, sem ter uma balança?"

O vídeo deu a sugestão de levar o elefante até uma barca, então o peso dele vai fazer essa barca afundar alguns centímetros na água, e nesse momento você vai lá e marca no casco dessa barca até aonde a água marcou o casco. Show. Então agora você tira o elefante, daí a barca volta a subir, e em seguida começa a jogar sacos de areia de 50 quilos ou qualquer outra medida, até que a linha traçada atinja de volta o nível da água. Então agora é só questão de somar quantos sacos de quantos quilos você jogou pra dentro da barca e você tem o peso do elefante. Massinha né?

Segunda pergunta:

"Há os seguintes números na lousa: 10, 9, 60, 90, 70, 66. Qual número vem depois?"

A resposta dessa pergunta também é massinha e o segredo está em não ficar viciado nos números em si, no Integer, e sim em como eles são escritos por extenso e quantos caracteres essa String tem.

Como esse é um desafio originalmente em inglês, a gente tem que escrever os números em inglês. Então temos:

  • “ten”, com 3 caracteres,
  • nine”, com 4 caracteres,
  • “sixty”, com 5 caracteres,
  • “ninety” com 6 caracteres,
  • “seventy” com 7 caracteres e
  • “sixty-six” com 8 caracteres.

E daí fica bem mais claro qual o padrão a se seguir. Mas como saber qual é o próximo número de fato?

Bom, você pode notar que todos os números terminam ou com zero, nove ou seis. O que faz selecionar o “ninety six” como próximo número, que tem 9 caracteres.

Caso você não tenha conseguido responder, não se preocupe. O pessoal do vídeo até aponta que o objetivo dessas perguntas não é receber uma resposta exata mas sim entender como que você raciocina.

Eu confesso que eu passei longe até de raciocinar mas pelos menos, depois de exposto a isso, meio que libertei minha mente para pensar nas coisas por um ângulo diferente. Isso me deu coragem de pensar em estratégias malucas e isso foi muito massa. Deu esse clique na sua cabeça também?

Bom, agora vamos voltar para a parte técnica, incluindo os tópicos mais comuns que eles cobram e também vamos aprofundar em cada estágio da entrevista. Começando pelo estágio zero que é

Ser Notado pelo Google

Nesse ponto não deixe o seu currículo largado ou desatualizado e principalmente, segundo o artigo, tente chamar a atenção do recrutador em menos de 6 segundos.

Eu não sei… acho que tem casos e casos, mas com certeza não existe margem pra enrolar do tipo “Meu maior defeito é ser perfeccionista”.

Então, conectado nisso, seja extremamente claro sobre qual foi a sua participação em projetos e qual impacto real você trouxe, como por exemplo: “Eu reduzi o response time de um endpoint em 30% depois de reestruturar como a API estava se relacionando com a camada de cache”. Ou então: “Eu aumentei a conversão em 40% de um produto depois de realizar uma série de testes A/B que mostraram a melhor cor, posição e texto de um botão”.

E se você não está conectado dessa forma com os efeitos da sua programação, tome cuidado e revisite aquela história de você ser um datilógrafo de código e não um engenheiro ou engenheira de software.

Então você conseguiu montar um currículo que chamou a atenção e foi convidado para participar do estágio 1

Phone screening com um funcionário do Google

Lembra que eu falei que nessa parte o Google era diferente? Então, eles recomendam que você use um headset ou qualquer outra coisa te que deixe com as duas mãos livres, porque durante essa fase eles podem pedir para você programar dentro de um Google Docs. Isso mesmo! Essa reunião geralmente acontece pelo Hangouts e dura entre 45 a 60 minutos, e você tem um Google Docs compartilhado em tempo-real com esse funcionário, que vai ver você digitando caractere a caractere nesse documento. Ele vai fazer as perguntas e você vai digitar a resolução para os problemas. E é importante também você explicar o seu raciocínio enquanto está programando, inclusive fazendo perguntas de volta, pois com isso eles mensuram seu poder de comunicação e cognitivo.

E massa! Se você passou desse desafio, agora vem o estágio 2

Entrevistas presenciais

Não sei como isso está sendo feito nos dias de hoje mas esse é um estágio em que você vai ter de 4 a 6 reuniões, de 45 minutos cada, com outros funcionários do Google. Essas reuniões são bem mais focadas em código, estrutura de dados e algoritmos, e todos os desafios envolvendo a parte técnica e código são feitos ou em quadros brancos ou utilizando um Chromebook.

Nesse estágio também ocorrem perguntas comportamentais para entender se você tem o que eles chamam de “Googleyness”, e essa parte pesa muito. Mesmo que você passe nas questões técnicas eles vão encerrar o processo seletivo se você não se encaixar na cultura da empresa.

Eles querem entender como você se comporta em situações positivas, ou em frente a um conflito, principalmente para entender como você funciona quando está sob pressão, e também o que você entende por profissionalismo.

Então espere perguntas como:

“Qual é o nicho ou a coisa mais complexa que você conhece? Você consegue me explicar ela em 5 minutos ou menos?”

E disso eles vão mensurar sua paixão e seu poder de sintetização em comunicação, sem se perder em detalhes ou se perder no meio do caminho.

Outra pergunta interessante:

“Se você entrar hoje no Google, como que você vai impactar o seu time?”

E nisso eles vão entender como você se percebe ou como você percebe qual o seu valor, e como isso pode gerar novos resultados e ideias pra um time.

Agora as últimas perguntas antes de entrarmos na parte técnica:

"Qual seria o seu processo de resolução para “essa tarefa X aqui.”

"Me conte de um momento em que você tomou um risco, e falhou."

"Me diga alguma conquista que você tem orgulho, e porque você tem orgulho disso."

"Me diga sobre o ambiente de trabalho mais desestruturado que você já trabalhou."

"O que você mais quer que eu saiba sobre você, que a gente ainda não conversou?"

Show! Agora indo para a parte técnica e essa é a que vai te gerar mais ansiedade, mas vamos começar por uma visão geral de quais skills técnicas você deveria ter ou desenvolver:

  • Algoritmos gerais
  • Algoritmos de ordenação
  • Estrutura de dados
  • Matemática discreta básica
  • Grafos, Recursão
  • Programação Orientada a Objeto
  • Big-O Notation
  • APIs
  • Testes automatizados

Aprender sobre tudo isso, turma, leva meses e meses de estudo, experiência no dia a dia — seja na sua empresa ou projetos pessoais — e não vai ser uma coisa da noite para o dia, principalmente na parte de estrutura de dados e algoritmos (que parecem ser os tópicos que o Google mais pega no pé).

Então vamos agora pra lista das estruturas de dados mais comuns para essas entrevistas:

  • Arrays
  • Linked lists
  • Stacks
  • Queues
  • Trees
  • Graphs
  • Heaps
  • Hash sets
  • Hash maps/tables

E também os algoritmos mais comuns (alguns deles eu nunca ouvi falar):

  • Binary search
  • Quicksort
  • Mergesort
  • A*
  • Breadth-first search
  • Depth-first search
  • Divide and conquer​
  • Dynamic programming

--

--