.NET Flashcards

(332 cards)

1
Q

¿Cuál es el lenguaje de programación principal y más utilizado en la plataforma .NET?

A

C# (C-Sharp).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

¿Cómo se llama el entorno de ejecución (runtime) que gestiona la ejecución de aplicaciones .NET?

A

CLR (Common Language Runtime).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

¿Qué significa que .NET utilice compilación JIT?

A

Significa que traduce el código intermedio a código máquina “Just-In-Time” (en el momento de ejecución).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

¿Cómo se llama el gestor de paquetes oficial de .NET para añadir librerías externas?

A

NuGet.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

¿Cuál es la diferencia principal entre .NET Framework y el actual .NET?

A

.NET Framework es solo para Windows, mientras que .NET es multiplataforma (Linux, macOS, Windows).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

¿A qué lenguaje común se traducen todos los lenguajes de .NET antes de ejecutarse?

A

Al IL (Intermediate Language) o MSIL.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

¿Qué componente garantiza que los tipos de datos (como enteros o cadenas) sean iguales en todos los lenguajes?

A

El CTS (Common Type System).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

¿Cuál es el lenguaje de .NET especializado en programación funcional?

A

F#.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

¿Qué es el CLS (Common Language Specification)?

A

Un conjunto de reglas básicas que un lenguaje debe cumplir para ser compatible con el ecosistema .NET.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

¿Se puede usar una librería escrita en C# dentro de un proyecto de Visual Basic?

A

Sí, gracias a que ambos compilan al mismo lenguaje intermedio (IL) y respetan el CTS.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

¿Qué nombre recibe el estándar internacional que define la infraestructura de .NET?

A

ECMA-335 (o ISO/IEC 23271).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

¿Qué significan las siglas CLI en el contexto de los estándares de .NET?

A

Common Language Infrastructure.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

¿Cómo se llama el estándar específico que define el lenguaje C#?

A

ECMA-334 (o ISO/IEC 23270).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

¿Cuál es la principal ventaja de que .NET sea un estándar abierto?

A

Permite la multiplataforma y que terceros desarrollen sus propios motores compatibles.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

¿Qué sección del estándar define las instrucciones universales a las que compilan todos los lenguajes?

A

El CIL (Common Intermediate Language).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

¿Qué componente del CLI define las reglas para que los tipos de datos sean compatibles entre lenguajes?

A

El CTS (Common Type System).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
17
Q

¿Qué es el CLS (Common Language Specification)?

A

Un subconjunto de reglas del CTS que garantiza la interoperabilidad total entre lenguajes.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
18
Q

¿Qué información guardan los Metadatos en un ensamblado .NET?

A

La descripción de las clases, métodos y tipos definidos en el código.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
19
Q

¿Qué parte del CLI se encarga de cargar el código y gestionar la memoria durante la ejecución?

A

El VES (Virtual Execution System).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
20
Q

¿Cuál es la relación entre el VES y el CLR?

A

El VES es la especificación teórica del estándar, y el CLR es la implementación real de Microsoft.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
21
Q

¿Qué significa que el CLR utilice una compilación JIT?

A

Que traduce el código intermedio a código máquina en el momento de la ejecución y solo para los métodos necesarios.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
22
Q

¿Cuál es la función del Garbage Collector (GC)?

A

Gestionar automáticamente la reserva y liberación de memoria de los objetos que ya no se utilizan.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
23
Q

¿Qué diferencia hay entre Managed Code y Unmanaged Code?

A

El Managed Code se ejecuta bajo el control del CLR, mientras que el Unmanaged lo hace fuera de él.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
24
Q

¿Cómo optimiza el GC su trabajo para ser más rápido?

A

