Questa domanda deriva da una domanda di intervista che ho ricevuto per un lavoro che ho rifiutato. Ho richiesto la revisione del codice per la mia soluzione nel sito dedicato allo scambio di stack ( link ). Ma spero che questa domanda sia sufficientemente riformulata e chiesta con una diversa motivazione di non essere un duplicato dell'altra domanda.
Considera il seguente scenario:
Dovresti memorizzare i punteggi dei giocatori nel back-end del server di un gioco. Il server è scritto in Java.
Ogni punteggio deve essere registrato, cioè un giocatore può avere un numero qualsiasi di punteggi per qualsiasi numero di livelli.
Una lista dei punteggi migliori dovrebbe essere prodotta con i quindici migliori punteggi per un dato livello, ma solo un punteggio per utente (nel senso che anche se il giocatore X ha i due punteggi più alti per il livello Y, viene conteggiata solo la prima posizione e il giocatore Z ha il secondo posto).
Nessuna informazione dovrebbe essere mantenuta e dovrebbero essere usate solo librerie standard Java 1.7+. Nessuna libreria o framework di terze parti sono accettabili.
Con il numero di giocatori come fattore principale, quale sarebbe la migliore struttura dati in termini di scalabilità e concorrenza?
Come accederai alla struttura per registrare un punteggio singolo dato un livello e un ID giocatore?
Come accederai alla struttura per compilare la lista dei punteggi più alti?