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.
Ambos alocam memória da área de heap / memória dinâmica. Por padrão, o calloc preenche a memória alocada com zeros.
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.
Break pode aparecer apenas com o controle de loop e instrução switch. O objetivo da pausa é retirar o controle dos referidos blocos.
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.
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.
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
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.
Um ponteiro apontando para nada é chamado assim. Ex .: char * p = NULL;
Usado para resolver o escopo do símbolo global.
Eg:
main() {
extern int i;
Printf(“%d”,i);
}
int i = 20;
Imprime a saída formatada na matriz de caracteres.
O endereço inicial do array é chamado de endereço base do array.
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 ++, pois é uma instrução de máquina única (INC) internamente.
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.
É usado para criar um alias do tipo existente. Também usado para simplificar a declaração complexa do tipo.
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.
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.
Sim, pode ser, mas não pode ser executado, pois a execução requer a definição da função main ().
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.
Cada variável local por padrão, sendo uma variável automática, é armazenada na memória da pilha.
Uma estrutura que contém um elemento de outra estrutura como seu membro é chamada assim.
A declaração associa o tipo à variável, enquanto a definição fornece o valor à variável.
Uma estrutura que contém a mesma variável de ponteiro de estrutura que seu elemento é chamada de estrutura autorreferencial.
Não, o arquivo de cabeçalho apenas declara a função. A definição está na biblioteca vinculada pelo vinculador.
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 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 pré-processador é uma diretiva para o compilador realizar certas coisas antes que o processo de compilação real comece.
Pode ser usado para inserir inteiros em todos os formatos suportados.
Faça escape usando \ (barra invertida).
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.
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.
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.
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[]) {
}
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.
Ele compara duas strings ignorando o caso.
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.
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.
-
Não, é uma estrutura definida em stdio.h.
Erro, é inválido que qualquer um dos operandos para o operador de módulo (%) seja um número real.
Existe apenas um operador e é um operador condicional (?:).
vamos para
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)();
O operador vírgula pode ser usado para separar duas ou mais expressões.
Eg: printf(“hi”) , printf(“Hello”);
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.
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.
Opiton –lm a ser usado como> gcc –lm <arquivo.c>
Barra invertida (\) é usada.
E.g. #define MESSAGE "Hi, \
Welcome to C"
Reticências (...) é usado para o mesmo. Uma definição geral de função é a seguinte
void f(int k,…) {
}
char *s1 = "hello",*s2 = "welcome";
strcat(s1,s2);
s1 aponta para uma constante de string e não pode ser alterado.
realloc () .
Array é uma coleção de itens de dados semelhantes sob um nome comum.
Enumerações são listas de constantes inteiras com nome. Enumeradores são definidos com a palavra-chave enum .
fseek ()
Uma variável é o nome de armazenamento.
Dennis M Ritchie.
B
American National Standards Institute.
tamanho de
Sim, com perda de parte fracionária.
Não, contém dígitos octais inválidos.
Retorne o valor 1 se a relação entre as expressões for verdadeira, caso contrário, 0.
Se ambos os bits correspondentes forem iguais, dá 0, mais 1.
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 que no fragmento de código a seguir.
int var;
void f() {
int var;
}
main() {
int var;
}
Variáveis locais obtêm valor de lixo e variáveis globais obtêm valor 0 por padrão.
O ponteiro, segurando o endereço base da matriz, pode acessar a matriz.
- Comparação ii) Adição / Substração (excluindo ponteiros vazios)
As únicas duas operações permitidas em ponteiros são
É a contagem de caracteres excluindo o caractere '\ 0'.
strcat () forma a string do cabeçalho.h
Operador de seta (->).
stdin em uma variável de ponteiro que é aberta por padrão para o dispositivo de entrada padrão.
fclose ().
Ele pode ser usado para cancelar a definição de uma macro existente.
Uma estrutura pode ser definida de coleção de itens de dados heterogêneos.
__STDC__
Typecasting é uma maneira de converter uma variável / constante de um tipo para outro tipo.
A própria chamada de função é chamada de recursão.
livre().
Nome do programa.
Em caso de falha, fopen () retorna NULL, caso contrário, é aberto com sucesso.
O Linker gera o arquivo executável.
Idealmente, tem 32 caracteres e também depende da implementação.
Por padrão, as funções são chamadas por valor.
A declaração da função é opcional se a mesma for invocada após sua definição.
Na hora do pré-processamento.
Não, apenas um valor pode ser retornado ao chamador.
Um ponteiro que não pode ser alterado para conter outro endereço após ter mantido um.
Vazio
Sim, escreva apenas a ordem dos elementos da estrutura.
Não existe tal. Precisamos comparar elemento por elemento das variáveis da estrutura.
Strstr ()
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.
Não nós não podemos.
para - Loop.
Um valor que não pode ser modificado é denominado assim. Essas variáveis são qualificadas com a palavra-chave const.
Não, precisamos usar a palavra-chave 'struct' e o nome da tag.
Sim, possivelmente o programa não está fazendo nada.
Sim, qualquer função definida pelo usuário pode chamar qualquer função.
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 :-)