Domande di colloquio di programmazione C.
Cari lettori, questi C Programming Interview Questions sono stati progettati appositamente per farti conoscere la natura delle domande che potresti incontrare durante il tuo colloquio sull'argomento C Programming. Secondo la mia esperienza, i bravi intervistatori difficilmente pianificano di porre domande particolari durante il colloquio, normalmente le domande iniziano con un concetto di base dell'argomento e successivamente continuano sulla base di ulteriori discussioni e di ciò a cui rispondi -
- Cos'è un puntatore sul puntatore?
È una variabile puntatore che può contenere l'indirizzo di un'altra variabile puntatore. Rimanda due volte per indicare i dati contenuti nella variabile puntatore designata.
Eg: int x = 5, *p=&x, **q=&p;
Pertanto è possibile accedere a 'x' con ** q.
Entrambi alloca memoria dall'area heap / memoria dinamica. Per impostazione predefinita, calloc riempie la memoria allocata con 0.
Di default ogni variabile locale della funzione è automatica (auto). Nella funzione sottostante entrambe le variabili "i" e "j" sono variabili automatiche.
void f() {
int i;
auto int j;
}
NOTA: una variabile globale non può essere una variabile automatica.
L'interruzione può essere visualizzata solo con nel controllo del ciclo e nell'istruzione switch. Lo scopo dell'interruzione è di far uscire il controllo da detti blocchi.
for(expression-1;expression-2;expression-3) {
//set of statements
}
Quando il controllo raggiunge l'espressione-1 viene eseguito per primo. Quindi, dopo l'espressione-2, e se l'espressione-2 restituisce un 'insieme di istruzioni' diverso da zero e viene eseguita l'espressione-3, segue l'espressione-2.
Se un file di intestazione è incluso in <>, il compilatore cerca il file di intestazione particolare solo con il percorso di inclusione incorporato. Se un file di intestazione è incluso in "", il compilatore cerca prima il file di intestazione specifico nella directory di lavoro corrente, se non lo trova nel percorso include incorporato.
Ottieni i due complimenti dello stesso numero intero positivo. Ad esempio: 1011 (-5)
Step-1 - Un complimento di 5: 1010
Step-2 - Aggiungi 1 a sopra, dando 1011, che è -5
Una variabile locale statica mantiene il suo valore tra la chiamata della funzione e il valore predefinito è 0. La seguente funzione stamperà 1 2 3 se chiamata tre volte.
void f() {
static int i;
++i;
printf(“%d “,i);
}
Se una variabile globale è statica, la sua visibilità è limitata allo stesso codice sorgente.
Un puntatore che punta a niente è chiamato così. Ad esempio: char * p = NULL;
Utilizzato per risolvere l'ambito del simbolo globale.
Eg:
main() {
extern int i;
Printf(“%d”,i);
}
int i = 20;
Stampa l'output formattato sull'array di caratteri.
L'indirizzo iniziale dell'array viene chiamato come indirizzo di base dell'array.
Se una variabile viene utilizzata più frequentemente, dovrebbe essere dichiarata utilizzando l'identificatore di archiviazione del registro, quindi probabilmente il compilatore fornisce il registro della CPU per la sua archiviazione per accelerare la ricerca della variabile.
S ++, poiché internamente è un'istruzione singola macchina (INC).
Un puntatore che inizialmente contiene un indirizzo valido, ma in seguito l'indirizzo conservato viene rilasciato o liberato. Quindi un tale puntatore viene chiamato puntatore penzolante.
Viene utilizzato per alias il tipo esistente. Utilizzato anche per semplificare la complessa dichiarazione del tipo.
L'espressione che appare sul lato destro dell'operatore di assegnazione viene chiamata rvalue. Rvalue è assegnato a lvalue, che appare sul lato sinistro dell'operatore di assegnazione. Il valore dovrebbe indicare una variabile, non una costante.
I parametri inviati alla funzione alla fine della chiamata vengono chiamati come parametri effettivi mentre alla ricezione della definizione della funzione vengono chiamati come parametri formali.
Sì, può essere ma non può essere eseguito, poiché l'esecuzione richiede la definizione della funzione main ().
Quando non sappiamo quale tipo di indirizzo di memoria terrà la variabile pointer, dichiariamo un puntatore void per tale.
Ogni variabile locale per impostazione predefinita è una variabile automatica viene archiviata nella memoria dello stack.
Una struttura che contiene un elemento di un'altra struttura come suo membro viene chiamata così.
La dichiarazione associa il tipo alla variabile mentre la definizione fornisce il valore alla variabile.
Una struttura contenente la stessa variabile puntatore di struttura del suo elemento viene chiamata struttura autoreferenziale.
No, il file di intestazione dichiara solo la funzione. La definizione è nella libreria che è collegata dal linker.
Dividere il programma in sottoprogrammi (moduli / funzione) per ottenere il compito dato è un approccio modulare. La definizione di funzioni più generiche offre la possibilità di riutilizzare le funzioni, come le funzioni di libreria incorporate.
Il programma AC è costituito da vari token e un token può essere una parola chiave, un identificatore, una costante, una stringa letterale o un simbolo.
Il preprocessore è una direttiva al compilatore per eseguire determinate cose prima che inizi il processo di compilazione effettivo.
Può essere utilizzato per inserire numeri interi in tutti i formati supportati.
Esci usando \ (barra rovesciata).
Sì, se non viene visualizzato come l'ultimo caso e se non si desidera che il controllo passi al caso successivo dopo l'impostazione predefinita, se presente.
Se la variabile struttura / unione è una variabile puntatore, per accedere agli elementi struttura / unione viene utilizzato l'operatore freccia.
Possiamo creare membri di struttura intera di dimensioni diverse oltre a dimensioni non standard utilizzando campi di bit. Tale dimensione della struttura viene regolata automaticamente con il multiplo della dimensione intera della macchina.
Gli argomenti che passiamo alla funzione main () durante l'esecuzione del programma vengono chiamati come argomenti della riga di comando. I parametri sono sempre stringhe contenute nel secondo argomento (sotto in args) della funzione che è un array di puntatori a caratteri. Il primo argomento rappresenta il conteggio degli argomenti (sotto in count) e viene aggiornato automaticamente dal sistema operativo.
main( int count, char *args[]) {
}
Call by value- Inviamo solo valori alla funzione come parametri. Scegliamo questo se non vogliamo che i parametri effettivi vengano modificati con parametri formali ma solo usati.
Call by reference- Inviamo l'indirizzo dei parametri effettivi invece dei valori. Scegliamo questo se vogliamo che i parametri effettivi vengano modificati con parametri formali.
Confronta due stringhe ignorando il caso.
Apre un file sia in lettura che in scrittura. Se un file non esiste ne crea uno, altrimenti se il file è esistente verrà sovrascritto.
Non può essere utilizzato su costanti.
Non può essere utilizzato su variabili dichiarate utilizzando la classe di archiviazione dei registri.
-
No, è una struttura definita in stdio.h.
Errore, non è valido che uno degli operandi per l'operatore modulo (%) sia un numero reale.
C'è un solo operatore ed è un operatore condizionale (? :).
vai a
Un puntatore che contiene il riferimento alla funzione è chiamato puntatore a una funzione. In generale è dichiarato come segue.
T (*fun_ptr) (T1,T2…); Where T is any date type.
Una volta che fun_ptr fa riferimento a una funzione, la stessa può essere invocata utilizzando il puntatore come segue.
fun_ptr();
[Or]
(*fun_ptr)();
L'operatore virgola può essere utilizzato per separare due o più espressioni.
Eg: printf(“hi”) , printf(“Hello”);
Un'istruzione null non è un'istruzione eseguibile come; (punto e virgola).
Eg: int count = 0;
while( ++count<=10 ) ;
Sopra non fa nulla 10 volte.
La definizione di una funzione preceduta da una parola chiave statica viene chiamata come funzione statica. Renderebbe statica una funzione se dovesse essere chiamata solo all'interno dello stesso codice sorgente.
Opiton –lm da utilizzare come> gcc –lm <file.c>
Viene utilizzata la barra rovesciata (\).
E.g. #define MESSAGE "Hi, \
Welcome to C"
Ellipses (...) viene utilizzato per lo stesso. Una definizione di funzione generale appare come segue
void f(int k,…) {
}
char *s1 = "hello",*s2 = "welcome";
strcat(s1,s2);
s1 punta a una costante di stringa e non può essere modificato.
realloc () .
Array è la raccolta di elementi di dati simili con un nome comune.
Le enumerazioni sono elenchi di costanti intere con nome. Gli enumeratori vengono definiti con la parola chiave enum .
fseek ()
Una variabile è l'archiviazione del nome.
Dennis M Ritchie.
B
American National Standards Institute.
taglia di
Sì, con perdita della parte frazionaria.
No, contiene cifre ottali non valide.
Restituisce un valore 1 se la relazione tra le espressioni è vera, altrimenti 0.
Se entrambi i bit corrispondenti sono uguali, dà 0 altrimenti 1.
Un ciclo che viene eseguito ripetutamente poiché l'espressione del ciclo viene sempre valutato come vero come
while(0 == 0) {
}
Le variabili che appartengono a un ambito diverso possono avere lo stesso nome del frammento di codice seguente.
int var;
void f() {
int var;
}
main() {
int var;
}
Le variabili locali ottengono un valore di spazzatura e le variabili globali ottengono un valore 0 per impostazione predefinita.
Il puntatore tenendo premuto l'indirizzo di base dell'array può accedere all'array.
- Confronto ii) Addizione / Sottrazione (esclusi i puntatori vuoti)
Le uniche due operazioni consentite sui puntatori sono
È il conteggio dei caratteri escluso il carattere "\ 0".
strcat () forma l'intestazione string.h
Operatore freccia (->).
stdin in una variabile puntatore che è aperta per impostazione predefinita per il dispositivo di input standard.
fclose ().
Può essere utilizzato per annullare la definizione di una definizione di macro esistente.
È possibile definire una struttura di raccolta di elementi di dati eterogenei.
__STDC__
Typecasting è un modo per convertire una variabile / costante da un tipo a un altro tipo.
La funzione che chiama se stessa viene chiamata come ricorsione.
gratuito().
Nome del programma.
In caso di errore fopen () restituisce NULL, altrimenti viene aperto correttamente.
Il linker genera il file eseguibile.
Idealmente è di 32 caratteri e dipende anche dall'implementazione.
Per impostazione predefinita, le funzioni vengono chiamate per valore.
La dichiarazione di funzione è facoltativa se la stessa viene invocata dopo la sua definizione.
Al momento della pre-elaborazione.
No, al chiamante può essere restituito un solo valore.
Un puntatore che non può essere modificato per contenere un altro indirizzo dopo che ne ha uno.
Void
Sì, solo nell'ordine degli elementi della struttura.
Non esiste tale. Dobbiamo confrontare elemento per elemento delle variabili di struttura.
Strstr ()
In primo luogo sono parole chiave non standard. Un puntatore vicino può accedere solo a 2 ^ 15 spazio di memoria e un puntatore lontano può accedere a 2 ^ 32 spazio di memoria. Entrambe le parole chiave sono specifiche dell'implementazione e non sono standard.
No, non possiamo.
for - Loop.
Un valore che non può essere modificato è chiamato così. Tali variabili sono qualificate con la parola chiave const.
No, dobbiamo usare sia la parola chiave "struct" che il nome del tag.
Sì, forse il programma non fa nulla.
Sì, qualsiasi funzione definita dall'utente può chiamare qualsiasi funzione.
Cervello Kernighan
Cosa c'è dopo ?
Inoltre puoi svolgere i compiti che hai svolto in passato con l'argomento e assicurarti di essere in grado di parlarne con sicurezza. Se sei più fresco, l'intervistatore non si aspetta che tu risponda a domande molto complesse, piuttosto devi rendere i tuoi concetti di base molto forti.
Secondo, non importa davvero molto se non puoi rispondere a poche domande, ma importa che qualunque cosa tu abbia risposto, devi aver risposto con sicurezza. Quindi sentiti sicuro durante il tuo colloquio. Noi di tutorialspoint ti auguriamo buona fortuna per avere un buon intervistatore e tutto il meglio per il tuo futuro impegno. Saluti :-)