Preguntas de la entrevista de programación en C
Estimados lectores, estos C Programming Interview Questions han sido diseñados especialmente para que se familiarice con la naturaleza de las preguntas que puede encontrar durante su entrevista para el tema de C Programming. Según mi experiencia, los buenos entrevistadores difícilmente planean hacer una pregunta en particular durante su entrevista, normalmente las preguntas comienzan con algún concepto básico del tema y luego continúan basándose en una discusión adicional y lo que usted responde.
-
¿Qué es un puntero sobre puntero?
Es una variable de puntero que puede contener la dirección de otra variable de puntero. Desreferencia dos veces para apuntar a los datos que contiene la variable de puntero designada.
Eg: int x = 5, *p=&x, **q=&p;
Por lo tanto, se puede acceder a 'x' mediante ** q.
Ambos asignan memoria desde el área de almacenamiento dinámico / memoria dinámica. Por defecto, calloc llena la memoria asignada con ceros.
Por defecto, cada variable local de la función es automática (auto). En la siguiente función, las variables 'i' y 'j' son variables automáticas.
void f() {
int i;
auto int j;
}
NOTA: una variable global no puede ser una variable automática.
Break solo puede aparecer en el control de bucle y la instrucción de cambio. El propósito de la ruptura es sacar el control de dichos bloques.
for(expression-1;expression-2;expression-3) {
//set of statements
}
Cuando el control alcanza la expresión-1 se ejecuta primero. Luego, después de expresión-2, y si expresión-2 se evalúa como un 'conjunto de declaraciones' distinto de cero y se ejecuta expresión-3, sigue expresión-2.
Si se incluye un archivo de encabezado en <>, el compilador busca el archivo de encabezado en particular solo con la ruta de inclusión incorporada. Si un archivo de encabezado está incluido en "", entonces el compilador busca el archivo de encabezado particular primero en el directorio de trabajo actual, si no lo encuentra, entonces en la ruta de inclusión incorporada.
Obtenga el cumplido de los dos del mismo entero positivo. Por ejemplo: 1011 (-5)
Step-1 - Un cumplido de 5: 1010
Step-2 - Agregue 1 a lo anterior, dando 1011, que es -5
Una variable local estática retiene su valor entre la llamada a la función y el valor predeterminado es 0. La siguiente función imprimirá 1 2 3 si se llama tres veces.
void f() {
static int i;
++i;
printf(“%d “,i);
}
Si una variable global es estática, su visibilidad se limita al mismo código fuente.
Un puntero que apunta a nada se llama así. Por ejemplo: char * p = NULL;
Se utiliza para resolver el alcance del símbolo global.
Eg:
main() {
extern int i;
Printf(“%d”,i);
}
int i = 20;
Imprime la salida formateada en la matriz de caracteres.
La dirección inicial de la matriz se llama como la dirección base de la matriz.
Si una variable se usa con más frecuencia, entonces debe declararse usando el especificador de almacenamiento de registros, entonces posiblemente el compilador proporcione un registro de CPU para su almacenamiento para acelerar la búsqueda de la variable.
S ++, ya que es una instrucción de máquina única (INC) internamente.
Un puntero que inicialmente contiene una dirección válida, pero luego la dirección retenida se libera o libera. Entonces, dicho puntero se denomina puntero colgante.
Se utiliza para alias del tipo existente. También se utiliza para simplificar la declaración compleja del tipo.
La expresión que aparece en el lado derecho del operador de asignación se llama rvalue. Rvalue se asigna a lvalue, que aparece en el lado izquierdo del operador de asignación. El lvalue debe designar a una variable, no a una constante.
Los parámetros enviados a la función al final de la llamada se llaman como parámetros reales mientras que en la recepción de la definición de función se llaman como parámetros formales.
Sí, se puede ejecutar pero no se puede ejecutar, ya que la ejecución requiere la definición de la función main ().
Cuando no sabemos qué tipo de dirección de memoria va a contener la variable de puntero, declaramos un puntero vacío para tal.
Cada variable local por defecto que es una variable automática se almacena en la memoria de pila.
Una estructura que contiene un elemento de otra estructura como su miembro se denomina así.
La declaración asocia el tipo a la variable, mientras que la definición le da el valor a la variable.
Una estructura que contiene la misma variable de puntero de estructura que su elemento se denomina estructura autorreferencial.
No, el archivo de encabezado solo declara la función. La definición está en la biblioteca que está vinculada por el enlazador.
Dividir el programa en subprogramas (módulos / función) para lograr la tarea dada es un enfoque modular. La definición de funciones más genéricas brinda la capacidad de reutilizar las funciones, como las funciones de biblioteca integradas.
El programa AC consta de varios tokens y un token es una palabra clave, un identificador, una constante, una cadena literal o un símbolo.
El preprocesador es una directiva para que el compilador realice ciertas cosas antes de que comience el proceso de compilación real.
Se puede usar para ingresar números enteros en todos los formatos admitidos.
Escápelo usando \ (barra invertida).
Sí, si no aparece como último caso y si no queremos que el control fluya al siguiente caso después de default si lo hubiera.
Si la variable de estructura / unión es una variable de puntero, para acceder a los elementos de estructura / unión se utiliza el operador de flecha.
Podemos crear miembros de estructura entera de diferente tamaño aparte del tamaño no estándar utilizando campos de bits. Tal tamaño de estructura se ajusta automáticamente con el múltiplo del tamaño entero de la máquina.
Los argumentos que pasamos a la función main () mientras ejecutamos el programa se llaman argumentos de línea de comando. Los parámetros son siempre cadenas contenidas en el segundo argumento (a continuación en args) de la función que es una matriz de punteros de caracteres. El primer argumento representa el recuento de argumentos (a continuación en recuento) y se actualiza automáticamente por el sistema operativo.
main( int count, char *args[]) {
}
Call by value- Enviamos solo valores a la función como parámetros. Elegimos esto si no queremos que los parámetros reales se modifiquen con parámetros formales, sino que simplemente se utilicen.
Call by reference- Enviamos la dirección de los parámetros reales en lugar de los valores. Elegimos esto si queremos que los parámetros reales se modifiquen con parámetros formales.
Compara dos cadenas ignorando el caso.
Abre un archivo tanto para lectura como para escritura. Si un archivo no existe, crea uno; de lo contrario, si el archivo existe, se sobrescribirá.
No se puede utilizar en constantes.
No se puede utilizar en variables declaradas mediante la clase de almacenamiento de registros.
- No, es una estructura definida en stdio.h.
Error, no es válido que cualquiera de los operandos del operador de módulo (%) sea un número real.
Solo hay un operador y es un operador condicional (?:).
ir
Un puntero que contiene la referencia de la función se llama puntero a una función. En general se declara de la siguiente manera.
T (*fun_ptr) (T1,T2…); Where T is any date type.
Una vez que fun_ptr hace referencia a una función, se puede invocar la misma usando el puntero de la siguiente manera.
fun_ptr();
[Or]
(*fun_ptr)();
El operador de coma se puede utilizar para separar dos o más expresiones.
Eg: printf(“hi”) , printf(“Hello”);
Una declaración nula no es ninguna declaración ejecutable como; (punto y coma).
Eg: int count = 0;
while( ++count<=10 ) ;
Arriba no hace nada 10 veces.
La definición de una función con el prefijo de palabra clave estática se llama como función estática. Haría una función estática si se llamara solo dentro del mismo código fuente.
Opiton –lm que se utilizará como> gcc –lm <archivo.c>
Se utiliza una barra inclinada hacia atrás (\).
E.g. #define MESSAGE "Hi, \
Welcome to C"
Elipses (…) se usa para lo mismo. Una definición de función general se ve como sigue
void f(int k,…) {
}
char *s1 = "hello",*s2 = "welcome";
strcat(s1,s2);
s1 apunta a una constante de cadena y no se puede modificar.
realloc () .
Array es una colección de elementos de datos similares con un nombre común.
Las enumeraciones son una lista de constantes enteras con nombre. Los enumeradores se definen con la palabra clave enum .
fseek ()
Una variable es el almacenamiento de nombres.
Dennis M. Ritchie.
segundo
Instituto Americano de Estándares Nacionales.
tamaño de
Sí, con pérdida de parte fraccionaria.
No, contiene dígitos octales no válidos.
Devuelve un valor 1 si la relación entre las expresiones es verdadera, de lo contrario 0.
Si los dos bits correspondientes son iguales, da 0 más 1.
Un bucle que se ejecuta repetidamente como la expresión de bucle siempre se evalúa como verdadero, como
while(0 == 0) {
}
Las variables que pertenecen a un ámbito diferente pueden tener el mismo nombre que en el siguiente fragmento de código.
int var;
void f() {
int var;
}
main() {
int var;
}
Las variables locales obtienen un valor basura y las variables globales obtienen un valor 0 por defecto.
El puntero al mantener la dirección base de la matriz puede acceder a la matriz.
- Comparación ii) Suma / Resta (excluyendo punteros vacíos)
Las únicas dos operaciones permitidas en punteros son
Es el recuento de caracteres excluyendo el carácter '\ 0'.
strcat () forman la cadena de encabezado. h
Operador de flecha (->).
stdin en una variable de puntero que está abierta por defecto para el dispositivo de entrada estándar.
fclose ().
Se puede utilizar para eliminar la definición de una macro existente.
Se puede definir una estructura de recopilación de elementos de datos heterogéneos.
__STDC__
El encasillado es una forma de convertir una variable / constante de un tipo a otro.
La función que se llama a sí misma se llama recursividad.
gratis().
Nombre del programa.
En caso de falla, fopen () devuelve NULL; de lo contrario, se abre con éxito.
El vinculador genera el archivo ejecutable.
Idealmente, tiene 32 caracteres y también depende de la implementación.
Por defecto, las funciones se llaman por valor.
La declaración de función es opcional si la misma se invoca después de su definición.
En el momento del preprocesamiento.
No, solo se puede devolver un valor a la persona que llama.
Un puntero que no puede modificarse para contener otra dirección después de tener una.
Vacío
Sí, solo escribe el orden de los elementos de la estructura.
No hay tal. Necesitamos comparar elemento por elemento de las variables de estructura.
Strstr ()
En primer lugar, son palabras clave no estándar. Un puntero cercano puede acceder solo a 2 ^ 15 de espacio de memoria y un puntero lejano puede acceder a 2 ^ 32 de espacio de memoria. Ambas palabras clave son específicas de la implementación y no son estándar.
No podemos.
en bucle.
Un valor que no se puede modificar se llama así. Estas variables se califican con la palabra clave const.
No, necesitamos usar tanto la palabra clave "estructura" como el nombre de la etiqueta.
Sí, posiblemente el programa no haga nada.
Sí, cualquier función definida por el usuario puede llamar a cualquier función.
Cerebro Kernighan
Lo que sigue ?
Además, puede repasar las asignaciones anteriores que haya realizado con el tema y asegurarse de poder hablar con confianza sobre ellas. Si está más fresco, el entrevistador no espera que responda preguntas muy complejas, sino que debe hacer que sus conceptos básicos sean muy sólidos.
En segundo lugar, realmente no importa mucho si no pudo responder algunas preguntas, pero es importante que lo que sea que haya respondido, debe haberlo respondido con confianza. Así que siéntete seguro durante tu entrevista. En tutorialspoint le deseamos la mejor suerte para tener un buen entrevistador y todo lo mejor para su futuro. Salud :-)