Stiamo intervistando per un ruolo senior di sviluppo Java e tutte e tre le persone che abbiamo chiesto di completare questa domanda ci hanno dato la stessa risposta sbagliata. La domanda è stata fatta prima dell'intervista, quindi hanno avuto molto tempo. Le loro soluzioni sembravano ordinare l'input da parentId e childId invece di creare un albero e dall'input e quindi attraversare l'albero per trovare l'ordine corretto. La domanda non è abbastanza chiara?Quanto è chiara questa domanda di intervista?
Domanda:
Quello che segue è un test di abilità semplici e di presentazione per il ruolo dello sviluppatore Java che deve essere completato prima che l'intervista telefonica.
RICHIESTO:
JUnit test
Implementazione di interfaccia NodeSorter
DOMANDA:
Abbiamo un oggetto Java che sembra qualcosa di simile:
public class Node {
public int id;
public Integer parentId;
public Node(int id, Integer parentId) {
this.id = id;
this.parentId = parentId;
}
}
Ad esempio il seguente elenco di Node (s) potrebbe essere visualizzato graficamente come:
Node (id: 1, parentId: nullo), Node (id: 2, parentId: 1), Node (id : 3, parentId: 1), Node (id: 4, parentId: 2), Node (id: 5, parentId: 3)
Node (id: 1)
/ \
/ \
/ \
/ \
Node (id: 2) Node (id : 3)
/ \
/ \
/ \
/ \
Node (id: 4) Node (id : 5)
Ipotesi:
ci saranno sempre almeno un nodo
Ci sarà uno ed un solo nodo con un parentId nulla
ogni nodo avrà un parentId valida eccezione per il nodo che ha un parentId nulla
Requisiti:
- Scrive una classe che implementa la seguente interfaccia che riceverà un elenco di nodi e li ordinerà dall'alto verso il basso (i nodi più alti nell'albero devono trovarsi prima dei nodi più in basso nell'albero. Per esempio. Il nodo 1 nella parte superiore dell'albero deve trovarsi prima del nodo 4 che si trova nella parte inferiore dell'albero). I nodi sullo stesso livello saranno in ordine di id, quindi il nodo con id = 2 apparirà prima del nodo con id = 3 nel diagramma sopra.
Interfaccia:
public interface NodeSorter {
public List<Node> sort(List<Node> unSortedNodes);
}
Test Data:
Test Case 1:
Schema di ingresso:
Node (id: 1)
/ \
/ \
/ \
/ \
Node (id: 2) Node (id : 3)
/ \
/ \
/ \
/ \
Node (id: 4) Node (id : 5)
ingresso: N ode (id: 2, parentId: 1), Nodo (id: 4, parentId: 2), Nodo (id: 1, parentId: null), Nodo (id: 3, parentId: 1), Nodo (id: 5, parentId: 3)
uscita: Node (id: 1, parentId: nullo), Node (id: 2, parentId: 1), Node (id: 3, parentId: 1), Node (id: 4, parentId : 2), Node (id: 5, parentId: 3)
caso test 2:
Schema di ingresso:
Node (id: 1)
/ \
/ \
/ \
/ \
Node (id: 5) Node (id : 2)
/ \
/ \
/ \
/ \
Node (id: 4) Node (id : 3)
ingresso: Nodo (id: 5, p arentId: 1), Nodo (id: 4, parentId: 5), Nodo (id: 1, parentId: null), Nodo (id: 3, parentId: 2), Nodo (id: 2, parentId: 1)
Output: Nodo (id: 1, parentId: null), Nodo (id: 2, parentId: 1), Nodo (id: 5, parentId: 1), Nodo (id: 3, parentId: 2), Nodo (id: 4, parentId: 5)
quanto spesso risolvi questo problema nel lavoro per il quale stai intervistando? –
realizziamo effettivamente alberi dai dati id/parentId nella nostra applicazione. ma per lo più ho scelto questa domanda perché pensavo che sarebbe stata ad un livello appropriato da quando mi è stata fatta una domanda simile a un'intervista che ho avuto. – benmmurphy
ohh vendetta domanda uh? – OscarRyz