Questa è una delle domande che ho incontrato mentre preparavo un colloquio di programmazione.
Design a system for Greek philosophers to exchange messages using stone tablets carried by dumb slaves.
Bene, i ragazzi che hanno avuto questa domanda hanno suggerito di usare l'analogia di un protocollo TCP / IP per descrivere la comunicazione e alcuni hanno suggerito la comunicazione dei dati a pacchetto per spiegare il progetto.
Ecco cosa penso che sia il risultato degli indizi:
- I filosofi greci agirebbero come "macchine" che stanno cercando di farlo comunicare.
- Gli schiavi muti sarebbero i portatori di messaggi che sono la "rete" nella nostra analogia.
- Le tavolette di pietra sono messaggi trasportati come i "pacchetti di dati".
- Gli schiavi potrebbero raggiungere i filosofi chiedendo il percorso da alcuni ragazzi casuali che li porteranno al posto dei filosofi proprio come i pacchetti arrivano a destinazione usando router nella rete.
- E il messaggio potrebbe essere diviso in più tablet e quindi, un messaggio potrebbe essere portato da più di uno slave che potrebbe prendere percorsi diversi e arrivare in qualsiasi ordine. Ci sarà un modo per organizzare il messaggio nell'ordine corretto al loro arrivo alla fine del ricevente. (numero di sequenza nelle tavolette?)
- Il sistema dovrebbe anche essere in grado di gestire i tablet mancanti e in tal caso il filosofo mittente dovrebbe provare a inviare l'intero messaggio dopo un timeout?
Modifica
Vorrei porre le seguenti domande:
- Sto pensando alle linee corrette?
- Ci sono cose importanti che mi mancano nelle cose che ho elencato sopra?
- Questa domanda per progettare un sistema mi sembra imprecisa. Come potrebbe qualcuno raffigurare un tale sistema in un'intervista? Usando i diagrammi per mostrare le interazioni tra entità?
- Sto gestendo correttamente il problema dei tablet mancanti (menzionato al punto 6. sopra)?