Le 50 domande e risposte per l'intervista di programmazione da conoscere
Le aziende di software sono sempre alla ricerca di un buon talento nella programmazione, con interviste telefoniche e online che spesso decidono il tuo destino in pochi minuti.
Un buon programmatore deve essere il più versatile possibile, dalla comprensione dei sistemi alla programmazione generale, concetti e tecnologie diversi, oltre ad essere aggiornato.
Di seguito è riportato un elenco delle 50 principali domande del colloquio di programmazione e la loro risposta. Fanno luce sui vari concetti che ogni principiante deve conoscere per eccellere.
1. Che cos'è la programmazione informatica?
La programmazione informatica è il processo di codifica dei processi logici che devono essere eseguiti da un computer. Ciò si ottiene utilizzando un linguaggio informatico che contiene le istruzioni necessarie.
Il processo può essere ulteriormente suddiviso in progettazione, codifica, debugging e aggiornamento.
2. Che cos'è il debug?
Il debug è il processo di rilevamento ed eliminazione degli errori nell'origine software di un programma per computer. Esistono molti metodi per farlo, ma la maggior parte degli ambienti di sviluppo è dotata di un debugger integrato per semplificare le cose.
3. Che cos'è un compilatore?
Un compilatore è un programma software che prende il programma scritto e lo trasforma in codice macchina che un computer può comprendere.
Un tipico pacchetto di compilatore, tuttavia, è composto da un preprocessore, il compilatore principale che trasforma il linguaggio del computer in codice assembly e un assembler.
4. Che cos'è un preprocessore?
Un preprocessore è un programma che analizza il codice scritto del computer per trovare e soddisfare le sue dipendenze, come le librerie necessarie.
Dopo che il preprocessore si è assicurato che tutto, incluso l'ambiente di esecuzione, sia a posto, un compilatore può quindi convertire il codice in codice assembly.
5. Che cos'è un Assembler?
Un assembler è un programma che prende il livello più basso di codice del computer leggibile dall'uomo chiamato linguaggio assembly e lo trasforma nel codice macchina con cui un computer può lavorare.
Il linguaggio assembly viene in genere prodotto da un compilatore, sebbene sia possibile anche codificare direttamente. Un programma assembly potrebbe includere codice come:
MOV AH, 02H
ma quando lo compili in codice macchina, ottieni solo zeri e uno (es. 0110011110101010).
6. Come viene eseguito un programma?
Innanzitutto, il sistema operativo carica il programma specificato dalla memoria del disco rigido nella memoria di sistema (RAM) e quindi ne consente l'esecuzione indicando alla CPU di continuare l'esecuzione dal primo indirizzo di memoria del programma. La CPU esegue qualsiasi comando che vede, quindi passa a quello successivo, ripetendo spesso questa procedura milioni di volte al secondo.
Le CPU a 32 bit eseguono istruzioni a 32 bit (4 byte, doppia parola) in una volta, mentre le CPU a 64 bit eseguono istruzioni a 64 bit (8 byte, a doppia parola) in una volta. Queste istruzioni sono integrate nella CPU ed è l'assemblatore che trasforma il codice di programmazione nei numeri binari che rappresentano gli indirizzi di comando nativi della CPU.
7. Definire a Sottoprogramma
Una subroutine è una sequenza di istruzioni in un programma che può essere richiamata ed eseguita in qualsiasi momento. In altre parole, una subroutine può essere una funzione, un metodo o una procedura utilizzata per implementare compiti specifici come l'invio di un email, l'apertura di un file o la forzatura bruta di una pagina di accesso.
8. Definisci Codice macchina
Il codice macchina è una sequenza di numeri binari che contiene le istruzioni di esecuzione di un microprocessore specifico e gli indirizzi di memoria associati.
Il codice macchina viene tradizionalmente emesso da un assemblatore progettato per quella particolare famiglia di microprocessori.
9. Spiegare Lingue compilate vs interpretate
Un linguaggio informatico compilato deve essere trasformato in codice macchina prima di essere eseguito su un computer, mentre un linguaggio interpretato non necessita di una preventiva compilazione.
Quando si esegue un programma interpretato, viene prima elaborato da un interprete, che poi lo compila ed esegue al volo. Questi passaggi aggiuntivi rendono i linguaggi interpretati come Python più lenti dei linguaggi compilati come C.
10. Che cos'è un loop?
Un ciclo è una struttura di codice che può ripetere istruzioni specifiche finché non viene raggiunto un criterio specifico. Questo criterio può includere un numero fisso di ripetizioni o la modifica di una variabile definita.
11. Elenca i tipi più diffusi di Loop
Diversi linguaggi informatici interpreteranno i loop in modi diversi. I tipi di loop della famiglia C popolari, tuttavia, includono:
- While() Ciclo – consente l'esecuzione di codice specifico, purché booleano mentre () condizione è soddisfatta.
Per esempio while(2>1){print(“yahoo!”)};. - Per(;;) Ciclo – contiene tre espressioni (inizializzazione; valutazione; aggiornare) che definiscono le condizioni da verificare, nonché un metodo flessibile per incrementare il conteggio. Eseguirà anche il codice almeno una volta.
- Ciclo Do{} While() – questo tipo di ciclo esegue il fare{} codice almeno una volta prima di determinare se il mentre () condizione è ancora vera.
12. Spiega Iterazione vs Ricorsione
Un'iterazione è l'uso di un ciclo per eseguire gli stessi passaggi del codice, mentre la ricorsione è il processo di una funzione che si richiama più e più volte. Il problema con la ricorsione, tuttavia, è che puoi arrivare solo a una certa profondità fino a quando non ti imbatti in problemi di memoria.
13. Spiega i lavori di Rompi e continua in un ciclo
A rompere termina l'esecuzione di un ciclo e continua a eseguire il resto del codice del computer. UN continua istruzione, d'altra parte, continua a ripetere il ciclo dall'inizio.
14. Che cos'è l'OOP?
OOP sta per Object Oriented Programming ed è un paradigma di programmazione che implementa la progettazione del software attorno a dati e oggetti, piuttosto che attorno a funzioni o procedure.
15. Che cos'è la programmazione procedurale?
La programmazione procedurale è un paradigma di programmazione che organizza il codice del computer attorno alle sequenze o ai passaggi delle istruzioni da eseguire. Come suggerisce il nome, è un approccio top-down che inizia il codice dalla fase iniziale degli eventi e termina con la fine prevista degli eventi.
16. Spiegare la programmazione funzionale
La programmazione funzionale è un paradigma di programmazione informatica che si avvicina lo sviluppo del software applicando funzioni sequenziali che non modificano né lo stato né i dati degli argomenti forniti.
L'obiettivo è creare programmi più solidi che producano i risultati attesi senza effetti collaterali imprevisti.
17. Spiegare Linguaggio di alto livello
Un linguaggio di programmazione di alto livello è un linguaggio informatico che fa appello più alla comprensione umana che alle specificità o alla natura del computer.
I linguaggi di programmazione di alto livello come C e Python sono facili da capire, mentre un linguaggio assembly di basso livello può creare molta confusione per i principianti.
18. Elenco popolare Lingue di basso livello
Esistono solo due linguaggi di programmazione di basso livello: assembly e machine code.
19. Definire un attacco SQL injection
Un attacco SQL injection è un processo di immissione di istruzioni SQL nei campi di input come nome utente o input di indirizzo, nella speranza che uno sviluppatore non abbia disinfettato correttamente gli input durante la programmazione. E in caso di successo, un tale attacco consente all'attaccante di ottenere l'accesso come amministratore al server.
20. Che cos'è una tabella in SQL?
Una tabella in SQL si riferisce a una raccolta di dati raggruppati in colonne e righe. Ogni colonna ha un tipo di dati distinto e puoi avere più tabelle in un unico database. Puoi anche interrogare più di una tabella contemporaneamente.
Crei una tabella con:
CREATE TABLE nome_tabella (tipo di dati colonna1, tipo di dati colonna2, tipo di dati colonna3, …);
21. Spiega la differenza tra un oggetto e una classe
Un oggetto è un'istanza di una classe, mentre una classe è un progetto da cui viene creato un oggetto. Un oggetto può avere stati e proprietà, come colore, altezza, peso, velocità e così via.
Queste proprietà devono essere definite o inizializzate almeno con valori predefiniti.
22. Quanti bit fanno un megabyte?
Ci sono 8,000,000 di bit in 1 Megabyte perché un byte è 8 bit e un Mega è 106.
23. Definire un tipo di dati mobili
Un float è un tipo di dati che rappresenta un numero con frazioni decimali. Viene utilizzato in situazioni in cui è necessario un livello di precisione superiore a quello che possono fornire gli interi standard. Un esempio di float è:
0.013
or
25.932
24. Che cosa significa HexaDecimal 0xFF?
0xFF sta per Decimal 255 o Binary 11111111. 0x sta per base16 o notazione esadecimale, che va da 1 a 9 e poi continua con A a F per rappresentare 15. Quindi, 0xF è decimale 15, mentre 0xFF è decimale 255.
25. Nome Tipi di errori nella programmazione
Ci sono 3 tipi principali di errori in un programma per computer, sono:
- Errore di sintassi
- Errore logico
- Errore di runtime
26. Che cos'è un errore di sintassi?
Un errore di sintassi si verifica quando c'è una deviazione dalla sintassi spesso rigida dei linguaggi di programmazione. Potrebbe derivare dal semplice smarrimento di lettere ai parametri errati che vengono passati a una funzione. La maggior parte dei compilatori includerà il numero di riga del codice sorgente in cui si è verificato l'errore.
27. Che cos'è un errore logico?
Un errore logico è un errore che deriva dal modo in cui un programma funziona. Quindi, mentre il programma potrebbe essere eseguito in modo impeccabile, non riesce a raggiungere il suo scopo. Gli errori logici possono verificarsi in molti modi ed essere causati da molte ragioni.
28. Che cos'è un errore di runtime?
Un errore di runtime è un errore del programma del computer che si verifica durante l'esecuzione del programma ea causa di circostanze impreviste. Quindi, mentre il programma funziona perfettamente, ad esempio, problemi di memoria e di rete possono causare un comportamento anomalo del programma.
29. Spiegare Linguaggi forti e linguaggi debolmente tipizzati
Un linguaggio fortemente tipizzato è rigoroso riguardo ai diversi tipi di dati e al modo in cui è possibile convertirli, mentre un linguaggio poco tipizzato pone meno restrizioni sui tipi di dati e sulle relative definizioni.
Molte lingue con tipizzazione debole convertono automaticamente i tipi di dati, mentre le lingue con tipizzazione forte spesso richiedono conversioni esplicite.
30. Che cos'è l'architettura MVC?
MVC fa riferimento a Model-View-Controller ed è un modello di sviluppo software per interfacce utente. Separa la logica del programma in 3 parti.
La modello parte gestisce la logica dei dati alla base degli oggetti in questione, mentre la vista gestisce la visualizzazione delle informazioni per l'utente, e il controllore gestisce il flusso di dati tra le viste e i modelli. Il design MVC viene spesso utilizzato con la programmazione orientata agli oggetti.
31. Definire un Algoritmo
Un algoritmo è una sequenza di procedure progettate per risolvere un problema specifico. Queste procedure sono generalmente suddivise in passaggi più piccoli e il computer le esegue ogni volta esattamente in questo modo.
Gli esempi di algoritmi includono riconoscimento facciale, la ricerca su Google, il modo in cui ti allacci le scarpe, la codifica o la crittografia dei dati e così via.
32. Cosa è Machine learning?
L'apprendimento automatico o ML è una sezione di intelligenza artificiale che si concentra sull’aiutare i sistemi a identificare modelli e prendere decisioni da soli attraverso il consumo di dati.
Questo quindi migliora le loro prestazioni o efficienza. I sistemi di apprendimento automatico possono essere supervisionati, non supervisionati e basati sul rinforzo.
33. Cosa sono Espressioni regolari?
Un'espressione regolare o Regex è una stringa utilizzata per definire i modelli di ricerca nei documenti di testo. Diversi linguaggi di programmazione implementano espressioni regolari o utilizzano librerie regex popolari. Un esempio di regex per abbinare tutti i caratteri in un testo è:
(. *)
mentre quanto segue corrisponde solo ai file mp3:
.+\.(mp3)$
34. Cosa fa l'operatore del modulo (%)?
L'operatore del modulo % prende due operandi e divide il primo operando usando il secondo. Di conseguenza, restituisce il resto dell'operazione.
Viene spesso utilizzato per testare numeri pari e dispari dividendo qualsiasi numero intero per 2, dove un risultato 0 indica un numero pari e 1 indica un numero dispari.
35. Spiegare Processo di biforcazione
Il fork viene dal forchetta() funzione nei sistemi Unix e Linux che può essere utilizzata da un processo in esecuzione per creare una copia di se stesso. Quindi, il fork del processo è la duplicazione di un processo per creare due processi simili ed eseguiti contemporaneamente.
Un ulteriore tipo di biforcazione si riferisce al prendere il codice sorgente di un open-source progetto e creando da esso un programma completamente nuovo.
36. Spiegare Deposizione delle uova di thread
La generazione del thread è il processo di creazione di un nuovo thread della CPU per eseguire un processo. La generazione delle uova viene spesso utilizzata da programmi ad alta intensità di elaborazione per sfruttare le capacità di multi-threading di un processore e il suo successo dipende dalla CPU su cui è in esecuzione, da quanti core ha e da quanti thread per core offre.
37. Cosa fare Parole riservate Significare?
Le parole riservate sono termini che non è consentito utilizzare come identificatore in un linguaggio di programmazione. Ciò include funzioni, variabili ed etichette. Sono riservati perché già definiti e hanno significati specifici.
38. Elenca le parole riservate popolari
Lingue diverse hanno parole riservate diverse in base alla loro sintassi. Ecco le parole riservate più popolari nella programmazione:
- IF
- TRUE
- FALSO
- INTERRUTTORE
- ELSE
- CASSA
- BOOLEAN
- RITORNO
- FUNZIONE
- ROTTURA
- GOTO
39. Che cos'è una stringa?
Una stringa è una sequenza di caratteri, spesso contenuta in una matrice e utilizzata per definire dati di testo. La stringa più popolare è "hello world".
40. Che cos'è una variabile?
Una variabile è qualsiasi valore che può cambiare durante l'esecuzione di un programma. Una variabile può essere di qualsiasi tipo di dati, comprese stringhe e numeri interi. Ad esempio, un programma viene inizializzato come segue:
int a = 0;
intero b = 1;
quindi durante l'esecuzione vengono apportate le modifiche:
b = a+b; //b è variato
41. Che cos'è una costante?
Una costante è una variabile che non dovrebbe cambiare durante l'esecuzione del programma. Un buon esempio è la velocità della luce o del suono. Linguaggi di programmazione diversi consentono di definire le costanti in modi diversi. Ad esempio, in C:
const float medio_c = 261.62; //Il tasto centrale c su un pianoforte è 261.6255 Hz
42. Definire una matrice
Un array è un tipo di variabile che viene utilizzato per memorizzare più valori alla volta. Molte lingue consentono di memorizzare solo valori di tipi di dati simili, mentre altre lingue possono gestire array con tipi diversi. Puoi anche avere array multidimensionali, che sono array di array e possono diventare disordinati.
Definire un array in mql4 è semplice con:
stringa TextArray[100]; //un array di centinaia di stringhe
43. Cosa è Sovraccarico delle funzioni?
L'overloading delle funzioni è un metodo che consente a uno sviluppatore di definire più funzioni che condividono lo stesso nome ma hanno funzionalità diverse. Ciò si ottiene creando le diverse versioni della funzione con argomenti diversi. Il compilatore sa quindi quale funzione è necessaria dal tipo e dal numero di argomenti forniti.
44. Definire a Chiama per riferimento
Una chiamata per riferimento è un metodo per passare l'indirizzo di memoria degli argomenti a una funzione, al contrario del metodo standard per passare una copia del valore dell'argomento. L'obiettivo delle chiamate di riferimento è che l'argomento venga modificato direttamente dalla funzione.
45. Spiegare Operatori aritmetici
Questi sono caratteri speciali che funzionano per eseguire operazioni aritmetiche in un linguaggio di programmazione. Gli operatori aritmetici includono:
- L'addizione o unaria più (+)
- Sottrazione o meno unario (-)
- Moltiplicazione (*)
- Divisione (/)
- Modulo (%).
46. Spiegare Operatori logici
Gli operatori logici sono parole o simboli utilizzati per eseguire operazioni basate sulla logica condizionale. La maggior parte delle lingue ha solo 3 operatori logici:
- E (&& in C, C++, JavaScript)
- OR (|| in C, C++, JavaScript)
- NON (! in C, C++, JavaScript)
47. Logico 1 AND 0 =?
Un'operazione logica 1 E 0 ti darà falso perché il secondo operando è 0 ed è necessario che entrambi gli operandi dell'operazione AND siano 1 o TRUE per ottenere un output positivo.
48. Logico NON 1 =?
Un'operazione logica NOT 1 ti darà falso perché l'operatore NOT nega tutto ciò che gli dai, il che significa che trasforma 1 in 0 e 0 in 1. Quindi, dandogli un operando 1 o TRUE risulta 0 o FALSE.
49. Logica 1 NAND 1 =?
Verrà prodotta un'operazione logica 1 NAND 1 falso perché entrambi gli operandi sono TRUE e l'operatore NAND nega sempre due input simili per produrre un output opposto.
Quindi, se l'operazione fosse 0 NAND 0, quindi l'output sarebbe 1 o TRUE.
50. Logico 1 XOR 1 =?
Verrà prodotta un'operazione logica 1 XOR 1 falso perché mentre un'operazione OR normale produrrà TRUE su uno o entrambi gli input essendo TRUE, un'operazione XOR (OR esclusivo) produce TRUE solo quando solo un input e non l'altro è TRUE.
Conclusione
Abbiamo raggiunto la fine di questo elenco delle 50 domande più importanti per il colloquio di programmazione e le loro risposte. E come puoi vedere, il mondo della programmazione è vasto ma entusiasmante.
Non ci sono due interviste uguali. Quindi, mentre questo elenco ti indica le giuste direzioni dell'argomento, dovresti anche cercare di ottenere una migliore comprensione di ogni problema.