Perguntas da entrevista de programação C

Caros leitores, estes C Programming Interview Questions foram projetados especialmente para que você se familiarize com a natureza das perguntas que você pode encontrar durante sua entrevista sobre o assunto C Programming. De acordo com minha experiência, bons entrevistadores dificilmente planejam fazer qualquer pergunta em particular durante sua entrevista, normalmente as perguntas começam com algum conceito básico do assunto e depois continuam com base em uma discussão mais aprofundada e o que você responde -

  • O que é um ponteiro sobre ponteiro?

      É uma variável de ponteiro que pode conter o endereço de outra variável de ponteiro. Ele desrefere duas vezes para apontar para os dados mantidos pela variável de ponteiro designada.

      Eg: int x = 5, *p=&x, **q=&p;

      Portanto, 'x' pode ser acessado por ** q.

  • Distinguir entre alocação de memória malloc () e calloc ().

      Ambos alocam memória da área de heap / memória dinâmica. Por padrão, o calloc preenche a memória alocada com zeros.

  • Para que serve a palavra-chave automática?

      Por padrão, cada variável local da função é automática (automática). Na função abaixo, ambas as variáveis ​​'i' e 'j' são variáveis ​​automáticas.

      void f() {
         int i;
         auto int j;
      }

      NOTA - Uma variável global não pode ser uma variável automática.

  • Quais são os locais válidos para a quebra de palavra-chave aparecer.

      Break pode aparecer apenas com o controle de loop e instrução switch. O objetivo da pausa é retirar o controle dos referidos blocos.

  • Explique a sintaxe do loop for.
      for(expression-1;expression-2;expression-3) {
         //set of statements
      }

      Quando o controle atinge a expressão-1, é executado primeiro. Então, seguindo a expressão-2, e se a expressão-2 for avaliada como diferente de zero 'conjunto de declarações' e a expressão-3 for executada, segue-se a expressão-2.

  • Qual é a diferença entre incluir o arquivo de cabeçalho com colchetes angulares <> e aspas duplas ““

      Se um arquivo de cabeçalho for incluído em <>, o compilador procura o arquivo de cabeçalho específico apenas com o caminho de inclusão integrado. Se um arquivo de cabeçalho for incluído em ““, então o compilador procura o arquivo de cabeçalho particular primeiro no diretório de trabalho atual, se não for encontrado, então no caminho de inclusão integrado.

  • Como um número inteiro negativo é armazenado.

      Obtenha o elogio de dois do mesmo número inteiro positivo. Por exemplo: 1011 (-5)

      Step-1 - Um elogio de 5: 1010

      Step-2 - Adicione 1 acima, dando 1011, que é -5

  • O que é uma variável estática?

      Uma variável local estática retém seu valor entre a chamada de função e o valor padrão é 0. A função a seguir imprimirá 1 2 3 se chamada três vezes.

      void f() { 
         static int i; 
         ++i; 
         printf(“%d “,i); 
      }

      Se uma variável global for estática, sua visibilidade será limitada ao mesmo código-fonte.

  • O que é um ponteiro NULL?

      Um ponteiro apontando para nada é chamado assim. Ex .: char * p = NULL;

  • Qual é a finalidade do especificador de armazenamento externo?

      Usado para resolver o escopo do símbolo global.

      Eg:  
      main() {
         extern int i;
         Printf(“%d”,i);
      }
      
      int i = 20;
  • Explique o propósito da função sprintf ().

      Imprime a saída formatada na matriz de caracteres.

  • Qual é o significado do endereço base da matriz?

      O endereço inicial do array é chamado de endereço base do array.

  • Quando devemos usar o especificador de armazenamento de registro?

      Se uma variável é usada com mais freqüência, ela deve ser declarada usando o especificador de armazenamento de registro, então possivelmente o compilador fornece o registro da CPU para seu armazenamento para acelerar a pesquisa da variável.

  • S ++ ou S = S + 1, que pode ser recomendado para incrementar o valor em 1 e por quê?

      S ++, pois é uma instrução de máquina única (INC) internamente.

  • O que é um ponteiro pendente?

      Um ponteiro inicialmente contendo um endereço válido, mas posteriormente o endereço mantido é liberado ou liberado. Em seguida, esse ponteiro é chamado de ponteiro pendente.

  • Qual é a finalidade da palavra-chave typedef?

      É usado para criar um alias do tipo existente. Também usado para simplificar a declaração complexa do tipo.

  • O que é lvalue e rvalue?

      A expressão que aparece no lado direito do operador de atribuição é chamada de rvalue. Rvalue é atribuído a lvalue, que aparece no lado esquerdo do operador de atribuição. O lvalue deve designar uma variável, não uma constante.

  • Qual é a diferença entre os parâmetros reais e formais?

      Os parâmetros enviados para a função no final da chamada são chamados como parâmetros reais enquanto no recebimento da definição da função chamada como parâmetros formais.

  • Um programa pode ser compilado sem a função main ()?

      Sim, pode ser, mas não pode ser executado, pois a execução requer a definição da função main ().

  • Qual é a vantagem de declarar ponteiros vazios?

      Quando não sabemos que tipo de endereço de memória a variável de ponteiro vai manter, então declaramos um ponteiro nulo para tal.

  • Onde uma variável automática é armazenada?

      Cada variável local por padrão, sendo uma variável automática, é armazenada na memória da pilha.

  • O que é uma estrutura aninhada?

      Uma estrutura que contém um elemento de outra estrutura como seu membro é chamada assim.

  • Qual é a diferença entre declaração de variável e definição de variável?

      A declaração associa o tipo à variável, enquanto a definição fornece o valor à variável.

  • O que é uma estrutura autorreferencial?

      Uma estrutura que contém a mesma variável de ponteiro de estrutura que seu elemento é chamada de estrutura autorreferencial.

  • Um arquivo de cabeçalho integrado contém definição de função integrada?

      Não, o arquivo de cabeçalho apenas declara a função. A definição está na biblioteca vinculada pelo vinculador.

  • Explique a programação modular.

      Dividir o programa em subprogramas (módulos / função) para realizar a tarefa dada é uma abordagem modular. A definição de funções mais genéricas fornece a capacidade de reutilizar as funções, como funções de biblioteca integradas.

  • O que é um token?

      O programa AC consiste em vários tokens e um token pode ser uma palavra-chave, um identificador, uma constante, um literal de string ou um símbolo.

  • O que é um pré-processador?

      O pré-processador é uma diretiva para o compilador realizar certas coisas antes que o processo de compilação real comece.

  • Explique o uso do especificador de formato% i wrt scanf ().

      Pode ser usado para inserir inteiros em todos os formatos suportados.

  • Como você pode imprimir uma \ (barra invertida) usando qualquer uma das funções da família printf ().

      Faça escape usando \ (barra invertida).

  • Uma pausa é necessária por caso padrão na instrução switch?

      Sim, se não estiver aparecendo como o último caso e se não quisermos que o controle flua para o seguinte caso após o padrão, se houver.

  • Quando usuário -> operador (seta).

      Se a variável de estrutura / união for uma variável de ponteiro, para acessar os elementos de estrutura / união, o operador de seta é usado.

  • O que são campos de bits?

      Podemos criar membros de estrutura inteira de tamanhos diferentes, além do tamanho não padrão, usando campos de bits. Esse tamanho de estrutura é ajustado automaticamente com o múltiplo do tamanho inteiro da máquina.

  • O que são argumentos de linha de comando?

      Os argumentos que passamos para a função main () durante a execução do programa são chamados de argumentos de linha de comando. Os parâmetros são sempre strings mantidas no segundo argumento (abaixo em args) da função que é um array de ponteiros de caracteres. O primeiro argumento representa a contagem de argumentos (abaixo da contagem) e é atualizado automaticamente pelo sistema operacional.

      main( int count, char *args[]) {
      }
  • Quais são as diferentes maneiras de passar parâmetros para as funções? Qual usar quando?
      • Call by value- Enviamos apenas valores para a função como parâmetros. Escolhemos isso se não quisermos que os parâmetros reais sejam modificados com parâmetros formais, mas apenas usados.

      • Call by reference- Enviamos o endereço dos parâmetros reais em vez dos valores. Escolhemos isso se quisermos que os parâmetros reais sejam modificados com parâmetros formais.

  • Qual é o propósito da função stricmp () embutida.

      Ele compara duas strings ignorando o caso.

  • Descreva o modo de abertura do arquivo “w +”.

      Abre um arquivo para leitura e gravação. Se um arquivo não existir, ele cria um; caso contrário, se o arquivo já existir, ele será sobrescrito.

  • Onde o endereço do operador (&) não pode ser usado?

      Não pode ser usado em constantes.

      Não pode ser usado em variáveis ​​que são declaradas usando a classe de armazenamento de registro.

  • FILE é um tipo de dados integrado?
      Não, é uma estrutura definida em stdio.h.
  • O que é um lembrete para 5,0% 2?

      Erro, é inválido que qualquer um dos operandos para o operador de módulo (%) seja um número real.

  • Quantos operadores existem na categoria de operadores ternários?

      Existe apenas um operador e é um operador condicional (?:).

  • Qual palavra-chave é usada para realizar a ramificação incondicional?

      vamos para

  • O que é um ponteiro para uma função? Dê a sintaxe geral para o mesmo.

      Um ponteiro que contém a referência da função é chamado de ponteiro para uma função. Em geral, é declarado da seguinte forma.

      T (*fun_ptr) (T1,T2…); Where T is any date type.

      Uma vez que fun_ptr se refere a uma função, a mesma pode ser chamada usando o ponteiro da seguinte maneira.

      fun_ptr();
      [Or]
      (*fun_ptr)();
  • Explique o uso do operador vírgula (,).

      O operador vírgula pode ser usado para separar duas ou mais expressões.

      Eg: printf(“hi”) , printf(“Hello”);
  • O que é uma instrução NULL?

      Uma instrução nula não é nenhuma instrução executável, como; (ponto e vírgula).

      Eg: int count = 0; 
      while( ++count<=10 ) ;

      Acima não faz nada 10 vezes.

  • O que é uma função estática?

      A definição de uma função prefixada com uma palavra-chave estática é chamada como uma função estática. Você tornaria uma função estática se ela fosse chamada apenas no mesmo código-fonte.

  • Qual opção de compilador a ser usada para compilar os programas usando a biblioteca matemática com o compilador gcc?

      Opiton –lm a ser usado como> gcc –lm <arquivo.c>

  • Qual operador é usado para continuar a definição da macro na próxima linha?

      Barra invertida (\) é usada.

      E.g. #define MESSAGE "Hi, \
         
      Welcome to C"
  • Qual operador é usado para receber o número variável de argumentos para uma função?

      Reticências (...) é usado para o mesmo. Uma definição geral de função é a seguinte

      void f(int k,…)  {
      }
  • Qual é o problema com o seguinte snippet de codificação?
      char *s1 = "hello",*s2 = "welcome";
         
      strcat(s1,s2);

      s1 aponta para uma constante de string e não pode ser alterado.

  • Qual função de biblioteca integrada pode ser usada para redimensionar a memória dinâmica alocada?

      realloc () .

  • Defina uma matriz.

      Array é uma coleção de itens de dados semelhantes sob um nome comum.

  • O que são enumerações?

      Enumerações são listas de constantes inteiras com nome. Enumeradores são definidos com a palavra-chave enum .

  • Qual função interna pode ser usada para mover o ponteiro do arquivo internamente?

      fseek ()

  • O que é uma variável?

      Uma variável é o nome de armazenamento.

  • Quem projetou a linguagem de programação C?

      Dennis M Ritchie.

  • C é o sucessor de qual linguagem de programação?

      B

  • Qual é a forma completa de ANSI?

      American National Standards Institute.

  • Qual operador pode ser usado para determinar o tamanho de um tipo de dados ou variável?

      tamanho de

  • Podemos atribuir uma variável float a uma variável inteira longa?

      Sim, com perda de parte fracionária.

  • 068 é um número octal válido?

      Não, contém dígitos octais inválidos.

  • Qual é o valor de retorno de um operador relacional se retornar algum?

      Retorne o valor 1 se a relação entre as expressões for verdadeira, caso contrário, 0.

  • Como funciona o operador bit a bit XOR.

      Se ambos os bits correspondentes forem iguais, dá 0, mais 1.

  • O que é um loop infinito?

      Um loop executando repetidamente conforme a expressão de loop sempre é avaliado como verdadeiro, como

      while(0 == 0) {
      }
  • Variáveis ​​pertencentes a escopos diferentes podem ter o mesmo nome? Se sim, mostre um exemplo.

      Variáveis ​​pertencentes a escopos diferentes podem ter o mesmo nome que no fragmento de código a seguir.

      int var;
      
      void f() { 
         int var; 
      }
      
      main() { 
         int var; 
      }
  • Qual é o valor padrão das variáveis ​​locais e globais?

      Variáveis ​​locais obtêm valor de lixo e variáveis ​​globais obtêm valor 0 por padrão.

  • Um ponteiro pode acessar o array?

      O ponteiro, segurando o endereço base da matriz, pode acessar a matriz.

  • O que são operações válidas em ponteiros?

      As únicas duas operações permitidas em ponteiros são

      • Comparação ii) Adição / Substração (excluindo ponteiros vazios)
  • O que é um comprimento de string?

      É a contagem de caracteres excluindo o caractere '\ 0'.

  • Qual é a função interna para anexar uma string a outra?

      strcat () forma a string do cabeçalho.h

  • Qual operador pode ser usado para acessar elementos de união se a variável de união for uma variável de ponteiro?

      Operador de seta (->).

  • Explique sobre 'stdin'.

      stdin em uma variável de ponteiro que é aberta por padrão para o dispositivo de entrada padrão.

  • Nomeie uma função que pode ser usada para fechar o fluxo de arquivos.

      fclose ().

  • Qual é o propósito do pré-processador #undef?

      Ele pode ser usado para cancelar a definição de uma macro existente.

  • Defina uma estrutura.

      Uma estrutura pode ser definida de coleção de itens de dados heterogêneos.

  • Nomeie a macro predefinida que será usada para determinar se o seu compilador é o padrão ANSI ou não.

      __STDC__

  • O que é typecasting?

      Typecasting é uma maneira de converter uma variável / constante de um tipo para outro tipo.

  • O que é recursão?

      A própria chamada de função é chamada de recursão.

  • Qual função pode ser usada para liberar a memória alocada dinâmica?

      livre().

  • Qual é a primeira string no vetor de argumentos dos argumentos da linha de comando?

      Nome do programa.

  • Como podemos determinar se um arquivo foi aberto com sucesso ou não usando a função fopen ()?

      Em caso de falha, fopen () retorna NULL, caso contrário, é aberto com sucesso.

  • Qual é o arquivo de saída gerado pelo vinculador.

      O Linker gera o arquivo executável.

  • Qual é o comprimento máximo de um identificador?

      Idealmente, tem 32 caracteres e também depende da implementação.

  • Qual é o método de chamada de função padrão?

      Por padrão, as funções são chamadas por valor.

  • As funções devem e devem ser declaradas. Comente sobre isso.

      A declaração da função é opcional se a mesma for invocada após sua definição.

  • Quando as macros são expandidas?

      Na hora do pré-processamento.

  • Uma função pode retornar vários valores ao chamador usando a palavra reservada de retorno?

      Não, apenas um valor pode ser retornado ao chamador.

  • O que é um ponteiro constante?

      Um ponteiro que não pode ser alterado para conter outro endereço após ter mantido um.

  • Para tornar o ponteiro genérico para qual tipo de data ele precisa ser declarado?

      Vazio

  • A variável de estrutura pode ser inicializada assim que for declarada?

      Sim, escreva apenas a ordem dos elementos da estrutura.

  • Existe uma maneira de comparar duas variáveis ​​de estrutura?

      Não existe tal. Precisamos comparar elemento por elemento das variáveis ​​da estrutura.

  • Qual função de biblioteca integrada pode ser usada para combinar um padrão da string?

      Strstr ()

  • Qual é a diferença entre far e near pointers?

      Em primeiro lugar, são palavras-chave fora do padrão. Um ponteiro próximo pode acessar apenas 2 ^ 15 de espaço de memória e um ponteiro distante pode acessar 2 ^ 32 de espaço de memória. Ambas as palavras-chave são específicas da implementação e não são padronizadas.

  • Podemos aninhar comentários em um código C?

      Não nós não podemos.

  • Qual loop de controle é recomendado se você tiver que executar um conjunto de instruções por um número fixo de vezes?

      para - Loop.

  • O que é uma constante?

      Um valor que não pode ser modificado é denominado assim. Essas variáveis ​​são qualificadas com a palavra-chave const.

  • Podemos usar apenas o nome da tag de estruturas para declarar as variáveis ​​para o mesmo?

      Não, precisamos usar a palavra-chave 'struct' e o nome da tag.

  • A função main () pode ficar vazia?

      Sim, possivelmente o programa não está fazendo nada.

  • Uma função pode chamar outra?

      Sim, qualquer função definida pelo usuário pode chamar qualquer função.

  • Além de Dennis Ritchie, quem é a outra pessoa que contribuiu no design da linguagem C.

      Brain Kernighan

O que vem a seguir?

Além disso, você pode passar por suas tarefas anteriores que fez com o assunto e certificar-se de que é capaz de falar sobre elas com segurança. Se você está mais renovado, o entrevistador não espera que você responda a perguntas muito complexas; em vez disso, você precisa tornar seus conceitos básicos muito fortes.

Em segundo lugar, realmente não importa muito se você não pudesse responder a algumas perguntas, mas é importante que tudo o que você respondeu, você deve ter respondido com confiança. Portanto, sinta-se confiante durante a entrevista. Nós da tutorialspoint desejamos-lhe boa sorte em ter um bom entrevistador e tudo de melhor para o seu futuro empreendimento. Felicidades :-)