투잡뛰는 개발 노동자

[Non esperti, sopravvivere come sviluppatori] 14. Riepilogo delle domande frequenti sui colloqui tecnici per sviluppatori junior

Creato: 2024-04-03

Creato: 2024-04-03 20:38

Non laureati in informatica, sopravvivere come sviluppatori


#14. Contenuti frequenti nei colloqui tecnici per sviluppatori junior


[Aree della memoria principale]

  • Area codice: l'area in cui viene memorizzato il codice sorgente del programma. La CPU estrae le istruzioni (sorgente, funzione, istruzioni di controllo) memorizzate nell'area codice e le elabora. Ad esempio, quando viene eseguito un programma scritto in C, l'area codice memorizza il codice sorgente di quel programma.
  • Area dati: l'area in cui vengono memorizzate le variabili globali e statiche. Viene assegnata all'avvio del programma e non viene distrutta fino alla sua terminazione. Ad esempio, quando viene eseguito un programma scritto in C, l'area dati memorizza le variabili globali o statiche dichiarate in quel programma.
  • Area stack: l'area di memoria temporanea utilizzata dal programma. Memorizza le variabili locali e i parametri correlati alle chiamate di funzione. Viene assegnata con la chiamata di funzione e viene distrutta alla sua terminazione. Ad esempio, quando viene chiamata una funzione in C, le variabili locali o i parametri utilizzati in quella funzione vengono assegnati all'area stack.
  • Area heap: l'area in cui l'utente alloca e dealloca dinamicamente lo spazio di memoria. Ad esempio, quando si utilizza la funzione malloc() in C per allocare dinamicamente la memoria, l'area di memoria allocata viene memorizzata nell'area heap.

[Strutture dati]

  • Stack: struttura dati che segue il principio LIFO (Last-In, First-Out). Ad esempio, il pulsante "Indietro" nel computer è simile a uno stack. Le pagine visitate in precedenza vengono memorizzate nello stack e, quando si preme il pulsante "Indietro", la pagina più recentemente memorizzata viene estratta e visualizzata.
  • Queue: struttura dati che segue il principio FIFO (First-In, First-Out). Ad esempio, prendere un numero in banca e entrare in fila è simile a una coda. La persona che arriva per prima viene servita per prima e la persona che arriva per ultima viene servita per ultima.
  • Tree: struttura dati che rappresenta i dati in una struttura gerarchica. Ad esempio, il DOM (Document Object Model) di HTML è simile a un albero. La struttura di una pagina HTML è rappresentata da un albero, partendo dal nodo radice, il tag html, e procedendo verso i nodi figli in modo sequenziale.
  • Heap: uno dei tipi di struttura ad albero binario, suddiviso in max heap e min heap. Ad esempio, in una coda di priorità, i dati con la priorità più alta si trovano nel nodo radice dell'heap e i dati con la priorità successiva si trovano nei nodi figli. Questo è un esempio di max heap.

[RDBMS e NoSQL]

  • RDBMS: database che definisce e gestisce i dati in modo strutturato con uno schema rigido. I dati possono essere memorizzati in modo distribuito e sono facili da modificare. Ad esempio, MySQL, Oracle e MS-SQL sono esempi tipici di RDBMS.
  • NoSQL: database che memorizza e gestisce i dati con uno schema flessibile. È adatto all'elaborazione e alla memorizzazione di grandi quantità di dati ed è altamente scalabile. Ad esempio, MongoDB, Cassandra e HBase sono esempi tipici di NoSQL.

[Programmazione procedurale e orientata agli oggetti]

  • Programmazione procedurale: tecnica di programmazione in cui l'elaborazione sequenziale è considerata importante. I linguaggi come C e Pascal sono linguaggi procedurali.
  • Programmazione orientata agli oggetti: metodo che raggruppa i dati e le procedure in modo logico utilizzando il concetto di oggetto (Object). I linguaggi come Java, C++ e Python sono linguaggi orientati agli oggetti. Ad esempio, in un programma di simulazione di un'auto, l'auto viene rappresentata come un oggetto e le sue proprietà (colore, accelerazione, ecc.) vengono rappresentate come dati e le sue funzioni (guidare, fermarsi, ecc.) vengono rappresentate come metodi.

[Overriding e Overloading]

  • Overriding: ridefinire e utilizzare un metodo posseduto dalla classe padre nella classe figlia. Quando si chiama un metodo dalla classe figlia, viene eseguito il metodo ridefinito nella classe figlia anziché il metodo della classe padre. Ad esempio, il metodo toString() in Java è un esempio di overriding.
  • Overloading: definire più metodi con lo stesso nome, ma con tipi e numero di parametri diversi, per rispondere a diverse chiamate. Vengono eseguiti più metodi con lo stesso nome ma con parametri diversi. Ad esempio, il metodo print() in Java è un esempio di overloading.

[Algoritmo di sostituzione delle pagine]

  • FIFO: sostituisce la pagina caricata nella memoria fisica più a lungo. La chiusura di un'applicazione dalla barra delle applicazioni del computer è simile all'algoritmo FIFO. Analogamente, il programma eseguito per primo viene visualizzato per ultimo e chiuso.
  • LRU: sostituisce la pagina che non è stata utilizzata per il periodo di tempo più lungo. Un'applicazione che chiude le app meno utilizzate tra quelle più vecchie è simile all'algoritmo LRU.
  • LFU: sostituisce la pagina con il minor numero di accessi. Ad esempio, la funzione di chiusura delle schede nel browser che chiude la scheda meno utilizzata tra le schede appena aperte è simile all'algoritmo LFU.
  • MFU: sostituisce la pagina con il maggior numero di accessi. L'algoritmo MFU non viene utilizzato molto.

[Processo e thread]

  • Processo: unità di lavoro di esecuzione assegnata dal sistema operativo, che rappresenta un programma. Quando più processi vengono eseguiti contemporaneamente, a ogni processo viene assegnata un'area di memoria e una CPU indipendenti.
  • Thread: unità di esecuzione che opera all'interno di un processo e condivide le risorse assegnate al processo. Ad esempio, ogni scheda di un browser web funziona come un thread, non come un processo.

[OSI 7Layer]

  • Application layer: livello che collega l'utente alla rete. Include protocolli come HTTP, FTP e SMTP.
  • Presentation layer: livello che definisce il modo in cui i dati vengono rappresentati. Include protocolli come JPEG, MPEG e SSL.
  • Session layer: livello che gestisce la sessione tra due sistemi che comunicano.
  • Transport layer: livello responsabile della trasmissione dei dati. Include protocolli come TCP e UDP.
  • Network layer: livello che stabilisce il percorso per la trasmissione dei dati. Include protocolli come IP e ICMP.
  • DataLink layer: livello che trasmette i dati tramite indirizzi fisici (indirizzi MAC). Include protocolli come Ethernet e Token Ring.
  • Physical layer: livello responsabile della connessione fisica e della comunicazione con il mezzo di trasmissione.

[TCP e UDP]

  • TCP: servizio orientato alla connessione che trasmette i dati in modo affidabile. Utilizza la 3-way handshaking e la 4-way handshaking per stabilire o terminare la connessione. Ad esempio, quando si accede a un sito web o si trasferiscono file, viene utilizzato il protocollo TCP.
  • UDP: servizio non orientato alla connessione che non richiede procedure di segnalazione per la trasmissione dei dati. La sua affidabilità è bassa, ma la sua velocità di elaborazione è elevata. Ad esempio, lo streaming video o i giochi online, dove la velocità di trasmissione è importante, utilizzano il protocollo UDP.

Commenti0