GithubHelp home page GithubHelp logo

job-mobile-developer's Introduction

Intelipost: Teste prático para Desenvolvedor Mobile

Este é o teste usado por nós aqui da Intelipost para avaliar tecnicamente os candidatos a nossas vagas de Desenvolvedor Mobile. Se você estiver participando de um processo seletivo para nossa equipe, certamente em algum momento receberá este link, mas caso você tenha chego aqui "por acaso", sinta-se convidado a desenvolver nosso teste e enviar uma mensagem para nós nos e-mails [email protected] e [email protected].

Aqui na Intelipost nós aplicamos este mesmo teste para as vagas em todos os níveis, ou seja, um candidato a uma vaga de desenvolvedor mobile júnior fará o mesmo teste de um outro candidato a uma vaga de desenvolvedor mobile sênior, mudando obviamente o nosso critério de avaliação do resultado do teste.

Nós fazemos isso esperando que as pessoas mais iniciantes entendam qual o modelo de profissional que temos por aqui e que buscamos para o nosso time. Portanto, se você estiver se candidatando a uma vaga mais iniciante, não se assuste, e faça o melhor que você puder!

Instruções

Você deverá criar um fork deste projeto, e desenvolver em cima do seu fork. Use o README principal do seu repositório para nos contar como foi resolver seu teste, as decisões tomadas, como você organizou e separou seu código, e principalmente as instruções de como rodar seu projeto, afinal a primeira pessoa que irá rodar seu projeto será um programador backend de nossa equipe, e se você conseguir explicar para ele como fazer isso, você já começou bem!

Lembre-se que este é um teste técnico e não um concurso público, portanto, não existe apenas uma resposta correta. Mostre que você é bom e nos impressione, mas não esqueça do objetivo do projeto.

Nós não definimos um tempo limite para resolução deste teste, o que vale para nós e o resultado final e a evolução da criação do projeto até se atingir este resultado, mas acreditamos que este desafio pode ser resolvido em cerca de 16 horas de codificação.

Um pouco sobre a Intelipost

A Intelipost é uma startup de tecnologia que está revolucionando a logística no Brasil, um mercado de R$ 300B por ano com muitas ineficiências e desafios. Temos um sistema inovador que gerencia a logística para empresas do e-commerce. Já recebemos R$11 milhões de investimento até o momento, e em pouquissimo tempo já estamos colhendo grandes resultados: Em 2016 fomos selecionados como uma empresa Promessas Endeavor, também ganhamos a competição IBM Smartcamp, com foco de Big Data e data analysis, o que nos rendeu a realização de um Hackathon sobre Blockchain junto a IBM, e em 2017 fomos selecionados pela Oracle para sermos acelerados por eles no programa Oracle Startup Cloud Accelerator.

Tecnicamente, o nosso maior desafio hoje é estar preparado para atender a todos os nossos clientes, que além de muitos, são grandes em número de requisições (Americanas, Submarino, Shoptime, Lojas Renner, Boticário, Livraria Cultura, Magazine Luize, etc), totalizando mais de meio bilhão de requisições por mês.

Para isso, organizamos nosso sistema em micro serviços na AWS com Docker e Kubernetes, utilizando Java 8, Spring 4 (principalmente spring-boot), PostgreSQL, ElasticSearch e Redis. Temos um frontend para acesso dos clientes desenvolvido Vue.JS e mobile apps utilizando o framework Ionic.

O desafio

Você deverá construir usando IONIC 3 um aplicativo que irá rastrear os movimentos do celular do usuário a cada 3 minutos, buscando sua localização pelo GPS com alta precisão. Deverá armazenar localmente estas informações, uma vez que o aplicativo pode estar funcionando sem conectividade com a internet. Seria interessante que pudessemos ver as últimas localizações captadas, com horário e coordenadas.

Uma vez captadas a localização do usuário, ele deverá ter uma função no aplicativo para "sincronizar" com o servidor estes dados. Quando solicitada a sincronização o usuário deverá tirar uma selfie, usando a camera do celular, e enviar esta imagem (encodada em base64) junto com a lista de todas as posições rastreadas para um servidor externo.

O envio deverá ser em um objeto JSON, e o endpoint poderá ser temporário, configurado em qualquer serviço com este fim como requestbin (https://requestbin.fullcontact.com/) ou hookbin (https://hookbin.com).

O que nós esperamos do seu teste

  • O código deverá ser hospedado em algum repositório público. Diversos quesitos serão avaliados aqui, como organização do código, sequencialidade de commits, nomeação de arquivos, funções, etc.
  • O código deverá estar pronto para ser executado e testado, portanto, caso exista algum requisito, este deve estar completamente documentado no README do seu projeto.
  • Esperamos também alguma explicação sobre a solução, que pode ser em comentários no código, um texto escrito ou até um vídeo narrativo explicando a abordagem utilizada.
  • Seria interessante ter telas com uma identidade visual e utilizar componentes de template do Ionic.
  • Ver a utilização de dependency managers (npm, webpack)
  • Se possível um icone e splash screen para o app
  • Automação de tasks com gulp ou outra ferramenta de sua escolha

O que nós ficaríamos felizes de ver em seu teste

  • Testes
  • Processo de build e deploy documentado
  • Ver o código rodando live (Com Ionic DevApp)
  • Alguma metodologia para definição e organização do seu código CSS

O que nós não gostaríamos

  • Descobrir que não foi você quem fez seu teste
  • Ver commits grandes, sem muita explicação nas mensagens em seu repositório

O que avaliaremos de seu teste

  • Histórico de commits do git
  • As instruções de como rodar o projeto
  • Organização, semântica, estrutura, legibilidade, manutenibilidade do seu código
  • Alcance dos objetivos propostos
  • Escalabilidade da solução adotada
  • Componentização e extensibilidade dos componentes Javascript

job-mobile-developer's People

Contributors

gustavointelipost avatar lucastex avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.