Desafio Recomendador de Amigos

Desafio de programação para construção de um sistema de recomendação de amigos 24 de junho de 2022

Você deve implementar um sistema que permita que uma pessoa obtenha sugestões de novos amigos se baseando nas amizades já existentes.

Você deve criar uma aplicação que armazene dados em memória (não utilize nenhum banco de dados externo, utilize variáveis globais) e implemente as seguintes rotas:

Create Person

[POST] http://localhost/person

Esta rota deve receber um CPF e um nome, e realizar o cadastro do usuário. Deve retornar erro com status code 400 caso o usuário já esteja cadastrado ou o CPF informado tenha tamanho diferente de 11 dígitos numéricos (Não implemente qualquer algoritmo validador de CPF).

Entrada:

{
    "cpf": "12345678909",
    "name": "Joaozinho"
}

Saída:

  • Deve retornar código HTTP 200 em caso de sucesso.
  • Deve retornar código HTTP 400 caso o usuário cadastrado já exista ou caso o CPF informado não consista de 11 dígitos numéricos

Get Person

[GET] http://localhost/person/:CPF

Esta rota deve receber um CPF e, se o usuário existir, retornar seus dados, caso contrário, deve retornar erro com status code 404.

Clean

[DELETE] http://localhost/clean

Esta rota deve limpar os dados em memória.

Create Relationship

[POST] http://localhost/relationship

Esta rota deve receber dois CPFs e, caso os dois usuários existam, criar um relacionamento entre eles, caso contrário, deve retornar erro com status code 404.

Entrada:

{
    "cpf1": "11111111111",
    "cpf2": "22222222222"
}

Saída:

  • Deve retornar código HTTP 200 em caso de sucesso.
  • Deve retornar código HTTP 404 caso um dos usuários não exista

Get Recommendations

[GET] http://localhost/recommendations/:CPF

Deve receber um CPF e retornar erro com status code 400 se o CPF informado não consistir em 11 dígitos numéricos, erro com status code 404 se o usuário correspondente não existir.

Caso o CPF corresponda a um usuário cadastrado, o retorno deve ser um Array contendo a lista de CPFs de todos os amigos dos amigos do usuário informado que não são seus amigos, ordenada de maneira decrescente pela relevância, ou seja, deve-se verificar quantos amigos tem relacionamento com a pessoa, e as pessoas com mais relacionamentos com amigos devem ser informados primeiro.

A
A
E
E
C
C
B
B
D
D
Text is not SVG - cannot display

Neste caso, assumindo que a entrada seja A, o retorno deve ser exatamente [D, E], nesta ordem, pois 2 amigos de A tem amizade com D, e apenas um amigo de A tem amizade com E.

Um grande abraço e até o próximo post!

Compartilhar: Twitter Facebook LinkedIn VK Reddit