Recentemente, participei do Hike Hiring Drive para iOS Developer no escritório de Delhi. Os candidatos têm 0-2, 2-4 e 4+ anos de experiência. Recebi recomendação de um recrutador no LinkedIn. 

Rodada 1: Aplicativo móvel - (1:30 hora) Eles forneceram Flickr Api, a tarefa é construir um aplicativo iOS que busca imagens usando a entrada da barra de pesquisa e exibe as imagens. Certifique-se de que a IU não deve ser bloqueada, manipulação de várias requests durante a digitação do usuário, estrutura de código, paginação e legibilidade e armazenamento em cache de imagem são vantagens se você tiver implementado. 

Criei o aplicativo em 50 minutos - Link para ver    https://github.com/Vasu05/Hike-Messenger-Hiring-iOS-Test 

Após a conclusão do aplicativo, Meu aplicativo é revisado pelo gerenciador de iOS. Ele foi legal e amigável. Ele perguntou a estrutura do modelo que eu segui, há travamento no meu aplicativo, me pediu para depurar e eu fiz, disse a ele o motivo do travamento. Ele perguntou sobre GCD, pediu otimização de código. Ele perguntou como detectar se o usuário rola a parte inferior da página. Ele inspecionou o aplicativo completamente, ele estava digitando, cancelando, limpando dados para ver o comportamento do aplicativo. Ele ficou impressionado, pois criei todos os principais recursos com otimização de código. Em seguida, temos uma discussão sobre os projetos atuais em que estou envolvido, o que eu construí no passado. Essa rodada de revisão durou cerca de 1:20 h. Ele me pediu para almoçar e esperar o segundo turno. 

Rodada 2: DS Algo (30 min) - 
 

  • Encontre dois elementos com soma igual ao valor x em Array. Fiz isso usando hashmap .
  • A árvore é BST ou não.
  • Implementação LRU
  • Discussão sobre o tratamento de threads no iOS

Foi necessário um código adequado, eles deram tempo suficiente para pensar e pediram uma abordagem melhor. Eu codifico todos os três a bordo com uma explicação. O entrevistador ficou impressionado, me pediu para esperar mais uma rodada. 

Rodada 3: esta rodada deveria ser realizada pelo vice-presidente da empresa, mas ele estava ocupado com outros candidatos, então outra pista veio e me pediu para fazer outra rodada. Ele fez duas perguntas 
 

  • Detecte o loop na lista vinculada e remova o loop.
  • obter ponto de fusão de duas listas vinculadas.

Enquanto isso, eu estava escrevendo o código para as segundas perguntas no papel, ele disse que havia encerrado a entrevista e me pediu para encontrar o VP para uma nova rodada. 

Rodada 4: esta rodada realizada pelo vice-presidente da empresa. Ele deu uma introdução, o que ele fez, em que eles estão se concentrando e falou sobre como eles são diferentes de outros aplicativos de mensagens no mercado. Ele me perguntou se você preferia caneta e papel ou escrever na tela, então ele me pediu para vir para o quadro, era samsung TV onde eu deveria escrever código com caneta. Ele perguntou - 
 

  • Fluxo infinito de palavras que você deve dizer k palavras mais ocorrentes. Eu disse a ele abordagem com heap e trie, ele me pediu para usar outra estrutura de dados para pesquisa, eu dei a ele uma abordagem de árvore ternária ainda que ele esperava melhor e me deu uma dica para usar o mapa, em seguida, dei a solução usando heap e hashmap. Ele me pediu para codificar.
  • verifique se a árvore binária é mínima ou não   . Ele saiu da sala e me perguntou se eu pensava em otimizar a solução. Ele chega depois de 30 minutos de intervalo entre eu escrevi propriedades da árvore binária e heap e, em seguida, escrevo código para verificar se a árvore é mínima ou não. Ele ficou satisfeito.
  • Ele me deu uma pergunta sobre o design - ele me pediu para criar a opção de pesquisa de adesivos enquanto o usuário estava digitando. Eu disse a ele sobre o cache de memória, ele me perguntou o que todos os tipos de cache que podemos usar. Eu disse a ele que há um cache de aplicativo mantido por aplicativo, memória de disco e memória de rede. Eu fiz um diagrama de como a consulta de pesquisa funcionará passo a passo. Em seguida, discutimos sobre o manuseio de vários caracteres durante a digitação do usuário. Eu disse que podemos usar o temporizador para processar uma nova solicitação. Em seguida, ele me perguntou o tópico principal não deve ser bloqueado enquanto o usuário interage com a tela. Eu disse a ele para usar GCDs e temos uma longa discussão sobre isso. Ele ficou satisfeito, foi uma longa jornada, ele estava me ajudando quando estou preso. Em seguida, discutimos sobre a cultura da empresa, se ele ainda codifica, como ele começou com o Hike Messenger. Ele me pediu para esperar outra rodada.
  • Existem muitas outras questões das quais não me lembro.

Esta rodada dura 1:40 horas. 

Depois de tudo isso eu estava muito exausto, já que respondi todas as perguntas corretamente, essa avaliação contínua era iniciada a partir das 10:30 da manhã. 

Eram cerca de 5h30 quando eles agendaram outra rodada de entrevista. 

Rodada 5: O entrevistador examinou meu currículo e pediu-me uma breve introdução. Expliquei a ele meus projetos atuais na empresa e na faculdade. Ele era desenvolvedor de back-end sênior. Ele começa a me fazer perguntas sobre Java. Eu disse a ele que não pude entrar em contato com ele desde 1,5 anos, mas ele perguntou. 
 

  • escrever código para 1 gravador e problema de n leitor. Eu disse a ele que podemos usar bloqueios (semáforo e semáforo) e dei-lhe a solução.
  • Ele pediu dicas virtuais - eu disse a ele que não me lembro.
  • Stack vs Heap Memory. Eu dei a ele uma explicação com exemplo.
  • Classe Singleton, porque estamos usando isso. Ele não ficou satisfeito com a explicação.
  • Ele fez perguntas básicas sobre Java, como o que é público, privado e por que existe uma única função principal em Java.

Afinal esse recrutador me pediu para sair e no dia seguinte disseram que a última rodada não foi conforme a expectativa. Eu não fui selecionado. Dicas - prepare sua entrevista como uma colocação em uma faculdade, eles podem perguntar qualquer coisa, mesmo que não seja relacionado ao seu posto de contratação.