Recentemente, cancelei a posição da Amazon SDE. Ao longo da minha preparação, GeeksforGeeks desempenhou um grande papel, este é o único site que referi / acompanhei mais de 90% do tempo durante a fase de preparação. 

Por favor, encontre minha experiência com a Amazon abaixo. 
1 Teste escrito 
1) Dado uma array de número, encontre o próximo maior não à direita de cada elemento 
 

Example-    Input     12 15 22 09 07 02 18 23 27
            Output    15 22 27 18 18 18 23 27 -1

2) Dada uma lista de links e entrada int K, inverta a lista de links em slots de tamanho K 
 

Example Input 12--> 13--> 3--> 20--> 55--> 87--> 20--> 77--> 90 Lets k =3
Output 3--> 13->12--> 87--> 55--> 20--> 90--> 77--> 20

3) Dada árvore e entrada int K, imprima os nós que estão a k distância da folha.  
A entrada está abaixo da árvore ek = 2 
 

imagem

Resultado-2, 5, 4 

2. Primeira rodada F2F (DS e Algo) 
Dois entrevistadores estavam lá no painel, Apenas um fazia a pergunta o outro estava apenas observando, Ele estava anotando toda a conversa que acontecia entre nós e percebendo a abordagem e a solução fornecida por mim. Isso era comum em todas as rodadas de entrevistas. 

1) Dada uma seqüência infinita de O's e 1's, respectivamente. Você precisa encontrar o ponto de transição de 0 para 1. 
Eu dei a solução nativa em O (n). Ele disse para otimizar mais. A pesquisa binária direta não pode ser aplicada nele porque a string era infinita e o comprimento da string não foi fornecido. 
Eu disse que vou dividir a string em 10 slots de tamanho para reduzir a complexidade. Ainda assim, ele disse para otimizar mais. Eu disse que vou aumentar o tamanho do slot em potência de 2, como 2,4,8,16,32. ele estava satisfeito com isso. 
Ele novamente complicou acrescentando que agora minha string contém 0, 1, 2 em ordem de classificação. Você precisa encontrar o ponto de transição de 0 para 1 e de 1 para 2. Eu forneci a abordagem. 
Depois disso, desta vez, quero torná-lo genérico. String pode conter 0 an (entrada) número para encontrar todos os pontos de transição. Eu resolvi, ele ficou satisfeito com a abordagem e me disse para escrever um código para ele. 

2) Encontre elementos comuns de duas arrayes ordenadas 

3. Segundo F2F (DS e Algo) 

1) Foi um pouco difícil para mim quebrar, ela disse pedindo clonagem de java, que era minha área fraca. Dada uma classe que contém o nome da string e referência ao amigo pessoal, claramente mostrado abaixo. 
 

Class A {
   A(String str, Person P { //Constructor
       this. name = str;
       this.friend= P ;
   }
   // override
   Clone() {
       // code for this function was expected from me
       // which can produce the deep copy
   }
}

Suponha que A–> B–> C–> D significa que A é amigo de B, que é amigo de C e assim por diante. 
Chamar uma vez que o método Clone clonará toda a lista de amigos como 
A '-> B' -> C ' -> D '(lá A' é o clone de A). 
Decifrar isso foi muito difícil para mim, porque eu não estava familiarizado com essas questões. 

2) Como encontrar o último enésimo elemento da lista de links individuais, foi muito fácil para mim. 
Resolvido em 2 min e escrevi o código rapidamente. 

3) Dada uma array classificada de número, valor K e valor X, encontre o número K mais próximo ao valor 
Exemplo: Entrada 12 16 22 30 35 39 42 45 48 50 53 55 56 K = 4 X = 35 
Saída 22 30 39 42 
O entrevistador estava ficando sem tempo porque a primeira pergunta demorou muito. Então ela disse para contar apenas a abordagem, o código não era esperado. 

4. Terceiro F2F (levantador de barra) 
 

O entrevistador foi de natureza amigável. Ele era um cara muito sênior e muito legal. Comecei com a minha pergunta do projeto e depois alguma pergunta comportamental e, por último, uma pergunta técnica
  1.  