Dividiendo la memoria en generaciones (0, 1 y 2) según la antigüedad de los objetos.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
25
¿Qué componente del CLR se encarga de verificar que un programa no acceda a memoria no autorizada?
El verificador de seguridad de tipos (Type Safety).
26
¿Qué significan las siglas CIL?
Common Intermediate Language.
27
¿Cuál es la principal ventaja de compilar a CIL en lugar de a código máquina directo?
Permite la independencia del hardware y la interoperabilidad entre diferentes lenguajes.
28
¿Qué herramienta de Microsoft permite ver el código CIL dentro de un archivo compilado?
ildasm.exe (Intermediate Language Disassembler).
29
¿En qué momento se traduce el CIL a instrucciones reales para el procesador?
En el momento de la ejecución, mediante la compilación JIT (Just-In-Time).
30
¿Cómo se llaman los archivos (.dll o .exe) que contienen el código CIL y sus metadatos?
Ensamblados (Assemblies).
31
¿Qué significan las siglas MSIL?
Microsoft Intermediate Language.
32
¿Por qué se cambió el nombre de MSIL a CIL?
Para reflejar su naturaleza como estándar abierto (Common) y no solo una tecnología de Microsoft.
33
¿Existe alguna diferencia técnica entre el código MSIL y el CIL?
No, son términos diferentes para referirse al mismo código intermedio de .NET.
34
¿Cómo se suele referir de forma abreviada al Common Intermediate Language?
Simplemente como IL.
35
¿Qué herramienta del SDK de .NET permite ver este código intermedio?
ildasm.exe.
36
¿Cómo se llama el componente de un Assembly que contiene su nombre, versión y dependencias?
El Manifiesto (Manifest).
37
¿Qué dos tipos de archivos físicos principales representan a un Assembly?
Archivos .exe (ejecutables) y .dll (librerías).
38
¿Qué herramienta permite inspeccionar el contenido de un Assembly y ver su código CIL?
ildasm.exe.
39
¿Por qué se dice que el Assembly ayuda a evitar el "DLL Hell"?
Porque gestiona el control de versiones de forma estricta mediante el manifiesto.
40
¿Qué diferencia a un ensamblado .exe de uno .dll?
El .exe tiene un punto de entrada (Main) para ejecutarse por sí mismo.
41
¿Qué paquete de software debe instalar un desarrollador para poder compilar aplicaciones .NET?
El .NET SDK.
42
¿Es necesario instalar el Runtime si ya has instalado el SDK en tu equipo?
No, el SDK ya incluye el Runtime.
43
¿Qué componente de .NET es el equivalente funcional al JRE de Java?
El .NET Runtime.
44
¿Cuál es la herramienta de línea de comandos principal para crear, compilar y ejecutar proyectos .NET?
El comando dotnet.
45
¿Qué IDE de Microsoft es el más completo para el desarrollo profesional en .NET sobre Windows?
Visual Studio.
46
¿Qué requisito debe cumplir un ensamblado para ser instalado en el GAC?
Debe tener un Strong Name (Nombre Fuerte / firmado digitalmente).
47
¿Cuál es la principal ventaja de usar el GAC para las librerías compartidas?
Permite el Side-by-Side execution (coexistencia de diferentes versiones de la misma librería).
48
¿Qué herramienta de comandos se usa para instalar o eliminar ensamblados del GAC?
gacutil.exe.
49
¿En qué versión de .NET es más común el uso del GAC?
En .NET Framework (la versión tradicional de Windows).
50
¿Qué cuatro elementos componen el Strong Name de un ensamblado?
Nombre, Versión, Cultura y Token de clave pública.
51
¿Qué Runtime de .NET es necesario para ejecutar una API web en un servidor?
El ASP.NET Core Runtime.
52
¿Cuál es el único Runtime que es exclusivo de Windows y no multiplataforma?
El .NET Desktop Runtime (por depender de WinForms/WPF).
53
¿Qué componentes comunes comparten las tres versiones del Runtime?
El CLR (Common Language Runtime) y las Librerías Base de clases.
54
¿Por qué se dividen los Runtimes en tres versiones en lugar de uno solo?
Para mejorar la eficiencia, reduciendo el tamaño de la instalación y la superficie de ataque/fallos.
55
Si instalo el SDK de .NET, ¿qué Runtimes se instalan?
Por defecto, el SDK instala los Runtimes necesarios para desarrollar y probar en esa máquina (normalmente todos los básicos).
56
¿Qué componente del CLR es responsable de traducir el CIL a código máquina nativo?
El compilador JIT (Just-In-Time).
57
¿En qué momento compila el JIT un método específico?
Justo antes de que se ejecute por primera vez (Bajo demanda).
58
¿Cómo se llama el área de memoria donde el Garbage Collector gestiona los objetos?
El Heap Administrado (Managed Heap).
59
¿Qué información utiliza el Class Loader para conocer la estructura de una librería?
Los Metadatos incluidos en el ensamblado.
60
¿Qué ventaja ofrece el ThreadPool del CLR?
Mejora el rendimiento al reutilizar hilos en lugar de crearlos y destruirlos constantemente.
61
¿Qué significan las siglas BCL?
Base Class Library.
62
¿Cuál es la diferencia entre BCL y FCL?
La BCL es el núcleo básico (tipos, archivos, colecciones), mientras que la FCL incluye todo el framework (Web, UI, etc.).
63
¿En qué estándar internacional se define el contenido mínimo de la BCL?
En el ECMA-335 (CLI).
64
¿Qué Namespace de la BCL se encarga del manejo de archivos y directorios?
System.IO.
65
¿Por qué la BCL favorece la interoperabilidad entre lenguajes?
Porque proporciona un conjunto de clases y tipos comunes que todos los lenguajes .NET comparten.
66
¿De qué clase base deben heredar todos los tipos en el CTS?
De System.Object.
67
¿Cuál es la diferencia fundamental entre el CTS y el CLS?
El CTS define todos los tipos posibles; el CLS es el subconjunto de reglas para garantizar la interoperabilidad entre lenguajes.
68
¿Por qué el CLS prohíbe nombres de métodos que solo se diferencien en mayúsculas?
Porque hay lenguajes (como VB.NET) que no distinguen mayúsculas de minúsculas y habría colisiones.
69
¿Qué son los Value Types según el CTS?
Tipos de datos que contienen su valor directamente y se suelen almacenar en el stack (ej. estructuras, tipos básicos).
70
¿Es obligatorio que un lenguaje sea CLS-compliant para ejecutarse en .NET?
No, pero es necesario si quieres que tus librerías sean fácilmente utilizables por otros lenguajes de la plataforma.
71
¿Qué versión del CLR utilizaban .NET Framework 3.0 y 3.5?
El CLR 2.0.
72
¿Cuál es la última versión del CLR utilizada en el .NET Framework clásico (Windows)?
El CLR 4.0 (usado hasta la versión 4.8 de .NET).
73
¿Por qué Microsoft mantenía la misma versión del CLR para distintas versiones de .NET?
Para garantizar la compatibilidad y evitar que las aplicaciones fallaran al actualizar el Framework.
74
¿En qué familia de versiones de .NET empezaron a coincidir más los números de versión y de motor?
En .NET Core y las versiones actuales (.NET 5, 6, 7, 8).
75
¿Qué componente de .NET suele actualizarse con más frecuencia: el CLR o las librerías (BCL/FCL)?
Las librerías, ya que el CLR es una pieza de infraestructura más crítica y compleja de cambiar.
76
¿Qué es MSBuild en el ecosistema .NET?
Es el motor de construcción (build engine) encargado de transformar código fuente en archivos ejecutables.
77
¿En qué formato de archivo se guardan las instrucciones para MSBuild?
En archivos XML (con extensiones como .csproj o .vbproj).
78
¿Qué diferencia hay entre una Task y un Target en MSBuild?
Una Task es una acción individual (copiar, compilar); un Target es un conjunto de tareas ordenadas para lograr un objetivo.
79
¿Es necesario tener Visual Studio instalado para usar MSBuild?
No, se puede usar mediante la línea de comandos (CLI) o el SDK de .NET.
80
¿Cómo se llaman los elementos de entrada (como los archivos .cs) dentro de un archivo de MSBuild?
Items.
81
¿Qué es NuGet en el ecosistema .NET?
Es el gestor de paquetes oficial para compartir y reutilizar código.
82
¿Cuál es la extensión de archivo de un paquete de NuGet?
.nupkg.
83
¿Cómo se llama el repositorio público principal donde se alojan los paquetes de .NET?
NuGet.org.
84
¿Qué ventaja principal ofrece NuGet respecto a copiar una DLL a mano?
La gestión automática de dependencias (instala todo lo necesario para que la librería funcione).
85
¿Qué comando de la CLI de .NET se usa para añadir una librería externa?
dotnet add package [nombre].
86
¿Qué comando de .NET se usa para crear un nuevo proyecto basado en una plantilla de consola?
dotnet new console.
87
¿Qué comando permite ejecutar una aplicación y que esta se reinicie automáticamente al detectar cambios en el código?
dotnet watch (o dotnet watch run).
88
¿Cuál es la diferencia entre dotnet build y dotnet publish?
build genera binarios para desarrollo, mientras que publish prepara todo lo necesario para desplegar en un servidor.
89
¿Qué comando muestra las versiones instaladas del SDK y el Runtime en el sistema?
dotnet --info.
90
¿Es necesario ejecutar dotnet restore manualmente antes de compilar en las versiones modernas de .NET?
No, los comandos como build o run realizan la restauración de paquetes de forma automática.
91
¿En qué versión de .NET se introdujeron los Generics?
En .NET Framework 2.0.
92
¿Qué tecnología introducida en .NET 3.5 permite hacer consultas a datos usando sintaxis similar a SQL?
LINQ (Language Integrated Query).
93
¿Qué versión del CLR utilizaban todas las versiones de .NET desde la 4.0 hasta la 4.8?
El CLR 4.0.
94
¿Para qué sirven las palabras clave async y await introducidas en .NET 4.5?
Para simplificar la programación asíncrona y evitar que las aplicaciones se bloqueen.
95
¿Cuál fue el principal cambio visual para aplicaciones de escritorio en la versión 3.0 de .NET?
La introducción de WPF (Windows Presentation Foundation).
96
¿Cuál fue el principal objetivo de crear .NET Core frente al .NET Framework clásico?
Lograr que .NET fuera multiplataforma (Linux/macOS) y de código abierto.
97
¿Qué es .NET Standard?
Un conjunto de APIs comunes que garantiza que una librería funcione en .NET Framework, .NET Core y Xamarin.
98
¿Por qué no existe la versión ".NET 4" en la línea moderna de .NET?
Se saltó para evitar confusión con el antiguo .NET Framework 4.x.
99
¿Qué tecnología permite ejecutar código C# en el navegador del cliente mediante WebAssembly?
Blazor.
100
¿Qué significa que una versión de .NET sea LTS?
Que tiene Soporte a Largo Plazo (Long Term Support), normalmente durante 3 años.
101
¿Qué versión de .NET Framework se considera la última y "final" del ecosistema clásico?
.NET Framework 4.8.
102
¿Qué significa Native AOT en las versiones modernas de .NET?
La capacidad de compilar código directamente a binario nativo sin necesidad de un Runtime instalado.
103
¿Cómo se llama el framework que sustituyó a Xamarin para crear apps móviles y de escritorio multiplataforma?
.NET MAUI.
104
¿Cuál es la principal diferencia entre una versión LTS y una STS?
El tiempo de soporte: 3 años para LTS frente a 18 meses para STS.
105
¿Cuál es el enfoque principal de las versiones de .NET lanzadas entre 2024 y 2026?
La Inteligencia Artificial nativa y la optimización para Cloud Native.
106
¿Qué era .NET Standard?
Una especificación de APIs común para garantizar la compatibilidad entre diferentes Runtimes de .NET.
107
¿Cuál es la versión de .NET Standard más utilizada por su equilibrio entre APIs y compatibilidad?
.NET Standard 2.0.
108
¿Por qué .NET Standard ya no es necesario en las versiones modernas (.NET 5+)?
Porque el propio Runtime de .NET se unificó para ser multiplataforma de forma nativa.
109
¿Qué sucede si intento usar una librería .NET Standard 2.1 en el antiguo .NET Framework 4.8?
No funcionará, ya que .NET Standard 2.1 solo es soportado por versiones modernas (Core/5+).
110
¿Cuándo debería un desarrollador elegir hoy .NET Standard para un proyecto nuevo?
Únicamente si necesita que su librería sea compatible con el antiguo .NET Framework (Windows antiguo).
111
¿Quién fue el creador principal del proyecto Mono?
Miguel de Icaza.
112
¿Cuál fue el objetivo principal de Mono desde su nacimiento?
Permitir que las aplicaciones .NET funcionaran en plataformas no-Windows (Linux, macOS, etc.).
113
¿Qué motor de videojuegos utiliza Mono para ejecutar scripts de C#?
Unity.
114
¿Qué tipo de compilación utiliza Mono para poder ejecutar aplicaciones en iOS?
AOT (Ahead-of-Time), ya que iOS no permite compilación JIT por seguridad.
115
¿Qué papel juega Mono en el .NET unificado actual (v8/v9)?
Es el runtime utilizado para entornos específicos como WebAssembly (Blazor) y dispositivos móviles.
116
¿Cuál fue el principal cambio técnico de VB.NET respecto a Visual Basic 6.0?
Se convirtió en un lenguaje orientado a objetos puro basado en el CLR.
117
¿Qué significa que VB.NET sea "Case-Insensitive"?
Que no distingue entre mayúsculas y minúsculas en los nombres de variables o métodos.
118
¿Por qué VB.NET es muy utilizado para la automatización de Office (Excel/Word)?
Gracias a su excelente soporte de Late Binding (Enlace tardío).
119
¿Cuál es la postura actual de Microsoft respecto a la evolución de VB.NET?
Se mantiene para escenarios donde ya es fuerte, pero no recibirá las novedades sintácticas más avanzadas de C#.
120
¿Qué palabras clave sustituyen a las llaves { } en las estructuras de control de VB.NET?
Palabras como Then, End If, Sub o End Sub.
121
¿Cómo se llama el método constructor en una clase de VB.NET?
New.
122
¿Qué diferencia hay entre un Sub y una Function?
El Sub no devuelve valor, mientras que la Function sí lo hace.
123
¿Cuál es el equivalente en VB.NET a la palabra clave static de otros lenguajes?
Shared.
124
¿Qué palabra clave se usa para indicar que una clase hereda de otra?
Inherits.
125
¿Para qué sirve el modificador de acceso Friend?
Permite que el miembro sea visto por cualquier código dentro del mismo Assembly (.dll o .exe).
126
¿Dónde se almacenan las estructuras en la memoria del CLR?
En el Stack (Pila), ya que son tipos de valor.
127
¿Puede una estructura heredar de otra estructura en VB.NET?
No, las estructuras no soportan la herencia.
128
¿Qué ocurre cuando asignas una variable de estructura a otra?
Se realiza una copia completa de todos sus valores (paso por valor).
129
¿Qué requisito debe cumplir un constructor (New) dentro de una estructura?
Debe inicializar todos los campos de la estructura obligatoriamente.
130
¿Cómo se llama el proceso de convertir un tipo de valor (Structure) en un tipo de referencia (Object)?
Boxing.
131
¿Se puede crear una instancia (objeto) de un Module usando la palabra clave New?
No, los módulos no son instanciables.
132
¿Qué palabra clave de C# es equivalente a un Module de VB.NET?
static class.
133
¿Cuál es la visibilidad por defecto de los miembros de un módulo si no se especifica?
Public.
134
¿Qué ventaja ofrece un Module al llamar a sus métodos desde el mismo proyecto?
Permite el acceso directo al método sin necesidad de anteponer el nombre del módulo.
135
¿En qué tipo de contenedor deben definirse obligatoriamente los Extension Methods en VB.NET?
Dentro de un Module.
136
¿Qué palabra clave se usa en el bloque Set de una propiedad para referirse al valor entrante?
Value.
137
¿Cuál es la principal ventaja de una Auto-implemented Property?
Permite definir la propiedad en una sola línea sin declarar manualmente un campo privado.
138
¿Qué ocurre si intentas asignar un valor a una propiedad marcada como ReadOnly?
El código no compilará, ya que solo permite la lectura mediante el bloque Get.
139
¿Es posible que una propiedad en VB.NET acepte parámetros de entrada?
Sí, y si se marca como Default, permite acceder al objeto como si fuera una colección/array.
140
¿Qué bloque de una propiedad se ejecuta cuando hacemos un Console.WriteLine(objeto.Nombre)?
El bloque Get.
141
¿Qué palabra clave se usa en VB.NET para evitar escribir la ruta completa de un Namespace?
Imports.
142
¿Cuál es la función principal de un Namespace?
Organizar clases relacionadas y evitar conflictos de nombres (colisiones).
143
¿Qué es técnicamente un Delegate en .NET?
Es un objeto que actúa como un puntero seguro a un método.
144
¿Qué tecnología fundamental de .NET se construye sobre los Delegados?
El sistema de Eventos (Events).
145
¿Qué garantiza que un Delegado sea "Type-Safe"?
Que el método asignado debe tener la misma firma (parámetros y valor de retorno) que el delegado.
146
¿Qué interfaz debe implementar un objeto para poder ser utilizado dentro de un bloque Using?
La interfaz IDisposable.
147
¿Cuál es la función principal del bloque Using?
Garantizar que se llame al método .Dispose() del objeto para liberar recursos no administrados.
148
¿Qué ocurre con el objeto dentro de un Using si se produce una excepción (error) dentro del bloque?
El objeto se libera (Dispose) igualmente, ya que el bloque actúa como un Finally.
149
¿Cuál es la diferencia entre Using y el Garbage Collector?
El GC limpia la memoria cuando quiere; el Using libera recursos críticos inmediatamente.
150
¿Cómo se llama la directiva que se pone al inicio del archivo para importar Namespaces en VB.NET?
Imports (equivalente al using de C#).
151
¿Qué palabra clave se usa en VB.NET para declarar una clase abstracta?
MustInherit.
152
¿Cómo se marcan los métodos dentro de una clase abstracta que los hijos están obligados a programar?
Con la palabra clave MustOverride.
153
¿Cuántas interfaces puede implementar una misma clase en VB.NET?
Múltiples (no hay límite).
154
¿Qué palabra clave se usa al final de un método para vincularlo con un método de una interfaz?
Implements (ej. Implements IInterfaz.Metodo).
155
¿Se puede crear un objeto directamente de una clase MustInherit usando New?
No, las clases abstractas no pueden ser instanciadas directamente.
156
¿Quién es el arquitecto principal detrás del diseño de C#?
Anders Hejlsberg.
157
¿Qué significa que C# sea un lenguaje "Case-Sensitive"?
Que distingue entre mayúsculas y minúsculas en los nombres de variables y métodos.
158
¿Cuál es la función de las palabras clave async y await?
Facilitar la programación asíncrona, permitiendo que las tareas se ejecuten sin bloquear el hilo principal.
159
¿Qué tecnología de C# permite realizar consultas a colecciones de datos con una sintaxis similar a SQL?
LINQ (Language Integrated Query).
160
¿Cómo se delimitan los bloques de código (clases, métodos, bucles) en C#?
Mediante el uso de llaves { }.
161
¿Cuáles son las dos organizaciones principales que estandarizan el lenguaje C#?
ECMA (ECMA-334) e ISO/IEC (ISO/IEC 23270).
162
¿Qué proyecto de código abierto se benefició directamente de la estandarización de C# para crear su propia versión?
El proyecto Mono.
163
¿Por qué la versión oficial de la ISO suele ir por detrás de la versión de C# que lanza Microsoft?
Debido a los largos procesos burocráticos y de revisión necesarios para certificar un estándar internacional.
164
¿Qué garantiza la estandarización de un lenguaje a las empresas?
Garantiza continuidad, interoperabilidad y que el lenguaje no dependa caprichosamente de una sola entidad.
165
¿C# fue diseñado desde su origen para ser un estándar o fue algo que ocurrió años después?
Fue diseñado para ser un estándar desde su lanzamiento en 2002.
166
¿Qué nombre debe recibir siempre el constructor de una clase en C#?
Debe tener el mismo nombre que la clase.
167
¿Cuál es la diferencia principal entre un método abstract y uno virtual?
Un método abstract no tiene código y obliga al hijo a implementarlo; un virtual tiene código base que el hijo puede decidir cambiar o no.
168
¿Qué ocurre si intentas usar new con una clase marcada como abstract?
Se produce un error de compilación, ya que las clases abstractas no pueden ser instanciadas.
169
¿Para qué sirve el modificador de acceso internal?
Limita la visibilidad del miembro o clase al mismo ensamblado (archivo .dll o .exe).
170
¿Qué palabra clave impide que una clase sea utilizada como base para herencia en C#?
sealed.
171
¿Cuál es la diferencia principal en la comparación de igualdad entre una class y un record?
Las clases usan igualdad por referencia y los records usan igualdad por valor.
172
¿Qué permite hacer la expresión with en un record?
Crear una copia del record modificando solo algunas de sus propiedades (mutación no destructiva).
173
¿Qué ocurre con las propiedades de un record definido con sintaxis posicional (ej: record P(string N))?
Son inmutables (de solo lectura) por defecto.
174
¿Cómo se llama el proceso de extraer los valores de un record directamente a variables individuales?
Desconstrucción (Destructuring).
175
¿A partir de qué versión de C# están disponibles los Records?
A partir de C# 9.0.
176
¿Qué es ADO.NET en el ecosistema de datos?
Es la capa de bajo nivel que gestiona conexiones y comandos directos a la base de datos.
177
¿Cuál es el ORM (Object-Relational Mapper) oficial y más usado en .NET?
Entity Framework Core (EF Core).
178
¿Qué ventaja principal ofrece un Micro-ORM como Dapper frente a EF Core?
Proporciona un rendimiento superior al estar más cerca del SQL puro y ser más ligero.
179
¿Es necesario usar una librería de persistencia diferente para C# y para VB.NET?
No, las librerías son comunes para todos los lenguajes de .NET.
180
¿Cómo se llama el proceso de EF Core que sincroniza los cambios en tus clases con el esquema de la base de datos?
Migrations (Migraciones).
181
¿Qué diferencia hay entre ExecuteScalar y ExecuteNonQuery?
ExecuteScalar devuelve el primer valor de la primera fila; ExecuteNonQuery devuelve el número de filas afectadas (pero no datos).
182
¿Por qué se dice que el DataReader es de tipo "Forward-Only"?
Porque solo permite leer los registros de uno en uno hacia adelante, no puedes retroceder al registro anterior.
183
¿Cuál es la función del objeto DataAdapter?
Actúa como un puente entre la base de datos (modelo conectado) y el DataSet (modelo desconectado).
184
¿Qué objeto de ADO.NET permite representar una base de datos completa en la memoria del cliente, incluyendo relaciones?
El DataSet.
185
¿Cuál es la mejor práctica en ADO.NET para evitar ataques de Inyección SQL?
El uso de Consultas Parametrizadas (Parameters).
186
¿Qué objeto de ADO.NET actúa como una base de datos completa en memoria RAM?
El DataSet.
187
¿Cuál es la función principal del método .Fill() del DataAdapter?
Ejecutar una consulta y poblar el DataSet, cerrando la conexión al terminar.
188
¿Cómo sabe el DataAdapter qué registros debe actualizar en el servidor al llamar a .Update()?
Gracias a la propiedad RowState de cada DataRow (Added, Modified, Deleted).
189
¿Qué objeto se usa para generar automáticamente los comandos de actualización de un DataAdapter?
El CommandBuilder (ej. SqlCommandBuilder).
190
¿Cuál es el principal riesgo de trabajar con el modelo desconectado en entornos multiusuario?
Los conflictos de concurrencia, donde dos usuarios intentan modificar el mismo dato al mismo tiempo.
191
¿Qué empresa u organización creó originalmente Dapper?
Stack Overflow.
192
¿Sobre qué tipo de objetos de .NET se aplican los métodos de Dapper (como .Query)?
Sobre cualquier objeto que implemente la interfaz IDbConnection.
193
¿Cuál es la principal ventaja de usar Dapper frente a Entity Framework?
Su rendimiento superior, que es casi idéntico al de ADO.NET nativo.
194
¿Cómo gestiona Dapper la creación de tablas y las migraciones de base de datos?
No lo hace; Dapper no tiene sistema de migraciones, el desarrollador debe gestionar el esquema manualmente.
195
¿Qué tipo de mapeo realiza Dapper entre la base de datos y el código?
Mapea las columnas de un resultado SQL a las propiedades de un objeto (POCO).
196
¿Qué es un ORM en el contexto de .NET?
Una herramienta que permite interactuar con una base de datos relacional usando objetos y código en lugar de SQL manual.
197
¿Qué lenguaje utiliza EF Core para realizar consultas a la base de datos desde el código?
LINQ (Language Integrated Query).
198
¿Qué permite el enfoque Code-First en EF Core?
Definir el modelo de datos mediante clases de C#/VB.NET y dejar que el framework cree o actualice la base de datos.
199
¿Para qué sirve el sistema de Migrations (Migraciones)?
Para gestionar y propagar los cambios en el esquema de la base de datos de forma incremental y segura.
200
¿Qué significa que EF Core sea "Agnóstico a la base de datos"?
Que puede funcionar con múltiples motores de bases de datos (SQL Server, PostgreSQL, etc.) simplemente cambiando el "Provider".
201
¿Qué es el Change Tracker en EF Core?
El mecanismo que registra qué objetos han sido modificados, añadidos o borrados para generar el SQL necesario al guardar.
202
¿Qué sucede durante la Materialización?
El proceso de transformar las filas y columnas devueltas por la base de datos en instancias de objetos de C#/VB.NET.
203
¿Cuál es la función de la Fluent API en el DbContext?
Configurar el mapeo entre las clases y las tablas de forma más avanzada que con simples atributos.
204
¿Por qué se dice que el DbContext es una Unidad de Trabajo?
Porque coordina múltiples cambios y los envía a la base de datos como una transacción única al llamar a SaveChanges().
205
¿Qué es un Database Provider en el contexto de EF Core?
Una librería específica (como Microsoft.EntityFrameworkCore.SqlServer) que sabe traducir el modelo de EF al dialecto SQL de un motor concreto.
206
¿Qué representa un objeto DbSet dentro de un DbContext?
Representa una tabla de la base de datos que contiene entidades del tipo T.
207
¿Qué método de EF Core se debe llamar para que los cambios realizados en memoria se apliquen físicamente en la base de datos?
SaveChanges().
208
¿Cómo identifica EF Core automáticamente la Clave Primaria de una clase?
Por convención, busca una propiedad llamada Id o NombreDeLaClaseId.
209
¿Qué hace el método Database.EnsureCreated()?
Comprueba si la base de datos existe y, si no, la crea basándose en el modelo definido en el contexto.
210
¿Qué ventaja tiene usar LINQ en lugar de strings de SQL en EF Core?
Ofrece comprobación de tipos en compilación, IntelliSense y evita errores de sintaxis en el SQL.
211
¿Qué significa que una entidad esté en estado Detached?
Que el DbContext no la está rastreando y no tiene conocimiento de su existencia.
212
¿Cuál es el estado inicial de una entidad tras ejecutar el método Attach?
El estado Unchanged (Sin cambios).
213
¿Por qué es preferible usar Attach en lugar de Update para modificar un solo campo?
Porque Update marca todas las columnas como modificadas, mientras que Attach permite que EF genere un SQL que solo actualice lo que realmente cambió.
214
¿Qué sucede si intentas hacer Attach de una entidad que ya está siendo rastreada por el DbContext?
Se producirá una excepción de tiempo de ejecución (InvalidOperationException) por conflicto de identidad.
215
¿Es necesario llamar a Attach si la entidad fue obtenida mediante una consulta (Select) del mismo DbContext?
No, las entidades obtenidas mediante consultas ya están automáticamente en estado Unchanged y bajo rastreo.
216
¿En qué método del DbContext se debe configurar la Fluent API?
En el método OnModelCreating.
217
¿Qué configuración es imposible de realizar con Data Annotations y requiere obligatoriamente Fluent API?
La definición de Llaves Compuestas (Composite Keys).
218
Si una propiedad tiene el atributo [Required] pero en la Fluent API se marca como .IsRequired(false), ¿cuál prevalece?
Prevalece la Fluent API (es opcional).
219
¿Qué par de métodos se utilizan para definir una relación de "Uno a Muchos"?
HasOne() combinado con WithMany().
220
¿Qué ventaja ofrece la Fluent API respecto a la limpieza del código?
Permite que las clases de las entidades permanezcan como POCOs puros, sin dependencias de infraestructura de base de datos.
221
¿Qué significan las siglas LINQ?
Language Integrated Query.
222
¿Cuál es la principal ventaja de LINQ sobre escribir SQL como texto dentro del código?
Ofrece comprobación de tipos en tiempo de compilación y soporte de IntelliSense.
223
¿Qué es la Ejecución Diferida en LINQ?
Es el comportamiento por el cual la consulta no se ejecuta hasta que se itera sobre los resultados.
224
¿Cómo se llaman los dos estilos sintácticos para escribir LINQ?
Sintaxis de Consulta (Query Syntax) y Sintaxis de Método (Method Syntax).
225
¿Qué método de LINQ se utiliza para transformar un objeto en otro (proyectar datos)?
El método .Select().
226
¿Cuál es la diferencia entre el método First() y FirstOrDefault()?
First() lanza una excepción si la lista está vacía; FirstOrDefault() devuelve el valor por defecto (como null).
227
¿Qué método de LINQ se utiliza para organizar datos basándose en múltiples criterios de forma consecutiva?
ThenBy() (después de un OrderBy).
228
¿Qué utilidad tiene el método Any() frente a un Count() > 0?
Any() es más eficiente porque se detiene al encontrar la primera coincidencia, mientras que Count() recorre toda la lista.
229
¿Para qué se utiliza el método Select()?
Para proyectar o transformar los elementos de una colección en un nuevo formato o tipo.
230
¿Qué devuelve el método GroupBy()?
Devuelve una colección de objetos de tipo IGrouping, que contienen una clave y los elementos asociados a esa clave.
231
¿Qué tecnología de .NET Web intentaba emular el comportamiento de las aplicaciones de escritorio?
ASP.NET Web Forms.
232
¿Cuál fue el principal beneficio de pasar de .NET Framework a .NET Core?
La capacidad de ser Multiplataforma (ejecutarse en Linux/macOS) y un rendimiento masivo.
233
¿Qué permite hacer Blazor en el desarrollo web moderno?
Permite ejecutar C# en el navegador del cliente usando WebAssembly, sustituyendo a JavaScript en muchas tareas.
234
¿Para qué sirven las Minimal APIs introducidas en las versiones recientes de .NET?
Para crear servicios web y APIs con el mínimo código posible, optimizando la velocidad y simplicidad.
235
¿Cómo se llama el motor de plantillas que permite mezclar C# y HTML en ASP.NET MVC?
Razor (archivos .cshtml).
236
¿Qué significan las siglas ASP?
Active Server Pages.
237
¿Cuál es la principal diferencia entre ASP.NET "clásico" y ASP.NET Core?
El clásico solo funciona en Windows, mientras que Core es multiplataforma (Linux, macOS, Windows).
238
¿Qué sabor de ASP.NET se utiliza específicamente para devolver datos JSON a otras aplicaciones?
Web API.
239
¿Cómo se llama el patrón de diseño que separa la lógica de negocio, los datos y la interfaz en ASP.NET?
MVC (Modelo-Vista-Controlador).
240
¿Qué componente del antiguo Web Forms se encargaba de recordar el estado de los controles, pero ralentizaba las páginas?
El ViewState.
241
¿Qué es el ViewState en Web Forms?
Un mecanismo para mantener el estado de los controles entre peticiones mediante un campo oculto en el HTML.
242
¿Qué significa la propiedad runat="server" en una etiqueta?
Indica que el control debe ser procesado por el servidor ASP.NET antes de enviar el HTML al cliente.
243
¿Cómo se llama la propiedad booleana que indica si la página se está cargando por una acción del usuario (como un clic)?
IsPostBack.
244
¿Cuál es la principal diferencia entre el archivo .aspx y el archivo de Code-Behind?
El .aspx contiene la interfaz (HTML/Controles) y el Code-Behind contiene la lógica de programación.
245
¿Por qué Web Forms no se considera una tecnología adecuada para el desarrollo web moderno?
Por su falta de control sobre el HTML, su peso excesivo (ViewState) y la dificultad para realizar pruebas unitarias.
246
¿Qué es el Postback en ASP.NET Web Forms?
El proceso por el cual una página web se envía a sí misma al servidor para procesar datos.
247
¿En qué fase del ciclo de vida se recuperan los valores guardados en el campo oculto de la página?
En la fase de Load ViewState.
248
¿Para qué sirve la propiedad IsPostBack dentro del evento Page_Load?
Para diferenciar si es la primera vez que se carga la página o si es una respuesta a una acción del usuario.
249
¿Si usamos Web Forms, qué sucede con los objetos de la página en el servidor una vez que el HTML se ha enviado al navegador?
Se destruyen (Unload), liberando la memoria (aunque el estado sobrevive en el ViewState del cliente).
250
¿Por qué el modelo de eventos de Web Forms requiere que la página se recargue por completo?
Porque la lógica de los eventos reside en el servidor, no en el navegador del cliente.
251
¿Se puede ejecutar una aplicación de Web Forms en .NET 8 o .NET Core?
No, Web Forms solo es compatible con el antiguo .NET Framework (Windows).
252
¿Qué tecnología de .NET Core permite usar C# en el frontend para sustituir a JavaScript?
Blazor.
253
¿Cuál es la diferencia entre Blazor Server y Blazor WebAssembly?
En Server el código corre en el servidor; en WebAssembly el código corre en el navegador del cliente.
254
¿Qué modelo de programación recomienda Microsoft actualmente para aplicaciones web simples basadas en páginas?
Razor Pages.
255
¿Qué son las Minimal APIs?
Una forma simplificada de crear servicios web con el mínimo código posible, sin usar controladores tradicionales.
256
¿Qué componente del patrón MVC se encarga de decidir qué vista mostrar al usuario?
El Controlador.
257
¿Cómo se llama el motor que permite mezclar código C# con HTML en las vistas de ASP.NET MVC?
Razor.
258
¿Qué es el Routing en MVC?
El sistema que mapea una URL entrante a una acción específica de un controlador.
259
¿Qué significa que el modelo de datos en MVC sea un POCO?
Significa Plain Old CLR Object, es decir, una clase simple de C# sin dependencias de frameworks externos.
260
¿Qué ventaja principal ofrece la separación de responsabilidades en MVC?
Facilita el mantenimiento, permite el trabajo en paralelo de diseñadores y programadores, y mejora la testabilidad.
261
¿Qué símbolo se utiliza en Razor para pasar de HTML a código C#?
El símbolo @ (at).
262
¿Cuál es la extensión de archivo que utilizan las vistas de Razor en C#?
.cshtml.
263
¿Para qué sirve el método @RenderBody() en un Layout de Razor?
Indica el lugar exacto donde se inyectará el contenido específico de la vista que se está cargando.
264
¿Qué diferencia hay entre una expresión @ y un bloque @{ }?
@ se usa para mostrar un valor (expresión), mientras que @{ } permite escribir múltiples líneas de lógica sin mostrar nada directamente.
265
¿Qué son los Tag Helpers en Razor?
Atributos especiales que se añaden a etiquetas HTML estándar para que el servidor las procese y les añada funcionalidad dinámica.
266
¿Qué extensión de archivo utilizan las vistas en ASP.NET MVC con C#?
.cshtml.
267
¿Cuál es la diferencia entre una ruta física y una ruta lógica en la web?
La física apunta a un archivo real en disco; la lógica es un patrón que el framework mapea a un método.
268
¿Qué significa el signo de interrogación en el patrón de ruta {id?}?
Indica que el parámetro es opcional.
269
¿Cuál es la ventaja de utilizar Attribute Routing frente al convencional?
Permite definir rutas personalizadas y complejas de forma local en cada método, facilitando la lectura.
270
¿Qué sucede si el motor de enrutamiento no encuentra ninguna coincidencia para una URL?
El servidor devuelve un error HTTP 404 (Not Found).
271
¿Cómo se llaman en C# las etiquetas de metadatos que en Java se conocen como "Anotaciones"?
Atributos (Attributes).
272
¿Qué símbolos se utilizan en C# para envolver un Atributo?
Corchetes [ ].
273
¿Cuál es la diferencia entre un Field y una Property en C#?
Un Field es una variable interna (privada), mientras que una Property expone el acceso mediante get y set.
274
¿Cómo se llama la funcionalidad de C# que permite crear una propiedad con su getter y setter en una sola línea?
Auto-Implemented Properties (ej. { get; set; }).
275
¿Qué palabra clave se usa en C# para indicar que un método sobrescribe a uno de la clase base (sustituyendo a @Override)?
La palabra clave override.
276
¿Qué significan las siglas SOAP?
Simple Object Access Protocol.
277
¿Cuál es la extensión de archivo característica de los primeros servicios web en .NET?
.asmx.
278
¿Qué representan las siglas ABC en la configuración de WCF?
Address (Dirección), Binding (Enlace/Protocolo) y Contract (Contrato).
279
¿Qué lenguaje utiliza SOAP para estructurar sus mensajes y contratos (WSDL)?
XML.
280
¿Es compatible WCF nativo (Servidor) con .NET 8 o .NET Core?
No nativamente; se debe usar la librería CoreWCF o migrar a otras tecnologías como gRPC.
281
¿Qué atributo de C# se usa para marcar una interfaz como un servicio de WCF?
[ServiceContract].
282
¿Qué atributo se debe poner a una propiedad de una clase para que pueda ser enviada a través de WCF?
[DataMember].
283
¿Qué componente de WCF permite al cliente llamar a métodos del servidor como si fueran locales?
El Proxy (o Client Base).
284
¿Qué es el WSDL en el contexto de WCF?
Un documento XML que describe qué hace el servicio y cómo conectarse a él (el "manual de instrucciones" del servicio).
285
¿Cuál es la diferencia entre un BasicHttpBinding y un NetTcpBinding?
BasicHttpBinding es para interoperabilidad (SOAP estándar), mientras que NetTcpBinding es para alto rendimiento exclusivo entre aplicaciones .NET.
286
¿De qué clase base deben heredar los controladores de una Web API en ASP.NET Core?
De ControllerBase.
287
¿Qué utilidad tiene el atributo [ApiController]?
Activa funciones automáticas como el mapeo de errores 400 y la inferencia de origen de datos para parámetros.
288
¿Cómo se llama la herramienta que genera automáticamente documentación interactiva para una Web API en .NET?
Swagger (basado en el estándar OpenAPI).
289
¿Cuál es la diferencia principal entre un GET y un POST en REST?
GET se usa para consultar/leer un recurso, mientras que POST se usa para crear un nuevo recurso.
290
¿Qué librería utiliza .NET por defecto para convertir objetos a JSON?
System.Text.Json.
291
¿Cuál es la diferencia principal entre Controller y ControllerBase en ASP.NET?
Controller tiene soporte para vistas HTML (Razor), mientras que ControllerBase está optimizado para APIs de datos.
292
¿Qué componente de Web API se encarga de convertir automáticamente una clase de C# en una cadena de texto JSON?
El Serializador JSON (por defecto System.Text.Json).
293
¿Qué sucede en la fase de Model Binding?
El framework toma los datos de la petición (URL o Body) y los inyecta automáticamente en los parámetros del método del controlador.
294
¿Qué código de estado HTTP se suele devolver cuando un recurso se ha creado con éxito mediante un POST?
El código 201 Created.
295
¿Para qué sirve el Middleware en una Web API?
Para procesar tareas comunes a todas las peticiones, como la seguridad, el registro de logs o el manejo de errores.
296
¿En qué versión de .NET se introdujeron oficialmente las Minimal APIs?
En .NET 6.
297
¿Dónde se suelen definir todas las rutas y lógica en una Minimal API?
Directamente en el archivo Program.cs.
298
¿Cómo se inyectan dependencias en un endpoint de una Minimal API?
Pasándolas como parámetros adicionales en la expresión lambda de la ruta.
299
¿Qué clase sustituye a los métodos Ok() o NotFound() de los controladores en este modelo?
La clase estática Results (ej. Results.Ok()).
300
¿Qué ventaja principal ofrecen las Minimal APIs para el desarrollo de microservicios?
Reducen drásticamente el código repetitivo (boilerplate) y facilitan el despliegue rápido.
301
¿Qué estándar web permite que Blazor WebAssembly ejecute código binario de .NET en el navegador?
WebAssembly (WASM).
302
¿Cómo se comunica Blazor Server con el navegador para actualizar la interfaz en tiempo real?
A través de una conexión SignalR (WebSockets).
303
¿Cuál es la extensión de los archivos de componentes en Blazor?
.razor.
304
¿Qué ventaja principal tiene compartir modelos entre una Web API y un cliente Blazor?
Se garantiza la consistencia de datos y se evita duplicar código de validación.
305
¿Qué es el JS Interop en Blazor?
Es el mecanismo que permite la comunicación bidireccional entre código C# y funciones de JavaScript.
306
¿De qué tecnología es la evolución directa .NET MAUI?
De Xamarin.Forms.
307
¿MAUI utiliza una vista web para mostrar la interfaz?
No
308
¿Qué lenguaje se utiliza para definir la interfaz visual en MAUI?
XAML.
309
¿En qué sistemas operativos puede correr una app de MAUI?
Android
310
¿Cuál es la diferencia entre Autenticación y Autorización?
Autenticación identifica quién es el usuario; Autorización determina qué permisos tiene.
311
¿Qué es un Claim en el contexto de seguridad de .NET?
Una pareja de nombre/valor que representa una característica del usuario (ej: "Email": "usuario@test.com").
312
¿Por qué no se suelen usar Cookies en las Web APIs modernas?
Porque las Cookies están ligadas al navegador y dificultan la escalabilidad y el uso en apps móviles. Los tokens funcionan igual en navegador, móvil o servidor
313
¿Qué estándar se utiliza habitualmente para que un usuario se identifique usando su cuenta de Google o Microsoft?
OAuth2 u OpenID Connect.
314
¿Qué herramienta de .NET proporciona las tablas y lógica necesaria para gestionar usuarios y contraseñas?
ASP.NET Core Identity.
315
¿Qué clase de .NET es la recomendada actualmente para el cifrado simétrico de datos?
La clase Aes.
316
¿Cuál es la diferencia principal entre System.Random y RandomNumberGenerator?
RandomNumberGenerator es criptográficamente seguro y no es predecible.
317
¿Para qué sirve un IV (Vector de Inicialización) en el cifrado AES?
Para asegurar que el mismo texto plano produzca un texto cifrado diferente cada vez.
318
¿Qué clase usarías para verificar si un archivo ha sido modificado sin permiso?
Una clase de hashing como SHA256.
319
¿Qué significa que una función hash sea "one-way" (de una sola vía)?
Significa que es matemáticamente imposible (o inviable) reconstruir los datos originales a partir del hash.
320
¿Razor es un lenguaje de programación independiente?
No, es una sintaxis de plantillas que combina HTML y C#.
321
¿Dónde se procesa el código contenido en un archivo .cshtml?
En el servidor (Server-side), antes de enviar el HTML al cliente.
322
¿Cuál es el propósito principal de Razor en ASP.NET Core?
Crear vistas dinámicas renderizando datos del servidor en estructuras HTML.
323
¿Qué símbolo actúa como delimitador para pasar de marcado HTML a código C#?
El símbolo @.
324
¿Cómo se llama el símbolo que inicia la transición de HTML a C# en Razor?
El símbolo @ (at).
325
¿Qué diferencia hay entre @variable y @(variable)?
La primera es una expresión implícita y la segunda es explícita (usada para evitar ambigüedades con el texto circundante).
326
¿Para qué sirve el operador @: dentro de un bloque de código Razor?
Para escribir texto plano (sin etiquetas HTML) dentro de un bloque de C#.
327
¿Es necesario cerrar explícitamente una variable @miDato con algún símbolo final?
No, el motor de Razor detecta automáticamente el final de la instrucción de C#.
328
¿Qué significa el acrónimo POCO en .NET?
Plain Old CLR Object.
329
¿Es obligatorio que un POCO herede de alguna clase base de Entity Framework?
No, precisamente un POCO se define por no heredar de clases de frameworks.
330
¿Por qué es necesario un constructor sin parámetros en un POCO?
Para permitir que el framework o serializador cree la instancia mediante reflexión.
331
¿Qué diferencia a un POCO de un objeto dependiente del framework (Entity)?
El POCO es independiente de la persistencia y no contiene lógica técnica de acceso a datos.
332
¿Puede un POCO contener lógica de negocio o solo debe tener propiedades?
Sí, puede contener métodos con lógica de negocio, siempre que no dependan de infraestructura externa.