Preguntas de entrevistas para desarrolladores .NET – C#

¿Cuáles son las diferencias entre una clase y una interfaz en C#?

Una clase: Es como una plantilla o molde que se usa para la creación de objetos, contiene la definición de métodos, propiedades y constructor. Contiene un comportamiento predeterminado para los objetos que se van a crear.

Una interfaz: Es un contrato o tipo abstracto que se utiliza para garantizar las propiedades y métodos. Se usan para implementar patrones de diseño, principios de buenas prácticas y pruebas unitarias.

¿Cómo se define el constructor de una clase en C#?

Es un método que no devuelve nada y se llama igual que la clase

public class Person
{
   private string last;
   private string first;

   public Person(string lastName, string firstName)
   {
      last = lastName;
      first = firstName;
   }

   // Remaining implementation of Person class.
}

¿Qué son los modificadores de acceso y cómo funciona, menciona 2 de ellos?

Permiten especificar el alcance de clases, métodos y propiedades

Public: Puede accedido por donde dentro y fuera del contexto

Internal: Acceso por todos los componentes del Assembly

private:  Sólo puede ser accedido dentro del contexto

¿Es posible heredar de múltiples clases en C#?

Solo se puede heredar de una sola clase únicamente

public class User : BaseUser
{
  
}

¿Es posible heredar de múltiples clases en C#?

Es posible implementar múltiples interfaces y es una buena práctica que hace parte de los principios SOLID, segregación de interfaces.

public class User : IUser, ISecurity, IBaseModel
{
  
}

Menciona 2 buenas prácticas que apliques al escribir código en C#

1. Nombramiento: asignar nombres claros y descriptivos a las variables, métodos y clases

2. Evitar enviar muchos parámetros a un método

3. Asignar una única responsabilidad a cada componente en el código. Aplicando principios SOLID

¿Que es el CLR?

1. Common Language Runtime

2. Compila el código a un lenguaje intermedio común Common Intermediate Language (CIL, anteriormente conocido como MSIL, por Microsoft Intermediate Language)

¿Qué es el garbage collector ?

1. Es un componente del CLR sirve para administrar la memoria de manera automática

2. Libera la memoria de los componentes que no se usan en el sistema y provee una manera segura de administrarla

3. Unmanaged resources o recursos no administrados deben manejarse de manera manual usando el método Dispose()

¿Qué es un método virtual en C#?

Significa que el método puede sobreescribirse lo cual permite aplicar el principio de polimorfismo

public virtual double Area()
{
    return x * y;
}
public override double Area()
{
    return x * y*2;
}

¿Qué es LINQ y cómo funciona?

1. Language-Integrated Query (LINQ) es un conjunto de extensiones que permite trabajar manipulación de datos de una manera fácil y simple

2. Query expression y método de extensión

//Query: 
var esCuatro = from c in cadenas
                       where c == "Cuatro"
                       select c;

//Método: 
var estudiantes = estudiantes.Where(p=> (p.Codigo_Curso == "C001" && p.Edad > 18)

Permite realizar operaciones sobre colecciones, minimizar el código y mejorar el rendimiento.