Quindi sono andato per lavoro come sviluppatore in un'azienda che vende scatole di cibo gourmet basate su ricette, sono stato rifiutato per un lavoro dopo aver fatto un test tecnico, ho chiesto perché non sono riuscito a migliorare la prossima volta.
Hanno detto che il mio progetto per il sistema di valutazione era scadente. (in pratica volevano un sistema per le richieste di rating). In alcuni contesti di base ho avuto due 'ricette' 'valutazioni' di entità. Queste entità avevano una relazione bidirezionale uno-a-uno. La ricetta ha una valutazione. L'entità di valutazione aveva questi attributi "numberVotes", "totalPoints", "average"
nel mio sistema si farebbe una richiesta POST a
/ ricetta / tasso / {recipieID}
Con un json che assomiglia a
{"rating":4}
la mia funzione di valutazione cercherebbe quindi il punteggio per la ricetta usando {recipieID} se non ce ne fosse uno, i rating successivi restituirebbero quindi la valutazione per la ricetta data +1 all'attributo 'numberVotes', aggiungendo la nota attribuire il punteggio ai "totalpoint", quindi calcolare la media e aggiornare l'attributo "media".
Lo sviluppatore capo ha detto questo
but you would be unable to retrieve the resource of a single rating. Also you are not updating a rating with a particular recipe but a recipe with a particular rating. So POST:/rate/recipe/{id} should be PUT:/recipe/{id}/rating
Nella mia mente questo è un design orribile, sta suggerendo che vorresti memorizzare ogni singola valutazione inviata da un utente. Se tu avessi 10 milioni di utenti che votano un oggetto, stai davvero cercando di immagazzinare 10 milioni di pezzi di spazzatura nel tuo database, solo tu così puoi scoprire come ha valutato Gurtrude il tuo key lime pie su 5?
Quindi, quando vuoi ottenere la valutazione effettiva del key lime key, vuoi recuperare tutti i 10 milioni di risultati e questo? Sono sicuro che ci sia un caso d'uso per archiviare le valutazioni dei singoli utenti per l'analisi degli utenti, ma sono sicuro che vorrai comunque archiviare la valutazione media per il recupero rapido piuttosto che fare ricerche intensive in base alle risorse ogni volta che desideri la valutazione di una ricetta. Ma nel contesto del test tecnico ha chiesto "memorizzare una valutazione per le ricette"
Quali sono i tuoi pensieri?