Ho appena avuto uno schermo del telefono tecnico con una start-up. Ecco le domande tecniche che mi sono state poste ... e le mie risposte. Cosa ne pensi di queste risposte ? Sentiti libero di postare risposte migliori: -)
Domanda 1 : in che modo rappresenterebbe un mazzo di carte standard da 52 (praticamente qualsiasi lingua)? Come mischia il mazzo?
Risposta : utilizza un array contenente una struttura o una classe "Card". Ogni istanza della carta ha un identificatore univoco ... o la sua posizione nell'array o una variabile membro intera univoca nell'intervallo [0, 51]. Mescola le carte spostando l'array una volta dall'indice zero all'indice 51. Scambia in modo casuale la carta con "un'altra carta" (non ricordavo come funziona esattamente l'algoritmo shuffle). Fai attenzione all'utilizzo della stessa probabilità per ogni carta ... è un trucco in questo algoritmo. Ho menzionato l'algoritmo da Programmazione perle .
Domanda 2 : come rappresentare una matrice sparsa di grandi dimensioni? la matrice può essere molto grande ... come 1000x1000 ... ma solo un numero relativamente piccolo (~ 20) delle voci è diverso da zero.
Risposta : condensa la matrice in un elenco di voci diverse da zero. per una data voce (i, j) nell'array ... "map" (i, j) su un singolo intero k ... quindi usa k come chiave in un dizionario o in una tabella hash. Per la mappa di array sparse 1000x1000 (i, j) per k utilizzando qualcosa come f (i, j) = i + j * 1001. 1001 è solo uno più il massimo di tutti i e j. Non ricordavo esattamente come funzionasse questa mappatura ... ma l'intervistatore ha avuto l'idea (credo).
Sono queste buone risposte ? Mi chiedo perché dopo aver terminato la seconda domanda l'intervistatore ha detto che temeva "bene, ecco tutte le domande che ho per ora".
Cheers!