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.

  • Distinga entre asignación de memoria malloc () y calloc ().

      Ambos asignan memoria desde el área de almacenamiento dinámico / memoria dinámica. Por defecto, calloc llena la memoria asignada con ceros.

  • ¿Para qué sirve la palabra clave automática?

      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.

  • ¿Cuáles son los lugares válidos para que aparezca la pausa de palabras clave?

      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.

  • Explique la sintaxis de for loop.
      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.

  • ¿Cuál es la diferencia entre incluir el archivo de encabezado con llaves angulares <> y comillas dobles ""?

      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.

  • Cómo se almacena un número entero negativo.

      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

  • ¿Qué es una variable estática?

      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.

  • ¿Qué es un puntero NULL?

      Un puntero que apunta a nada se llama así. Por ejemplo: char * p = NULL;

  • ¿Cuál es el propósito del especificador de almacenamiento externo?

      Se utiliza para resolver el alcance del símbolo global.

      Eg:  
      main() {
         extern int i;
         Printf(“%d”,i);
      }
      
      int i = 20;
  • Explique el propósito de la función sprintf ().

      Imprime la salida formateada en la matriz de caracteres.

  • ¿Cuál es el significado de la dirección base de la matriz?

      La dirección inicial de la matriz se llama como la dirección base de la matriz.

  • ¿Cuándo deberíamos usar el especificador de almacenamiento de registros?

      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 ++ o S = S + 1, ¿cuál se puede recomendar para incrementar el valor en 1 y por qué?

      S ++, ya que es una instrucción de máquina única (INC) internamente.

  • ¿Qué es una referencia colgante?

      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.

  • ¿Cuál es el propósito de la palabra clave typedef?

      Se utiliza para alias del tipo existente. También se utiliza para simplificar la declaración compleja del tipo.

  • ¿Qué es lvalue y rvalue?

      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.

  • ¿Cuál es la diferencia entre parámetros reales y formales?

      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.

  • ¿Se puede compilar un programa sin la función main ()?

      Sí, se puede ejecutar pero no se puede ejecutar, ya que la ejecución requiere la definición de la función main ().

  • ¿Cuál es la ventaja de declarar punteros nulos?

      Cuando no sabemos qué tipo de dirección de memoria va a contener la variable de puntero, declaramos un puntero vacío para tal.

  • ¿Dónde se almacena una variable automática?

      Cada variable local por defecto que es una variable automática se almacena en la memoria de pila.

  • ¿Qué es una estructura anidada?

      Una estructura que contiene un elemento de otra estructura como su miembro se denomina así.

  • ¿Cuál es la diferencia entre declaración de variable y definición de variable?

      La declaración asocia el tipo a la variable, mientras que la definición le da el valor a la variable.

  • ¿Qué es una estructura autorreferencial?

      Una estructura que contiene la misma variable de puntero de estructura que su elemento se denomina estructura autorreferencial.

  • ¿Un archivo de encabezado incorporado contiene una definición de función incorporada?

      No, el archivo de encabezado solo declara la función. La definición está en la biblioteca que está vinculada por el enlazador.

  • Explique la programación modular.

      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.

  • ¿Qué es una ficha?

      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.

  • ¿Qué es un preprocesador?

      El preprocesador es una directiva para que el compilador realice ciertas cosas antes de que comience el proceso de compilación real.

  • Explique el uso del especificador de formato% i wrt scanf ().

      Se puede usar para ingresar números enteros en todos los formatos admitidos.

  • ¿Cómo puede imprimir una \ (barra invertida) usando cualquiera de las funciones de la familia printf ()?

      Escápelo usando \ (barra invertida).

  • ¿Se requiere un descanso por defecto en la instrucción de cambio?

      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.

  • Cuándo al usuario -> operador (flecha).

      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.

  • ¿Qué son los campos de bits?

      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.

  • ¿Qué son los argumentos de la línea de comandos?

      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[]) {
      }
  • ¿Cuáles son las diferentes formas de pasar parámetros a las funciones? ¿Cuál usar cuando?
      • 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.

  • ¿Cuál es el propósito de la función stricmp () incorporada?

      Compara dos cadenas ignorando el caso.

  • Describe el modo de apertura del archivo "w +".

      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á.

  • ¿Dónde no se puede utilizar la dirección del operador (&)?

      No se puede utilizar en constantes.

      No se puede utilizar en variables declaradas mediante la clase de almacenamiento de registros.

  • ¿FILE es un tipo de datos integrado?
      No, es una estructura definida en stdio.h.
  • ¿Qué es un recordatorio para 5.0% 2?

      Error, no es válido que cualquiera de los operandos del operador de módulo (%) sea un número real.

  • ¿Cuántos operadores hay en la categoría de operadores ternarios?

      Solo hay un operador y es un operador condicional (?:).

  • ¿Qué palabra clave se utiliza para realizar una ramificación incondicional?

      ir

  • ¿Qué es un puntero a una función? Da la sintaxis general para el mismo.

      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)();
  • Explica el uso del operador de coma (,).

      El operador de coma se puede utilizar para separar dos o más expresiones.

      Eg: printf(“hi”) , printf(“Hello”);
  • ¿Qué es una declaración NULL?

      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.

  • ¿Qué es una función estática?

      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.

  • ¿Qué conmutador de compilador se utilizará para compilar los programas utilizando la biblioteca matemática con el compilador gcc?

      Opiton –lm que se utilizará como> gcc –lm <archivo.c>

  • ¿Qué operador se usa para continuar la definición de macro en la siguiente línea?

      Se utiliza una barra inclinada hacia atrás (\).

      E.g. #define MESSAGE "Hi, \
         
      Welcome to C"
  • ¿Qué operador se usa para recibir el número variable de argumentos para una función?

      Elipses (…) se usa para lo mismo. Una definición de función general se ve como sigue

      void f(int k,…)  {
      }
  • ¿Cuál es el problema con el siguiente fragmento de código?
      char *s1 = "hello",*s2 = "welcome";
         
      strcat(s1,s2);

      s1 apunta a una constante de cadena y no se puede modificar.

  • ¿Qué función de biblioteca incorporada se puede utilizar para cambiar el tamaño de la memoria dinámica asignada?

      realloc () .

  • Defina una matriz.

      Array es una colección de elementos de datos similares con un nombre común.

  • ¿Qué son las enumeraciones?

      Las enumeraciones son una lista de constantes enteras con nombre. Los enumeradores se definen con la palabra clave enum .

  • ¿Qué función incorporada se puede utilizar para mover el puntero de archivo internamente?

      fseek ()

  • ¿Qué es una variable?

      Una variable es el almacenamiento de nombres.

  • ¿Quién diseñó el lenguaje de programación C?

      Dennis M. Ritchie.

  • C es sucesor de qué lenguaje de programación?

      segundo

  • ¿Cuál es la forma completa de ANSI?

      Instituto Americano de Estándares Nacionales.

  • ¿Qué operador se puede utilizar para determinar el tamaño de un tipo de datos o una variable?

      tamaño de

  • ¿Podemos asignar una variable flotante a una variable de entero largo?

      Sí, con pérdida de parte fraccionaria.

  • ¿Es 068 un número octal válido?

      No, contiene dígitos octales no válidos.

  • ¿Cuál es el valor de retorno de un operador relacional si devuelve alguno?

      Devuelve un valor 1 si la relación entre las expresiones es verdadera, de lo contrario 0.

  • ¿Cómo funciona el operador bit a bit XOR?

      Si los dos bits correspondientes son iguales, da 0 más 1.

  • ¿Qué es un bucle infinito?

      Un bucle que se ejecuta repetidamente como la expresión de bucle siempre se evalúa como verdadero, como

      while(0 == 0) {
      }
  • ¿Pueden tener el mismo nombre las variables que pertenecen a un ámbito diferente? Si es así, muestre un ejemplo.

      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; 
      }
  • ¿Cuál es el valor predeterminado de las variables locales y globales?

      Las variables locales obtienen un valor basura y las variables globales obtienen un valor 0 por defecto.

  • ¿Puede un puntero acceder a la matriz?

      El puntero al mantener la dirección base de la matriz puede acceder a la matriz.

  • ¿Cuáles son las operaciones válidas en punteros?

      Las únicas dos operaciones permitidas en punteros son

      • Comparación ii) Suma / Resta (excluyendo punteros vacíos)
  • ¿Qué es la longitud de una cuerda?

      Es el recuento de caracteres excluyendo el carácter '\ 0'.

  • ¿Cuál es la función incorporada para agregar una cadena a otra?

      strcat () forman la cadena de encabezado. h

  • ¿Qué operador se puede utilizar para acceder a elementos de unión si la variable de unión es una variable de puntero?

      Operador de flecha (->).

  • Explique sobre 'stdin'.

      stdin en una variable de puntero que está abierta por defecto para el dispositivo de entrada estándar.

  • Nombre una función que pueda usarse para cerrar la secuencia de archivos.

      fclose ().

  • ¿Cuál es el propósito del preprocesador #undef?

      Se puede utilizar para eliminar la definición de una macro existente.

  • Define una estructura.

      Se puede definir una estructura de recopilación de elementos de datos heterogéneos.

  • Nombre la macro predefinida que se utilizará para determinar si su compilador es estándar ANSI o no.

      __STDC__

  • ¿Qué es el encasillado?

      El encasillado es una forma de convertir una variable / constante de un tipo a otro.

  • ¿Qué es la recursividad?

      La función que se llama a sí misma se llama recursividad.

  • ¿Qué función se puede utilizar para liberar la memoria dinámica asignada?

      gratis().

  • ¿Cuál es la primera cadena en los argumentos de la línea de comandos del vector de argumentos wrt?

      Nombre del programa.

  • ¿Cómo podemos determinar si un archivo se abrió con éxito o no usando la función fopen ()?

      En caso de falla, fopen () devuelve NULL; de lo contrario, se abre con éxito.

  • ¿Cuál es el archivo de salida generado por el vinculador?

      El vinculador genera el archivo ejecutable.

  • ¿Cuál es la longitud máxima de un identificador?

      Idealmente, tiene 32 caracteres y también depende de la implementación.

  • ¿Cuál es el método de llamada de función predeterminado?

      Por defecto, las funciones se llaman por valor.

  • Las funciones deben y deben declararse. Comenta sobre esto.

      La declaración de función es opcional si la misma se invoca después de su definición.

  • ¿Cuándo se expanden las macros?

      En el momento del preprocesamiento.

  • ¿Puede una función devolver varios valores a la persona que llama usando la palabra reservada de retorno?

      No, solo se puede devolver un valor a la persona que llama.

  • ¿Qué es un puntero constante?

      Un puntero que no puede modificarse para contener otra dirección después de tener una.

  • ¿Para que el puntero sea genérico para qué tipo de fecha debe declararse?

      Vacío

  • ¿Se puede inicializar la variable de estructura tan pronto como se declara?

      Sí, solo escribe el orden de los elementos de la estructura.

  • ¿Hay alguna forma de comparar dos variables de estructura?

      No hay tal. Necesitamos comparar elemento por elemento de las variables de estructura.

  • ¿Qué función de biblioteca incorporada se puede usar para hacer coincidir un patrón de la cadena?

      Strstr ()

  • ¿Cuál es la diferencia entre punteros lejanos y cercanos?

      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.

  • ¿Podemos anidar comentarios en un código C?

      No podemos.

  • ¿Qué bucle de control se recomienda si tiene que ejecutar un conjunto de instrucciones durante un número fijo de veces?

      en bucle.

  • ¿Qué es una constante?

      Un valor que no se puede modificar se llama así. Estas variables se califican con la palabra clave const.

  • ¿Podemos usar solo el nombre de etiqueta de las estructuras para declarar las variables de la misma?

      No, necesitamos usar tanto la palabra clave "estructura" como el nombre de la etiqueta.

  • ¿Se puede dejar vacía la función main ()?

      Sí, posiblemente el programa no haga nada.

  • ¿Puede una función llamar a otra?

      Sí, cualquier función definida por el usuario puede llamar a cualquier función.

  • Aparte de Dennis Ritchie, quien fue la otra persona que contribuyó en el diseño del lenguaje C.

      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 :-)