Qual é o seu projeto atual, que valor você agregou ao seu projeto até agora.
  1.  
Quais desafios você enfrentou enquanto trabalhava no projeto e como você os superou.
  1.  
Qual foi o aprendizado importante para você no último projeto.
  1.  
Se você tem a opção de voltar 3 anos na vida, então o que você gostaria de mudar na vida, significa quais habilidades e passos / decisões você quer adquirir ou mudar.
  1.  
O que você fez no passado do qual você se sente orgulhoso .. blaa blaa….
  1.  
Dada uma árvore, como você encontrará a soma vertical dos nós
  1.  
consulte este link para entender mais sobre a questão
  1.  
Imprimir uma árvore binária em ordem vertical
  1.  
Eu dei a solução usando o mapa Hash, mas ele não ficou satisfeito com a resposta. Ele disse para dar outra solução porque o Hash map aumentará a complexidade do espaço. Eu usei a solução de array que aumentava a complexidade do tempo, então usei a lista de links circulares e finalmente resolvi usando a lista de links duplamente. Ele estava satisfeito com a solução. Disse-me para codificar para isso.

5. Forth round f2f (OOPS, design pattern e OS fundamental) 
 

  1.  
Comecei com os detalhes do meu projeto, meu projeto era em android mobile, então ele me disse para criar um “aplicativo de contato”. O diagrama de classes e sua relação eram esperados de mim. Todos os padrões de design que você pode usar nisso.
  1.  
Explique a herança e a classe base, se você precisar parar de expor os métodos da classe base sem tocar na classe base de forma alguma. Foi realmente complicado. questão eu gostei.
  1.  
O que é impasse e como detectar impasse no sistema.
  1.  
Conceito de normalização de banco de dados e vários tipos dela.
  1.  
Ele também começou a fazer algumas perguntas sobre rede. Como TCP / IP, conexão de soquete.
  1.  
Como funciona o chat entre 2 usuários internamente, internamente como os pacotes fluem entre as camadas. E suponha que o usuário A envie uma mensagem “Oi” para o usuário B e o usuário B simplesmente desligue o sistema. O que vai acontecer nesse caso.

6. Quinto f2f (gerente de contratação) 
 

  1.  
Por que você deseja ingressar na Amazon.
  1.  
O que você sabia sobre a Amazon.
  1.  
Explicação do projeto atual.
  1.  
Que novo código você implementou e quanto impacto ele causou nos outros.
  1.  
Dada uma árvore, escreva o percurso em ordem. Escrevi em 2 minutos usando recursão.
  1.  
A próxima adição foi, você pode escrevê-lo usando a iteração experimentada e escreveu algum código com erros.
  1.  
Ele começou a verificar e disse o bug e me disse para corrigi-lo. Mesmo assim, eu resolvi a mesma questão em minha casa, ainda não estava clicando em minha mente. Comecei a corrigi-lo, mas falhei. Depois disso, o entrevistador deu uma dica. Usei a dica e resolvi todo o código novamente. Ele estava ficando sem tempo, então peguei a planilha de códigos e disse que verificaria mais tarde no tempo livre.
  1.  
Consulte este link para obter uma solução real e uma compreensão adequada da última pergunta
  1.  
Traversal de Inoreder sem recursão 
 
 

Mensagem para todos: - A 
Amazon espera um código preciso e preciso com menos complexidade. Portanto, discuta primeiro com seu entrevistador a abordagem. Não pule no código. 
Mesmo que você não saiba a resposta certa, continue discutindo várias possibilidades para resolver a questão e tente resolver o problema com ângulos diferentes. Pratique cada vez mais a veracidade das perguntas. 

Muitos muitos parabéns ao autor. Se você gosta de GeeksforGeeks e gostaria de contribuir, você também pode escrever um artigo e enviá-lo para review-team@geeksforgeeks.org. Veja seu artigo na página principal do GeeksforGeeks e ajude outros Geeks. 

Todos os problemas de prática para a Amazon