C# y .NET Framework II Flashcards
¿Qué diferencia hay entre String, StringBuilder y char[]?
String es inmutable; StringBuilder permite modificaciones sin crear nuevos objetos; char[] es un arreglo de caracteres modificable.
¿Qué significa que una clase sea sealed?
Una clase sealed no puede ser heredada.
¿Para qué sirve el operador ?? en C#?
Es el operador de coalescencia nula, devuelve el valor izquierdo si no es null, si no el derecho.
¿Qué es un enum y cómo lo utilizarías?
Un enum es una lista de constantes con nombre; útil para representar estados, tipos o categorías.
¿Qué es un Nullable<T> y cómo se declara?</T>
Se declara como int? x = null;, permite asignar null a tipos de valor.
¿Cuál es la diferencia entre IEnumerable y IQueryable?
IEnumerable se evalúa en memoria; IQueryable permite construir la consulta para que sea ejecutada en la base de datos.
¿Qué hace el método SelectMany() en LINQ?
Aplana una colección de colecciones en una sola secuencia.
¿Cómo usarías GroupBy en una colección de objetos?
Agrupando por una propiedad: list.GroupBy(x => x.Categoria).
¿Cuál es la diferencia entre First(), FirstOrDefault(), y SingleOrDefault()?
First() lanza excepción si no encuentra; FirstOrDefault() devuelve null o default; SingleOrDefault() espera un solo resultado.
¿Cómo ordenar una lista por múltiples propiedades usando LINQ?
Usando OrderBy(x => x.Prop1).ThenBy(x => x.Prop2).
¿Qué es el Lazy Loading y cómo se habilita en Entity Framework?
Lazy Loading carga datos relacionados automáticamente al accederlos, si están configurados como virtual y no se desactivó.
¿Cuál es la diferencia entre DbSet<T> y DbContext?</T>
DbSet<T> representa una colección de entidades; DbContext es la unidad de trabajo que maneja el acceso a datos.</T>
¿Qué significa hacer un Migration en EF?
Es una forma de aplicar cambios en el modelo a la base de datos.
¿Cómo harías una consulta con filtrado dinámico en EF?
Combinando filtros con expresiones lambda según condiciones opcionales.
¿Cómo evitarías problemas de N+1 en Entity Framework?
Usando .Include() para cargar relaciones de manera explícita.
¿Qué es un try-finally y cuándo se usa sin catch?
Se usa cuando necesitas asegurar que un bloque se ejecute al salir del try, incluso si hay error (por ejemplo, liberar recursos).
¿Cómo manejas múltiples excepciones específicas en un solo bloque try?
Usando múltiples bloques catch para diferentes tipos de excepción.
¿Qué son los locks en C# y cómo ayudan a evitar condiciones de carrera?
Un lock evita que varios hilos accedan a una sección de código simultáneamente.
¿Qué es async/await y cómo mejora el rendimiento?
Permite ejecutar tareas asincrónicas sin bloquear el hilo principal.
Cuál es la diferencia entre un hilo (Thread) y una tarea (Task)?
Thread es más bajo nivel y pesado; Task es una abstracción más ligera para operaciones asíncronas.
¿Cómo accederías a valores en app.config o web.config?
Con ConfigurationManager.AppSettings[“clave”] o ConnectionStrings[“conexion”].
¿Qué diferencia hay entre autenticación y autorización?
Autenticación verifica identidad; autorización verifica permisos.
¿Cómo protegerías una conexión a base de datos en un archivo de configuración?
Encriptando la sección de configuración o usando Azure Key Vault.
¿Qué es un Mock y cómo se usa en pruebas unitarias?
Un mock simula una dependencia para controlar su comportamiento en pruebas.