Las 50 principales preguntas y respuestas de entrevista en C# (Edición 2021) – Para principiantes y desarrolladores experimentados
C# es un lenguaje versátil y orientado a objetos que se ejecuta en el framework .NET. Impulsa aplicaciones web ASP.NET, software de escritorio e incluso juegos a través de Unity. Si buscas una carrera en C#, dominar estas preguntas de entrevista te ayudará a demostrar tanto la profundidad como la amplitud de tus conocimientos a los gerentes de contratación.
Preguntas de entrevista en C# para principiantes y desarrolladores con 2/3/5/10 años de experiencia
Estas preguntas cubren conceptos básicos, sintaxis y errores comunes que los entrevistadores esperan que los candidatos dominen.
1. ¿Qué es C#?
C# es un lenguaje de tipado estático, seguro y orientado a objetos que se compila a Lenguaje Intermedio de Microsoft (MSIL) mediante el runtime de .NET.
2. Explica los tipos de comentarios en C# con ejemplos
• Comentario de una línea: // Este es un comentario de una línea
• Comentario de varias líneas: /* Este es un comentario de varias líneas Puede abarcar varias líneas */
• Documentación XML: /// <summary>Establece mensaje de error</summary>
3. ¿Pueden ejecutarse varios bloques catch?
No. Una vez que se ejecuta un bloque catch que coincide, el control pasa al bloque finally (si está presente) y luego al código posterior a la estructura try-catch.
4. ¿Cuál es la diferencia entre public, static y void?
public – Accesible desde cualquier código que haga referencia al tipo.
static – Pertenece al tipo en sí, no a una instancia.
void – Indica que un método no devuelve un valor.
5. ¿Qué es un objeto?
Un objeto es una instancia de una clase, creada con la palabra clave new. Proporciona acceso a los miembros de la clase (métodos, propiedades, campos).
6. Define constructores.
Un constructor es un método especial que comparte su nombre con la clase. Se ejecuta automáticamente cuando se crea una instancia, inicializando campos y realizando la configuración.
7. ¿Qué son los arrays escalonados (jagged arrays)?
Los arrays escalonados son arrays de arrays. Cada elemento puede referenciar un array de longitud diferente, permitiendo estructuras de datos irregulares.
8. ¿Cuál es la diferencia entre parámetros ref y out?
ref requiere que la variable se inicialice antes de la llamada. out no; el llamado debe asignar un valor antes de retornar.
9. ¿Cuál es el uso de la instrucción using en C#?
El bloque using garantiza que un recurso IDisposable se libere automáticamente cuando se sale del bloque, incluso si ocurre una excepción.
10. ¿Qué es la serialización?
La serialización convierte un objeto en un flujo de bytes para almacenamiento o transmisión. La deserialización invierte el proceso, recreando el objeto. Los tipos deben marcarse con [Serializable] o implementar ISerializable.
11. ¿Puede usarse la palabra clave this dentro de un método estático?
No. this se refiere a la instancia actual, la cual los métodos estáticos no tienen.
12. ¿Cuál es la diferencia entre constantes y campos de solo lectura?
Las constantes son valores en tiempo de compilación que no pueden cambiar. Los campos de solo lectura se asignan una vez en tiempo de ejecución (ya sea en línea o en un constructor) y no pueden modificarse después.
Preguntas avanzadas de entrevista en C# para 3/5/10 años de experiencia
13. ¿Qué es una interfaz? Proporciona un ejemplo.
Una interfaz declara un contrato de métodos y propiedades sin implementación. Ejemplo:
public interface IGreeter { void SetName(string name); string Greet(); } public class FriendlyGreeter : IGreeter { private string _name; public void SetName(string name) => _name = name; public string Greet() => $"Hello, {_name}!"; }
14. ¿Qué son los tipos por valor y los tipos por referencia?
Los tipos por valor (p. ej., int, struct) almacenan los datos directamente en la pila. Los tipos por referencia (p. ej., class, string) mantienen una referencia al objeto en el montículo.
15. ¿Qué son los controles personalizados (Custom Controls) y los controles de usuario (User Controls)?
Los controles personalizados se compilan en DLLs y pueden arrastrarse a formularios. Los controles de usuario (.ascx) son controles compuestos construidos a partir de controles existentes, útiles para componentes de UI reutilizables.
16. ¿Qué son las clases sealed en C#?
Una clase sealed no puede heredarse. El modificador sealed evita la subclasificación, asegurando que el comportamiento de la clase permanezca inalterado.
17. ¿Qué es la sobrecarga de métodos?
La sobrecarga de métodos permite que varios métodos compartan un nombre pero difieran en sus listas de parámetros. El compilador selecciona la sobrecarga apropiada según los argumentos.
18. ¿Cuál es la diferencia entre Array y ArrayList?
Un Array tiene tamaño fijo y tipos de elementos homogéneos. ArrayList (ahora reemplazado en gran medida por List<T>) es dinámico y almacena objetos.
19. ¿Puede un método virtual privado ser sobrescrito?
No. Un método privado no es visible para las clases derivadas, por lo que no puede sobrescribirse.
20. Describe el modificador de accesibilidad protected internal.
Los miembros marcados protected internal son accesibles dentro del mismo ensamblado o desde clases derivadas en otros ensamblados.
21. ¿Cuáles son las diferencias entre System.String y System.Text.StringBuilder?
String es inmutable; cada modificación crea una nueva instancia. StringBuilder es mutable, diseñado para manipulación eficiente de cadenas.
22. Diferencia entre Array.CopyTo() y Array.Clone()?
Clone() crea una copia superficial de todo el array. CopyTo() copia elementos en un array de destino existente.
23. ¿Cómo ordenar un array en orden descendente?
Usa Array.Sort() seguido de Array.Reverse(), o proporciona un comparador personalizado.
24. Escribe la sintaxis de C# para capturar una excepción.
Ejemplo:
try { GetAllData(); } catch (Exception ex) { // Manejar error }
25. Diferencia entre una interfaz y una clase abstracta?
Las interfaces declaran solo firmas; todos los miembros son implícitamente públicos y abstractos. Las clases abstractas pueden proporcionar implementaciones concretas y miembros privados.
26. Diferencia entre Finalize() y Dispose()?
Dispose libera recursos no administrados de forma determinista. Finalize (destructor) es llamado por el GC y es no determinista.
27. ¿Qué son las referencias circulares?
Dos o más objetos se referencian entre sí, impidiendo potencialmente la recolección de basura y causando fugas de memoria.
28. ¿Qué son los genéricos en C#?
Los genéricos permiten código reutilizable y seguro en tipos (p. ej., List<T>), reduciendo el casting en tiempo de ejecución y mejorando el rendimiento.
29. ¿Qué es un pool de objetos en .NET?
Un pool de objetos mantiene un conjunto de objetos inicializados listos para reutilizarse, minimizando asignaciones costosas y recolección de basura.
30. Enumera los tipos de excepción comúnmente usados en .NET.
ArgumentException, ArgumentNullException, ArgumentOutOfRangeException, ArithmeticException, DivideByZeroException, OverflowException, IndexOutOfRangeException, InvalidCastException, InvalidOperationException, IOException, NullReferenceException, OutOfMemoryException, StackOverflowException, etc.
31. ¿Qué son las excepciones personalizadas?
Las excepciones personalizadas son tipos definidos por el usuario derivados de Exception, adaptados a escenarios de error específicos.
32. ¿Qué son los delegados?
Los delegados son punteros a funciones seguros en tipos que permiten callbacks y manejo de eventos.
33. ¿Cómo se hereda una clase en C#?
Usa la sintaxis de dos puntos:
public class Derived : Base { }
34. ¿Cuál es la clase base de la que derivan todas las clases de .NET?
System.Object.
35. Diferencia entre sobrescritura y sobrecarga de métodos?
La sobrescritura cambia la implementación de un método virtual en una clase derivada. La sobrecarga crea múltiples métodos con el mismo nombre pero diferentes firmas.
36. ¿Cuáles son las diferentes formas en que un método puede sobrecargarse?
Variando el tipo, el orden o la cantidad de parámetros.
37. ¿Por qué no se puede especificar accesibilidad para métodos dentro de una interfaz?
Los miembros de la interfaz son implícitamente públicos; especificar accesibilidad sería redundante.
38. ¿Cómo permitir que una clase sea heredada pero evitar que un método sea sobrescrito?
Declara el método como sealed dentro de una clase no sealed.
39. ¿Qué ocurre si las interfaces heredadas tienen nombres de método en conflicto?
Implementa el método una vez en la clase derivada, asegurando que satisfaga todos los contratos de interfaz.
40. Diferencia entre un struct y una clase?
Los structs son tipos por valor almacenados en la pila, no pueden heredar de otros structs y son inmutables por convención. Las clases son tipos por referencia almacenados en el montículo.
41. ¿Cómo usar tipos anulables (nullable) en .NET?
Añade ? a un tipo por valor:
int? id = null; if (id.HasValue) { /* usar id.Value */ }
42. ¿Cómo crear un array con valores no predeterminados?
Usa Enumerable.Repeat o inicializadores de colección.
43. Diferencia entre los operadores is y as?
is verifica compatibilidad de tipo y devuelve un booleano. as realiza cast y devuelve null si falla.
44. ¿Qué es un delegado multicast?
Un delegado que referencia múltiples métodos; invocarlo llama a todos los métodos adjuntos en orden.
45. ¿Qué son los indexadores en C#?
Los indexadores permiten indexar objetos como arrays:
public int this[int index] { get { … } set { … } }
46. Diferencia entre throw y throw ex?
throw preserva el rastreo de pila original; throw ex lo reinicia, dificultando la depuración.
47. ¿Qué son los atributos de C# y su importancia?
Los atributos añaden metadatos a tipos y miembros; pueden consultarse mediante reflexión en tiempo de ejecución.
48. ¿Cómo implementar el patrón de diseño singleton?
Ejemplo:
public sealed class Singleton { private static readonly Singleton _instance = new Singleton(); public static Singleton Instance => _instance; private Singleton() { } }
49. Diferencia entre DirectCast y CType?
DirectCast requiere que el tipo en tiempo de ejecución coincida exactamente con el tipo objetivo. CType realiza una conversión definida por el tipo objetivo, invocando potencialmente operadores de conversión.
50. ¿Es C# código administrado o no administrado?
C# es código administrado; el CLR lo compila a MSIL y gestiona la memoria.
51. ¿Qué es una aplicación de consola?
Una aplicación de consola se ejecuta en una ventana de símbolo del sistema y suele ser el primer paso para principiantes en .NET.
52. Ejemplo de eliminación de un elemento de una Queue
Usa Dequeue() para eliminar el elemento frontal:
Queuequeue = new Queue (); queue.Enqueue(1); queue.Enqueue(2); queue.Enqueue(3); int removed = queue.Dequeue(); // removed = 1
Lenguaje C
- Robotics & Automation News anuncia ceremonia de premios 2021: Evento virtual para finales de 2021
- Finanzas de cadena de suministro 2019: Tendencias, desafíos y preguntas clave
- Examen Oral MEO Clase 4 Eléctrico: Preguntas y Respuestas Completas y Guía Práctica
- Manufactura lights-out para talleres CNC: Preguntas frecuentes y guía de implementación
- Los 5 Artículos Más Leídos de 2021 sobre Aire Comprimido y Gas: Innovaciones Clave y Estándares del Sector
- Métricas cloud clave que impulsan experiencia de usuario final y rendimiento
- Guía de entrevistas cloud 2024: preguntas y respuestas de expertos
- Top 5 recursos imprescindibles para ingenieros y arquitectos de sistemas IIoT (2017)
- Los 5 Principales Retos del 5G: Navegar Espectro, Coste, Cobertura, Dispositivos y Seguridad
- 5G y Edge: Desafíos emergentes de ciberseguridad para 2021
- Los 10 Mejores IDEs para C# en Windows, macOS y Linux – Reseña 2021