Voce pode ver como foi a *minha* entrevista aqui.
Como arranjar uma entrevista?
- Procura 3 vagas aqui. Pode ser para qualquer lugar do mundo.
- Me mande seu curriculo e uma cover letter (em ingles e em pdf).
- Nao tem passo 3 :)
A partir dai, as chances sao de que de uma forma ou de outra os recrutadores vao olhar para o seu curriculo no minimo. Se existir um bom fit, eles entram em contato com voce em umas 3-4 semanas. A partir desse primeiro contato, minha area de influcia acaba :)
Como eh o processo?
As entrevistas sao bastante tecnicas e feitas majoritariamente por engenheiros. O processo comeca com um entrevista por telefone de 1 hora, geralmente feita por 2 engenheiros diferentes. Se voce passar pelas entrevistas pelo telefone, eles te chamam para entrevistar pessoalmente no Google, onde acontecem uma bateria de 5-7 entrevistas num dia so. Assim que voce faz essas ultimas entrevistas, seu pacote vai para um comite de contratacao e um resultado deve sair entre 1-2 meses.
Como me preparar para a entrevista?
A entrevista eh bastante tecnica e voce pode esperar perguntas bastante teoricas. Eh um processo bastante diferente do Brasil, entao voce vai muito provavelmente ter que se adaptar. As entrevistas sao feitas exclusivamente por engenheiros, entao espere perguntas tecnicas.
A melhor forma de encarar a entrevista eh de forma sistematizada: quanto mais voce estudar, maiores sao suas chances de passar. Encare como se fosse um vestibular, onde o seu successo estah fortemente correlacionado com o seu nivel de comprometimento e dedicacao.
O quanto voce precisa estudar varia muito com o quanto voce jah sabe e o quanto voce precisa aprender. Soh para ter uma base de comparacao, eu dediquei aproximadamente 1-2 meses para me preparar para a entrevista pelo telefone e 3-4 meses para me preparar para as entrevistas pessoais. Eu estudava umas 1-2 horas por dia (a por telefone eu estava na faculdade, entao eu costumava matar aulas para estudar; as em pessoa eu estava fazendo um estagio, entao eu estudava aa noite).
Existem 3 principais areas que sao perguntadas:
- Algorithms
- Systems
- Coding
Algorithms
Compre esse livro e leia ele de cabo aa rabo. Para ter uma base de comparacao, eu demorei uns 3 meses para digerir ele todo.
Pegue esse livro na biblioteca e leia ele de cabo aa rabo. Os seguintes algoritimos precisam estar *muito* claros na sua cabeca:
- Big O() notation
- Searching: depth first, breadth first e binary search
- Sorting: quicksort, bubble sort
- Data structures: linked lists, binary trees, hash tables
- Graph: shortest path, minimum spanning trees, max flow
- Linear programming
- NP-completeness
- Probability algorithms
- Combinatorics
- Dynamic programming
- Geometry
Assim que voce terminar de estudar, uma boa forma de praticar e verificar se voce aprendeu eh entrar nesse site e resolver alguns problemas. Se voce estiver conseguindo resolver esses problemas com certa facilidade, voce tah preparado nessa componente.
Systems
Pegue os livros da faculdade e se familiarize com:
- Operating Systems
- Distributed Systems
- Databases
- Compilers
- Virtual Machines
- Memory management
- Networks
- Pubsub
Coding
As perguntas de coding medem em geral quao experiente voce eh como programador. Voce tem que estar familiar com coisas do tipo:
- Interface design
- Design patterns
- Testability
- Dependency Injection
- Programming language paradigms
- Existing libraries (JRE, stdlib, stl, etc)
- Technologies
- Web
- Mobile
- Ajax