Il programma riceve oggetti. In ogni oggetto può essere indicato un numero di telefono e/o login (opzione uno di questi valori, o entrambi contemporaneamente), oltre a un carico utile sotto forma di dati binari. Gli oggetti in arrivo devono essere memorizzati nella memoria operativa rispettando le seguenti restrizioni: Se l'oggetto in arrivo ha un login e/o telefono uguali a quelli di uno degli oggetti già memorizzati, l'oggetto memorizzato deve essere eliminato, e quello in arrivo non deve essere salvato. Se un oggetto rimane in memoria operativa per più di 60 secondi, deve essere eliminato. Si considera che gli oggetti arrivano frequentemente. Inoltre, gli oggetti che coincidono per login/telefono sono molto meno frequenti rispetto al numero totale di oggetti in arrivo. void process(Object o) { }
C/C++
[nome] parlami di te, dei prodotti su cui hai lavorato e dei compiti che hai svolto.
Durante la revisione, si vede un diff che sembra un copia-incolla grossolano o un hack strano: il codice esegue l'azione necessaria, ma non è evidente come funzioni o se funzioni correttamente. Quali sono i tuoi prossimi passi?
Quali proprietà deve avere un compito per, al contrario, suscitare la reazione di 'Oh, non voglio farlo'?
E cosa, al contrario, respinge in questi eventi?
Quali qualità dovrebbe avere un collega per essere comodo lavorarci?
Come capire se un cambiamento (ad esempio, passare da Boost alla libreria standard) funziona davvero?
Hai esperienza di un refactoring su larga scala di una grande base legacy? Se no, come ti comporteresti se dovessi farlo?
Come ti relazioni con le attività fuori dal lavoro (forum, eventi aziendali, sport) e cosa ti attrae di più in esse?
Hai mai partecipato a discussioni/dispute tecniche all'interno del team? Come sono andate e come sono state risolte?
Perché hai lasciato il tuo precedente lavoro?
C'è un compito di revisione del codice: un collega ha presentato una soluzione che funziona ed è coperta da test unitari, ma l'implementazione non è affatto come la faresti tu. Cosa farai?
Cosa ti ha spinto a cercare un nuovo posto?
Situazione: due manager arrivano e assegnano due compiti urgenti, ma non c'è tempo. Cosa faresti?
Come si potrebbe implementare l'ottimizzazione RVO/NRVO in un compilatore?
C'era abbastanza informazione per l'analisi durante la progettazione, o la decisione è stata presa più che altro a occhi chiusi, ma con successo?
Qual è il piano per il refactoring e cosa deve esserci per farlo con sicurezza?
Cosa verrà visualizzato sullo schermo? (Domanda 1: costruttori, RVO/NRVO)
Cosa verrà visualizzato sullo schermo? (Domanda 3: sizeof dell'array, puntatore, riferimento all'array)
Come evitare di trovarsi in una situazione in cui, dopo tre mesi, tutto è "disordinato" e niente funziona, se il leader ha deciso di riscrivere radicalmente il codice (ad esempio, eliminare Boost)?