Skip to content

Instantly share code, notes, and snippets.

@technave
Last active July 8, 2020 11:00
Show Gist options
  • Save technave/4067a8bb5b7d327c24d3983e5a9c36ed to your computer and use it in GitHub Desktop.
Save technave/4067a8bb5b7d327c24d3983e5a9c36ed to your computer and use it in GitHub Desktop.

Revisions

  1. Juliano Reis revised this gist Jun 16, 2020. 1 changed file with 14 additions and 11 deletions.
    25 changes: 14 additions & 11 deletions internship-challenge.md
    Original file line number Diff line number Diff line change
    @@ -14,7 +14,9 @@

    - Só será aceito o uso de bibliotecas de estilo e clientes HTTP (axios, fetch, etc);

    - Caso não consiga resolver todos os exercícios, não tem problema, envie mesmo assim.
    - Caso não consiga resolver todos os exercícios, não tem problema, envie mesmo assim;

    - Ao finalizar o teste, envie o link do seu repositório por e-mail para [email protected].

    ## Desafio

    @@ -79,15 +81,15 @@ Exemplo de requisição:
    ```javascript
    axios
    .get("/posts")
    .then(function(response) {
    .then(function (response) {
    // handle success
    console.log(response);
    })
    .catch(function(error) {
    .catch(function (error) {
    // handle error
    console.log(error);
    })
    .then(function() {
    .then(function () {
    // always executed
    });
    ```
    @@ -112,13 +114,14 @@ Sendo que cada comentário devem pertencer a um post.

    ## Observações

    Sugestão de bibliotecas para montar a api:
    - Koa ou express
    - Alguma biblioteca para abstrair a camada de dados que preferir.
    - Knex
    - Bookshelf
    - Sequelize
    - Mongoose
    Sugestão de bibliotecas para montar a api:

    - Koa ou express
    - Alguma biblioteca para abstrair a camada de dados que preferir.
    - Knex
    - Bookshelf
    - Sequelize
    - Mongoose

    Prefira o uso de um banco de dados relacional (postgresql, mysql, ...), sendo seu uso não obrigatório.<br>
    Para organizar a estrutura de seu projeto prefira o uso do padrão `MVC` sendo seu uso não obrigátio.<br>
  2. @dtdsouza dtdsouza revised this gist Jun 16, 2020. 1 changed file with 2 additions and 2 deletions.
    4 changes: 2 additions & 2 deletions internship-challenge.md
    Original file line number Diff line number Diff line change
    @@ -127,8 +127,8 @@ Será observado organização de código, legibilidade e melhor uso dos recursos
    ## (BONUS) Exercício de Banco de Dados

    Dado a seguinte estrutura do banco
    <br>
    ![banco](https://nave-email-mkt.s3.amazonaws.com/2002/Banco.png)
    <br><br>
    ![banco](https://nave-challenges.s3.amazonaws.com/Back-End-Interniship/Screenshot.png)

    - **E.B.1** Crie um script de criação das tabelas.
    - **E.B.2** Faça um script para popular as tabelas.
  3. technave revised this gist Feb 27, 2020. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion internship-challenge.md
    Original file line number Diff line number Diff line change
    @@ -54,7 +54,7 @@ Olá, Juca da silva!

    - **E.8** Imprima a soma das idades (dica: utilize reduce)

    - **E.9** Imprima o objeto se existir alguem com menos 25 anos.
    - **E.9** Imprima se existir alguem com menos 25 anos.

    - **E.10** Imprima todos os elementos em que a idade é menor que 30 anos.

  4. technave renamed this gist Feb 20, 2020. 1 changed file with 0 additions and 0 deletions.
    File renamed without changes.
  5. technave renamed this gist Feb 20, 2020. 1 changed file with 0 additions and 0 deletions.
    File renamed without changes.
  6. technave created this gist Feb 20, 2020.
    137 changes: 137 additions & 0 deletions gistfile1.txt
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,137 @@
    # Teste para vaga de estagiário

    ## Instruções

    - Utilizar **apenas JavaScript** puro para resolver o problema (**não é permitido o uso de jquery**);

    - Tente sempre utilizar a abordagem ES6+ para resolver os exercícios;

    - **Entrega:** todas as soluções devem estar em um único repositório (github, gitlab, bitbucket, etc…) de forma **pública**;

    - Neste repositório deve haver, na raiz, um README.md, com as instruções de execução do código desenvolvido;

    - Estilo fica ao critério do candidato, e não é o foco principal do teste;

    - Só será aceito o uso de bibliotecas de estilo e clientes HTTP (axios, fetch, etc);

    - Caso não consiga resolver todos os exercícios, não tem problema, envie mesmo assim.

    ## Desafio

    ### Resolver os seguintes exercícios

    - **E.1** Crie uma função que recebe dois argumentos string e retorna o de maior comprimento.

    - **E.2** Crie uma função que recebe três argumentos, uma função e duas string, aplique a função nas duas string e imprima o resultado.

    - **E.3** Crie uma função que recebe vários argumentos do tipo string e imprime todos juntos

    - **E.4** Dado a seguinte string `'teste 1 de 2 string 3'`, substitua todas as ocorrências de números pelo valor `'[removido]'`.

    - **E.5** Dado o dicionário `{4: 'a', 3: 'e', 1: 'i', 5: 's'}` substitua os números na frase `'T35t3 d3 35t4g1o'` conforme o dicionário.

    - **E.6** Utilizando a api da viacep (https://viacep.com.br/) e o seu cep como entrada imprima o seu endereço no formato `'ENDERECO, NUMERO, CIDADE/ESTADO'`.

    **Para os seguintes exercícios** considere o array de objetos:

    ```
    [
    {id: 1, nome: 'juca', sobrenome: 'da silva', idade: 42},
    {id: 2, nome: 'daniel', sobrenome: 'gonçalves', idade: 21},
    {id:3, nome: 'matheus', sobrenome: 'garcia', idade: 28},
    {id: 4, nome: 'gabriel', sobrenome: 'pinheiro', idade: 21}
    ]
    ```

    - **E.7** Imprima uma mensagem de saudação com o nome completo para cada um dos objetos. O nome deve ter a primeira letra maiúscula.

    ```
    Ex.:
    Olá, Fulano de tal!
    Olá, Juca da silva!
    ...
    ```

    - **E.8** Imprima a soma das idades (dica: utilize reduce)

    - **E.9** Imprima o objeto se existir alguem com menos 25 anos.

    - **E.10** Imprima todos os elementos em que a idade é menor que 30 anos.

    - **E.11** Ordene o array de forma decrescente por idade, em caso de empate o desempate é pelo id.

    # Exercício de front-end

    ## Desafio

    O objetivo é fazer uma tela em que o usuário verá uma lista de postagens.
    Cada postagem terá uma lista com seus referentes comentários.
    Um post pode ter ou não comentário, dependendo do que vier da API.

    ## Documentação da API

    - API RESTful
    - URL: https://jsonplaceholder.typicode.com/
    - Para fazer as requisições HTTP recomendamos o uso da biblioteca [axios](https://github.com/axios/axios) usando o seu link de cdn.

    Exemplo de requisição:

    ```javascript
    axios
    .get("/posts")
    .then(function(response) {
    // handle success
    console.log(response);
    })
    .catch(function(error) {
    // handle error
    console.log(error);
    })
    .then(function() {
    // always executed
    });
    ```

    ## Endpoints

    GET `https://jsonplaceholder.typicode.com/posts` (busca a listagem de postagens)
    GET `https://jsonplaceholder.typicode.com/comments` (busca a listagem de comentários)

    ## Observações

    O que mais será levado em conta é o código JavaScript escrito no teste. Não será levado em consideração o código css. Ainda assim, esperamos uma tela com um minímo de estilo para diferenciar o que é postagem e o que é comentário.

    Dica: Para saber quais os comentários de cada postagem, é necessário fazer a comparação do `id` que vem na postagem, com o campo `postId` que vem nos comentários. Sendo iguais, significa que aquele comentário é referente aquela postagem.

    # Exercício de back-end

    ## Desafio

    Deverá ser implementado uma API [node.js](https://nodejs.org) no padrão `RESTful` que possibilite a criação e listagem de posts e comentários.
    Sendo que cada comentário devem pertencer a um post.

    ## Observações

    Sugestão de bibliotecas para montar a api:
    - Koa ou express
    - Alguma biblioteca para abstrair a camada de dados que preferir.
    - Knex
    - Bookshelf
    - Sequelize
    - Mongoose

    Prefira o uso de um banco de dados relacional (postgresql, mysql, ...), sendo seu uso não obrigatório.<br>
    Para organizar a estrutura de seu projeto prefira o uso do padrão `MVC` sendo seu uso não obrigátio.<br>
    Será observado organização de código, legibilidade e melhor uso dos recursos da linguagem javascript.

    ## (BONUS) Exercício de Banco de Dados

    Dado a seguinte estrutura do banco
    <br>
    ![banco](https://nave-email-mkt.s3.amazonaws.com/2002/Banco.png)

    - **E.B.1** Crie um script de criação das tabelas.
    - **E.B.2** Faça um script para popular as tabelas.
    - **E.B.3** Faça uma querie que traga todos os `posts` ordenados por `title`.
    - **E.B.4** Faça uma querie que traga todos os `posts` com seus respectivos `comments`.
    - **E.B.5** Faça uma querie que traga todos os `posts` com sua quantidade de `comments`.