C# - 10 Questões básicas para Entrevista - Respostas


Hoje teremos as respostas às dez questões básicas para uma entrevista sobre a linguagem C#.

Confira as respostas às perguntas e veja se você se saiu bem.

1- Considere o seguinte trecho de código:


 int y = 5 ;
 y = (y++)+y+(++y);
 

Qual será o valor da variável y após a execução dessas linhas de código ? Explique.

Resposta:

O valor de y será 18.
y++ vai retornar 5 e então incrementará para 6
++y vai incrementar 6 para 7 

logo:  y = (5+6+7) = 18

2- Qual a dimensão máxima permitida em um array na linguagem C# ?
Ex:  int[] numeros, string[,] nomes, etc.

Resposta:

Segundo a documentação deste link (MSDN) o número de dimensões máximas que um array pode ter é 32.

3- É possível chamar um método na linguagem C# sem usar ponto e vírgula no final do método ?
Ex:  Metodo();

Resposta:

Sim, é possível veja exemplo de código abaixo:

public class Program
{
    public static string GetString()
    {
       return "C# - 2020";
    }	  
    public static bool Validar(int i)
    {
       if (i != 0)
         return true;
      else 
        return false;
    }

     public static void Main()
     {
           Console.WriteLine(GetString());

           if(Validar(5))
           {
              Console.WriteLine("ok");
            }
      }
}

Tudo bem, é uma pegadinha, mas o ponto e vírgula (;) é usado para indicar o fim de uma instrução.

4- Considere o seguinte trecho de código:


 if (new bool() )
 {
    Console.WriteLine("Olá Mundo");
 }
 

A execução deste código vai exibir no console "Olá Mundo" ? Explique.

Resposta:

Não, pois new bool() retorna false e false é o valor padrão do tipo bool na linguagem C#.

5- Se strings na linguagem C# são imutáveis considere o seguinte trecho de código:


string str = "ABCD";
str += "";
str = str.Replace('x', 'T');
str = str.Trim();
 

Quantas instâncias serão criadas após a execução do código acima ? Explique.

Resposta:

Será criada apenas uma instância.

Embora strings na linguagem C# sejam imutáveis , uma nova instância não será criada se a operação não alterar o valor da string.

6- Qual a diferença entre boxing e unboxing ?

Resposta:

Box e Unboxing são usados para conversões de tipo.

Box - É o processo de conversão de um tipo de valor para um tipo de referência.
Unboxing
- É o processo de conversão de um tipo de referência para um tipo de valor.

7- Podemos usar a palavra 'this' em um método estático ? Explique.

Resposta:

Não podemos usar 'this' em um método estático porque a palavra-chave 'this' é usada para retornar uma referência à instância atual da classe que a contém e os métodos estáticos não pertencem a uma instância específica.

8- O que é uma classe sealed na linguagem C# ?

Resposta:

As classes seladas são usadas para restringir o recurso da herança.

Depois que uma classe é definida como uma classe selada, usando o modificador sealed, ela não pode ser herdada.

9- Qual a diferença entre late binding e early binding ?

Resposta:

Os conceitos de (early binding) ligação antecipada e (late binding) ligação tardia pertencem ao polimorfismo em C#.

No polimorfismo em tempo de compilação ou early binding, usamos vários métodos com o mesmo nome, mas tipos e/ou números de parâmetros diferentes. Isso é conhecido como sobrecarga de método.

O polimorfismo em tempo de execução também é conhecido como late binding. Neste caso podemos usar os mesmos nomes de métodos com as mesmas assinaturas, o que significa o mesmo tipo ou o mesmo número de parâmetros, mas não na mesma classe porque o compilador não permite isso em tempo de compilação.

Portanto, podemos usar essa ligação em tempo de execução na classe derivada quando uma classe filha ou objeto da classe derivada será instanciado. É por isso que chamamos de late binding.

Temos que criar os métodos da classe pai como virtuais e na classe filha sobrescrever usando a palavra-chave override.

10 - O que é e como usar os tipos anuláveis ou Nullable<> ?

Resposta:

Um tipo anulável é um tipo de dados que contém o tipo de dados definido ou o valor nulo. Este conceito de tipo anulável não é compatível com "var".

Qualquer tipo de dado pode ser declarado anulável com a ajuda do operador "?".

Ex:  int? i = null;   double? salario=0.00;  bool? estado = null;

E então, fácil não é mesmo !!!!

"Porque o Filho do homem (Jesus) veio buscar e salvar o que se havia perdido."
Lucas 19:10

Referências:


José Carlos Macoratti