Las 40 mejores preguntas y respuestas de entrevistas de VB.Net (2026)
¿Te estás preparando para una entrevista de VB.Net? Es hora de centrarse en las posibles preguntas. Comprender estas Preguntas de la entrevista de VB.Net Te ayuda a revelar tus habilidades para resolver problemas, tu mentalidad de programación y tu profundidad técnica.
VB.Net ofrece amplias oportunidades para profesionales de todos los niveles, desde recién graduados hasta desarrolladores sénior. Con una sólida experiencia técnica y conocimientos del sector, los candidatos pueden demostrar habilidades analíticas y conocimientos técnicos acordes con el desarrollo de software en el mundo real. Estas preguntas y respuestas ayudan a los profesionales a superar las entrevistas, causar una buena impresión a los responsables y fortalecer sus habilidades generales de programación y análisis.
Recopilamos información de más de 55 líderes técnicos, gerentes de equipo y profesionales de TI de diversas industrias para garantizar que estas preguntas de entrevista de VB.Net reflejen las expectativas de contratación reales y una relevancia integral para la industria.

1) Explique qué es VB.NET y en qué se diferencia del VB clásico (VB6) en términos de tiempo de ejecución, sistema de tipos y características del lenguaje.
VB.NET es un lenguaje orientado a objetos, compatible con CLS, que se ejecuta en Common Language Runtime (CLR). A diferencia del VB clásico (VB6), que dependía de COM y un entorno de ejecución específico, VB.NET se compila a Lenguaje Intermedio (IL) y se ejecuta en .NET CLR, obteniendo ventajas como la administración automática de memoria, un sistema de tipos unificado (CTS), genéricos más completos y un manejo de excepciones estructurado. Las características del lenguaje mejoraron significativamente: la herencia, las interfaces, los delegados, los atributos y la reflexión se convirtieron en características de primera clase. El cambio de COM de enlace tardío a ensamblados fuertemente tipados de enlace temprano mejora la confiabilidad y las herramientas. Como resultado, el ciclo de vida de desarrollo se integra mejor con CI/CD moderno.uGet Gestión de paquetes e interoperabilidad entre lenguajes en todo el ecosistema .NET.
Ejemplo:
Una clase de VB.NET puede heredar (Inherits) de otra clase e implementar múltiples interfaces, algo que VB6 no podía hacer de forma nativa:
Public Class Repository
Inherits BaseRepository
Implements IDisposable
' ...
End Class
👉 Descarga gratuita del PDF: Preguntas y respuestas de entrevista sobre VB.Net
2) ¿Cómo se mapea el sistema de tipos de .NET a VB.NET? Distinga los tipos de valor de los tipos de referencia con ejemplos.
El Sistema de Tipos Comunes (CTS) de .NET define los fundamentos tipos Utilizado por VB.NET. Tipos de valores (por ejemplo, Integer, Boolean, Datey definido por el usuario Structure) normalmente se asignan en la pila y se copian por valor; tipos de referencia (por ejemplo, Class, String, Array, DelegateLos tipos de valor residen en el montón administrado y se accede a ellos mediante referencias. Esta diferencia influye en el rendimiento, la semántica de paso y las características de memoria. Los tipos de valor son ideales para construcciones pequeñas, inmutables y centradas en datos, mientras que los tipos de referencia son adecuados para entidades con identidad, comportamiento complejo y polimorfismo.
Responda con ejemplos:
' Value type
Public Structure Point2D
Public X As Integer
Public Y As Integer
End Structure
' Reference type
Public Class Customer
Public Property Id As Integer
Public Property Name As String
End Class
factores Entre los factores que influyen en la elección se incluyen el tamaño, la mutabilidad, la herencia requerida y los escenarios de interoperabilidad.
3) ¿Cuál es la diferencia entre una Clase, una Estructura y un Módulo en VB.NET? Proporcione una comparación estructurada.
Las clases, las estructuras y los módulos representan diferentes maneras de modelar el comportamiento y los datos. Clase es un tipo de referencia que admite herencia y polimorfismo. Estructura es un tipo de valor ideal para agregados pequeños e inmutables sin herencia. Módulo es un contenedor para miembros compartidos y no se puede instanciar ni heredar. ventajas desventajas varían según el ciclo de vida, la memoria y la flexibilidad del diseño.
| Aspecto | Clase | Estructura | Módulo |
|---|---|---|---|
| Categoría | Referencias | Valor | Contenedor especial |
| Herencia | soportes Inherits |
No se admite | No es aplicable |
| Instanciación | Dim c = New C() |
Dim s As S |
No instanciable |
| Miembros | Instancia + Compartida | Instancia + Compartida | Solo compartido |
| Casos de uso | Entidades, polimorfismo | pequeños agregados de datos | Utilidades auxiliares, constantes |
Ejemplo:
Public Module MathUtil
Public Function Clamp(v As Integer, min As Integer, max As Integer) As Integer
Return Math.Min(Math.Max(v, min), max)
End Function
End Module
4) ¿Cuándo debería un desarrollador usar ByVal en lugar de ByRef en VB.NET? Incluya una tabla comparativa práctica.
VB.NET admite dos pasos principales para el paso de parámetros. tipos: PorVal (predeterminado) y Byref. PorVal Pasa una copia del valor (o una copia de la referencia para tipos de referencia), conservando la variable original del llamador. Byref Pasa una variable por referencia, lo que permite que la función llamada reemplace la variable de la función que la llama. Elegir el enfoque correcto tiene beneficios para mayor claridad y rendimiento, pero un uso inadecuado puede introducir desventajas como por ejemplo, efectos secundarios sorprendentes.
| Dimensiones | PorVal | Byref |
|---|---|---|
| Mutación de la variable de llamada | No se permiten | Permitido |
| Rendimiento para estructuras grandes | Coste potencial de copia | Evita copiar |
| Claridad y seguridad | Más alto | Reducir si se usa incorrectamente |
| Uso típico | Ingresos | Salidas/actualizaciones in situ |
Ejemplo:
Sub IncrementByRef(ByRef x As Integer)
x += 1
End Sub
Sub Demo()
Dim n As Integer = 10
IncrementByRef(n) ' n becomes 11
End Sub
Use Byref cuando deba establecer salidas o realizar transformaciones in situ; prefiera PorVal para API predecibles y sin efectos secundarios.
5) ¿Qué modificadores de acceso están disponibles en VB.NET y cómo influyen en el diseño y la encapsulación de la API?
VB.NET proporciona Public, Private, Protected, Friend y Protected Friend (más Private Protected (en versiones más recientes de .NET). Estos modificadores controlan la visibilidad a través del límite del ensamblado y la jerarquía de herencia. Características: Public Los miembros están orientados hacia el exterior y forman el contrato; Private oculta los detalles de implementación; Protected expone a las subclases; Friend expone dentro del ensamblaje actual; Protected Friend fusiona ambos ámbitos; Private Protected Se restringe al ensamblaje contenedor y a los tipos derivados. Su uso adecuado produce beneficios como por ejemplo, límites claros, refactorización más segura y acoplamiento minimizado. factores incluir si los tipos se reutilizan en diferentes ensamblajes, la estabilidad de la superficie de la API y consideraciones sobre la capacidad de prueba.
Ejemplo:
Public Class Service
Private ReadOnly _repo As IRepository
Protected Overridable Sub Validate() ' extensible in subclasses
End Sub
End Class
6) ¿Se pueden aplicar sync/await a VB.NET? Describa el patrón asíncrono basado en tareas con ejemplos.
Sí. VB.NET es totalmente compatible. Async/Await y el Patrón Asíncrono Basado en Tareas (TAP). Un Async devuelve el método Task or Task(Of T) y utiliza Await para reanudar de forma asíncrona sin bloquear los hilos. ventajas Incluyen interfaces de usuario responsivas, E/S escalables y un flujo de control más claro en comparación con las devoluciones de llamada. Desventajas puede surgir si los desarrolladores bloquean (.Result, .Wait) o mezclar incorrectamente la sincronización y la asincronía. Clave factores importantes incluir el manejo de excepciones (capturadas en el valor devuelto) Task) y el comportamiento del contexto de sincronización.
Ejemplo:
Public Async Function FetchAsync(url As String) As Task(Of String)
Using client As New Net.Http.HttpClient()
Return Await client.GetStringAsync(url)
End Using
End Function
En ASP.NET, se prefiere la asincronía de extremo a extremo para evitar la inanición de subprocesos; en Windows Las aplicaciones asíncronas mantienen la interfaz de usuario receptiva.
7) ¿Cuál es la diferencia entre las interfaces y las clases abstractas (MustInherit) en VB.NET, y cuándo se debe usar cada una?
Las interfaces definen contratos solo—miembros sin implementación—permitiendo maneras diferentes para componer comportamientos entre tipos no relacionados. MustInherit Las clases pueden contener tanto elementos abstractos (MustOverride) y miembros de hormigón, lo que permite una funcionalidad de base compartida. ventajas Las interfaces incluyen múltiples implementaciones y un acoplamiento débil; desventajas No incluye código compartido. MustInherit Las clases permiten la reutilización y la protección del estado, pero restringen la herencia múltiple.
| Criterio | Fácil de usar | Clase MustInherit |
|---|---|---|
| Implementación | Ninguna | Parcial o total |
| Herencia | Múltiples permitidos | base única |
| Campos/Estado | No se permiten | Permitido |
| Versiones | Más difícil de evolucionar | Más fácil con valores predeterminados virtuales |
Ejemplo:
Public Interface IClock
Function NowUtc() As DateTime
End Interface
Public MustInherit Class BaseClock
Public Overridable Function NowUtc() As DateTime
Return DateTime.UtcNow
End Function
End Class
Elija interfaces para contratos conectables; utilice MustInherit al compartir la lógica base a través de una jerarquía.
8) ¿Cómo se modelan los eventos y los delegados en VB.NET? Proporcione ejemplos prácticos de uso con Handles y AddHandler.
Los eventos de VB.NET se basan en delegados y siguen un patrón de publicación-suscripción. Un delegado es un puntero a función con seguridad de tipos. Los eventos ofrecen encapsulación, lo que permite a los suscriptores adjuntar controladores mientras que el publicador controla la invocación. maneras diferentes suscribirse: declarativamente con Handles o dinámicamente con AddHandler. La función de beneficios incluyen desacoplamiento y extensibilidad, mientras que factores importantes Hay que tener en cuenta las fugas de memoria derivadas de suscripciones persistentes y la seguridad de los hilos al generar eventos.
Responda con ejemplos:
Public Class TimerService
Public Event Tick As EventHandler
Public Sub RaiseTick()
RaiseEvent Tick(Me, EventArgs.Empty)
End Sub
End Class
Public Class Consumer
Private WithEvents _svc As New TimerService()
Private Sub OnTick(sender As Object, e As EventArgs) Handles _svc.Tick
' Declarative subscription
End Sub
Public Sub WireUp()
AddHandler _svc.Tick, AddressOf OnTick ' Dynamic subscription
End Sub
End Class
Cancelar suscripción con RemoveHandler para evitar ciclos de vida no deseados.
9) ¿Qué conceptos de ciclo de vida y administración de memoria son importantes en VB.NET? Analice GC, finalización e IDisposable.
VB.NET depende del recolector de basura generacional (GC) del CLR para administrar los ciclos de vida de los objetos en el montón. Finalizadores (Protected Overrides Sub Finalize) proporcionan un último recurso para la limpieza, pero son no deterministas y costosos. IDisposable Este patrón permite la liberación determinista de recursos no administrados, como descriptores de archivos, sockets o conexiones de bases de datos. ventajas of Using ... End Using incluir claridad, seguridad excepcional y limpieza rápida; el potencial desventajas de ignorar IDisposable son fugas de recursos y degradación del rendimiento.
Ejemplo:
Using conn As New SqlClient.SqlConnection(cs)
conn.Open()
Using cmd As New SqlClient.SqlCommand("SELECT 1", conn)
Dim result = cmd.ExecuteScalar()
End Using
End Using
Utilice IDisposable Para los envoltorios de recursos, minimice los finalizadores y deje que el recolector de basura gestione la memoria puramente administrada.
10) ¿Son importantes Option Strict, Option Explicit y Option Infer? Detalle las diferencias, ventajas y desventajas.
Estas opciones del compilador controlan la disciplina de tipos y la resolución de nombres, lo que repercute directamente en la corrección y la mantenibilidad. Option Explicit On Exige declaraciones previas al uso. Option Strict On Prohíbe la vinculación tardía y las conversiones de estrechamiento implícito. Option Infer On permite la inferencia de tipos para variables locales. beneficios Incluye detección de errores más temprana, refactorización más segura y mejor rendimiento mediante enlace temprano. Posible desventajas Son más prolijos y presentan una curva de aprendizaje más pronunciada para los principiantes.
| Configuración | Proposito | Ventajas | Desventajas | Ejemplo |
|---|---|---|---|---|
Option Explicit On |
Requerir declaraciones | Menos errores tipográficos, alcance claro | Ligera verborrea | Dim x As Integer = 0 |
Option Strict On |
Mecanismo fuerte, sin enlace tardío | Errores tempranos, velocidad | Less flexibilidad dinámica | Sin estrechamiento implícito |
Option Infer On |
Inferencia de tipo local | Conciso y legible | Puede ocultar tipos | Dim n = 42 (Entero) |
Fragmento de ejemplo:
Option Strict On Option Explicit On Option Infer On
Adoptar los valores predeterminados anteriores se considera una buena práctica para el código de producción.
11) ¿Cuáles son los diferentes tipos de herencia compatibles con VB.NET? Explique con ejemplos.
VB.NET es compatible herencia única para clases y herencia múltiple atravesar las interfacesEso significa que una clase puede heredar de una clase base (Inherits) pero puede implementar múltiples interfaces (ImplementsAdemás, la herencia puede ser jerárquica (varias clases derivadas de una base), multi nivel (clase A → B → C), y basado en interfaz (contratos compartidos).
| Tipo de herencia | Descripción | Ejemplo |
|---|---|---|
| Individual | Una clase hereda de otra | Class B Inherits A |
| Multi nivel | Cadena de herencia | C Inherits B |
| Jerárquico | Varias clases derivadas comparten una base. | Manager, Engineer Inherit Employee |
| Múltiples (a través de interfaces) | La clase implementa varias interfaces. | Class X Implements I1, I2 |
Ejemplo:
Public Class Animal
Public Overridable Sub Speak()
Console.WriteLine("Generic sound")
End Sub
End Class
Public Class Dog
Inherits Animal
Public Overrides Sub Speak()
Console.WriteLine("Bark")
End Sub
End Class
El ventajas incluir la reutilización, el polimorfismo y la claridad en los comportamientos compartidos; desventajas Aparecen cuando las jerarquías se vuelven demasiado profundas o rígidas.
12) ¿Cómo funciona el manejo de excepciones en VB.NET? Explique el ciclo de vida de un bloque Try…Catch…Finally.
VB.NET utiliza el manejo estructurado de excepciones (SEH) basado en CLR. Un bloque Try contiene código arriesgado; Catch Los bloques manejan excepciones de tipos específicos; el opcional Finally se ejecuta independientemente del éxito o el fracaso. ciclo de vida es determinista:
- Entrar
Tryalcance. - En caso de excepción, desenrolle la pila hasta la coincidencia.
Catch. - Implementación
Finallyantes de irse.
Ventajas: Mayor fiabilidad, limpieza de recursos más eficiente, depuración consistente.
Desventajas: La captura excesiva puede enmascarar los insectos.
Ejemplo:
Try
Dim n = Integer.Parse("abc")
Catch ex As FormatException
Console.WriteLine("Invalid number")
Finally
Console.WriteLine("Execution complete")
End Try
Siempre atrapa el más específico Tipo de excepción y evite bloques catch vacíos.
13) ¿Cuál es la diferencia entre el enlace temprano y el enlace tardío en VB.NET? ¿Cuándo se debe usar cada uno?
Encuadernación temprana Esto ocurre cuando los tipos de objetos se conocen en tiempo de compilación, lo que permite IntelliSense, la comprobación de tipos y una ejecución más rápida. Encuadernación tardía difiere la resolución de tipos al tiempo de ejecución, normalmente utilizando Object or Reflection.
| Característica | Encuadernación temprana | Encuadernación tardía |
|---|---|---|
| Comprobación en tiempo de compilación | Sí | No |
| Rendimiento | Más rápido | Más lento |
| Compatibilidad con IntelliSense | Disponible | Ninguna |
| Ejemplo | Dim fs As New FileStream(...) |
Dim o As Object = CreateObject("...") |
Ejemplo:
' Early binding
Dim sb As New System.Text.StringBuilder()
sb.Append("Hello")
' Late binding
Dim o As Object = CreateObject("Scripting.Dictionary")
o.Add("A", 1)
Use unión temprana Siempre que sea posible por seguridad y rapidez; preferir unión tardía Solo para interoperabilidad COM o complementos dinámicos.
14) Explique el rol de los espacios de nombres en VB.NET y sus beneficios en soluciones a gran escala.
A espacio de nombres Es un contenedor lógico que organiza clases, interfaces, enumeraciones y estructuras para evitar conflictos de nombres. Los espacios de nombres pueden reflejar jerarquías de carpetas y se importan mediante la función `imports`.
Beneficios:
- Mejor mantenibilidad y modularización.
- Descubrimiento y reutilización de API simplificados.
- Reducción de conflictos de nombres en equipos grandes.
- Admite control de versiones y capas lógicas.
Ejemplo:
Namespace Company.Data
Public Class Repository
End Class
End Namespace
Imports Company.Data
Dim repo As New Repository()
Use convenciones de espacio de nombres como Company.Project.Module Para mayor claridad, evite un anidamiento excesivo que dificulte la legibilidad.
15) ¿Qué son las colecciones y los genéricos en VB.NET? Analice sus ventajas sobre las matrices tradicionales.
Las colecciones son estructuras de datos dinámicas que se utilizan para almacenar y manipular grupos de objetos. Colecciones genéricas (en System.Collections.Generic) mejorar tipo de seguridad, performance y reutilización de código al permitir tipos parametrizados.
| Colección tradicional | Equivalente genérico | Ventajas |
|---|---|---|
ArrayList |
List(Of T) |
Seguridad de tipos, evita el encuadre |
Hashtable |
Dictionary(Of TKey, TValue) |
Tipado fuerte, búsquedas más rápidas |
Queue |
Queue(Of T) |
Variantes seguras para subprocesos disponibles |
Ejemplo:
Dim numbers As New List(Of Integer) From {1, 2, 3}
numbers.Add(4)
Los genéricos eliminan la necesidad de conversión de tipos y mejoran la eficiencia en tiempo de ejecución: clave factores importantes en bases de código VB.NET modernas de alto rendimiento.
16) ¿Cómo se puede lograr el polimorfismo en VB.NET? Ilústrelo con un ejemplo del mundo real.
El polimorfismo permite que una única interfaz represente diferentes implementaciones. VB.NET proporciona polimorfismo en tiempo de compilación vía sobrecarga polimorfismo en tiempo de ejecución atravesar anulación.
Ejemplo:
Public MustInherit Class Shape
Public MustOverride Function Area() As Double
End Class
Public Class Circle
Inherits Shape
Private _r As Double
Public Sub New(r As Double) : _r = r : End Sub
Public Overrides Function Area() As Double
Return Math.PI * _r * _r
End Function
End Class
Aquí, diferente Shape Los distintos tipos implementan el mismo contrato de manera diferente.
Ventajas: extensibilidad y mantenibilidad; desventajas: Sobrecarga de tiempo de ejecución y complejidad reducidas en la depuración de jerarquías.
17) ¿Cuál es la diferencia entre Dispose() y Finalize() en VB.NET? ¿Cuándo se debe implementar cada uno?
Ambas se relacionan con la limpieza de recursos, pero cumplen funciones diferentes. ciclo de vida fases
| Característica | Disponer() | Finalizar () |
|---|---|---|
| Proposito | Limpieza determinista de recursos no administrados | Limpieza no determinista basada en GC |
| Invocación | Explícito (Using / manual) |
Implícito por GC |
| Patrón de Costura | IDisposable |
Anular Finalize() |
| Ejemplo | Using conn As New SqlConnection() |
Raramente usado |
Ejemplo:
Public Class FileLogger
Implements IDisposable
Private fs As FileStream
Public Sub Dispose() Implements IDisposable.Dispose
fs.Dispose()
GC.SuppressFinalize(Me)
End Sub
End Class
Implementar siempre Dispose() para limpieza determinista y solo anulación Finalize() al envolver directamente los identificadores no administrados.
18) ¿Cómo mejoran los atributos los metadatos en los ensamblados de VB.NET? Proporcione ejemplos comunes.
Los atributos en VB.NET se adjuntan declarativos metadatos para codificar elementos: clases, métodos, propiedades o ensamblados. Estos metadatos son accesibles en tiempo de ejecución mediante reflexión e influye en las herramientas, los marcos de trabajo y los comportamientos.
Atributos comunes:
[Serializable]— marca las clases para la serialización binaria.[Obsolete]— Marca las API obsoletas.[DllImport]— habilita P/Invoke.[DebuggerStepThrough]— guía al depurador.
Ejemplo:
<Obsolete("Use NewLogger instead")>
Public Class OldLogger
End Class
Beneficios: Centraliza la configuración, mejora la legibilidad y se integra perfectamente con frameworks como ASP.NET o Entity Framework.
19) Explique cómo funciona la reflexión en VB.NET y dé un caso de uso.
La reflexión permite la inspección y manipulación de metadatos en tiempo de ejecución mediante el uso de System.Reflection espacio de nombres. Los desarrolladores pueden descubrir tipos, métodos, propiedades, e incluso invocar miembros dinámicamente.
Ejemplo:
Dim t = GetType(String)
For Each m In t.GetMethods()
Console.WriteLine(m.Name)
Next
Casos de uso:
- Creación de arquitecturas modulares.
- Serialización/deserialización dinámica.
- Generando documentación.
- Marcos de prueba.
Ventajas: flexibilidad y potencia; desventajas: Ejecución más lenta y posibles problemas de seguridad.
20) ¿Qué son los métodos de extensión y en qué se diferencian de la herencia o las utilidades en VB.NET?
Los métodos de extensión permiten a los desarrolladores agregar nuevas funcionalidades a los tipos existentes sin modificar ni heredar de ellos. Se declaran en Módulo alcance y marcado con <Extension()> atributo.
Ejemplo:
Imports System.Runtime.CompilerServices
Module StringExtensions
<Extension()>
Public Function ToTitleCase(s As String) As String
Return Globalization.CultureInfo.CurrentCulture.TextInfo.ToTitleCase(s.ToLower())
End Function
End Module
' Usage
Dim result = "hello world".ToTitleCase()
Ventajas: Mejora de la legibilidad, la mantenibilidad y el diseño fluido de la API.
Desventajas: Puede generar ambigüedad si se usa en exceso.
Proporcionan una alternativa elegante a las utilidades auxiliares estáticas, manteniendo al mismo tiempo la capacidad de descubrimiento en IntelliSense.
21) Explica el ciclo de vida de un Windows Aplicación de formularios en VB.NET.
El Windows ciclo de vida de las formas Consiste en una secuencia de eventos desde la inicialización hasta la eliminación. Comienza cuando Application.Run() Se llama a la función que crea el formulario principal e inicia el bucle de mensajes. Las etapas principales son:
- Inicialización – El constructor establece valores predeterminados, y
InitializeComponent()Crea la interfaz de usuario. - Evento de carga – El formulario y los controles están completamente creados.
- Activado/Pintura – El formulario se muestra y se dibuja.
- La interacción del usuario – Se procesan los eventos de entrada (Clic, Pulsación de tecla).
- Cierre/Cerrado – Se realiza la limpieza y la persistencia de datos.
- tiene – Se liberan la memoria y los recursos no administrados.
Ejemplo:
Public Sub Main()
Application.Run(New MainForm())
End Sub
Mejores prácticas: inicialización de controladores en Form_Load y limpieza en Form_Closing or DisposeEste ciclo de vida organizado garantiza la estabilidad de la interfaz de usuario y la gestión de recursos.
22) ¿Cuáles son las diferentes tecnologías de acceso a datos disponibles en VB.NET? Compare ADO.NET y Entity Framework.
VB.NET admite múltiples capas de acceso a datosnotablemente ADO.NET, Entity Framework (EF) y LINQ a SQL.
| Característica | ADO.NET | Marco de la entidad |
|---|---|---|
| Nivel de abstracción | Bajo (SQL manual, Conjunto de datos) | Alto (ORM, LINQ) |
| Controlar la | Totalmente cubierto sobre SQL y conexiones | Mapeo automatizado |
| Rendimiento | Más rápido para tareas sencillas | Ligera sobrecarga |
| Seguridad de tipos de datos | Manual | Fuertemente tipado |
| Caso de uso | Procedimientos almacenados heredados | modelado de datos moderno |
Ejemplo:
' ADO.NET Example
Using conn As New SqlConnection(cs)
Dim cmd As New SqlCommand("SELECT * FROM Employees", conn)
conn.Open()
Using reader = cmd.ExecuteReader()
While reader.Read()
Console.WriteLine(reader("Name"))
End While
End Using
End Using
Marco de la entidad Simplifica el ciclo de vida al asignar automáticamente las tablas de la base de datos a las clases.
23) ¿Cuál es la diferencia entre DataSet y DataReader en ADO.NET?
DataReader Proporciona una solución rápida, Solo lectura, solo reenvío flujo de datos. DataSet es un en memoria, desconectado Representación de datos.
| Característica | Lector de datos | Conjunto de datos |
|---|---|---|
| Conexión | Requiere conexión abierta | Trabaja sin conexión |
| Uso de la memoria | Baja | Alta |
| Navegación | Solo hacia adelante | Acceso aleatorio |
| Compatibilidad de actualización | No | Sí |
| Rendimiento | Más rápido | Más lento |
Ejemplo:
Dim reader = cmd.ExecuteReader() ' Connected
Dim adapter As New SqlDataAdapter("SELECT * FROM Employees", conn)
Dim ds As New DataSet()
adapter.Fill(ds, "Emp") ' Disconnected
Use DataReader para lectura ligera y DataSet cuando necesite relaciones, actualizaciones u operaciones XML.
24) ¿Cómo se realizan las operaciones CRUD utilizando ADO.NET en VB.NET?
CRUD significa Crear, leer, actualizar, eliminarEstas operaciones se gestionan mediante SqlCommand, SqlConnection y SqlDataAdapter.
Ejemplo:
Using conn As New SqlConnection(cs)
conn.Open()
Dim insertCmd As New SqlCommand("INSERT INTO Employee(Name) VALUES(@n)", conn)
insertCmd.Parameters.AddWithValue("@n", "John")
insertCmd.ExecuteNonQuery()
End Using
Ventajas: control, rendimiento, seguridad de las transacciones.
Desventajas: Código repetitivo y gestión manual de SQL.
Use TransactionScope para garantizar operaciones atómicas en múltiples comandos.
ADO.NET sigue siendo fundamental para el acceso a datos de bajo nivel incluso en marcos de trabajo modernos.
25) ¿Qué es LINQ en VB.NET? Explique sus beneficios y ejemplos de uso.
Consulta integrada de lenguaje (LINQ) Permite realizar consultas a colecciones, XML o bases de datos directamente en la sintaxis de VB.NET. Mejora la legibilidad, la seguridad de tipos y la mantenibilidad.
Ejemplo:
Dim numbers = {1, 2, 3, 4, 5}
Dim evens = From n In numbers
Where n Mod 2 = 0
Select n
For Each n In evens
Console.WriteLine(n)
Next
Beneficios:
- Modelo de consulta unificado para datos en memoria y remotos.
- Comprobación de tipos en tiempo de compilación.
- Riesgo reducido de inyección SQL.
- Depuración y mantenimiento más sencillos.
LINQ simplifica la gestión del ciclo de vida al unificar fuentes de datos dispares bajo una única sintaxis declarativa.
26) ¿Qué son los ensamblados en VB.NET? Diferencie entre ensamblados privados y compartidos.
An asamblea es una biblioteca de código compilado (DLL o EXE) que sirve como una unidad de despliegue, control de versiones y seguridad en la red.
| Categoría | Ubicación | Visibilidad | Ejemplo |
|---|---|---|---|
| Privado Assembly | Carpeta de la aplicación | Aplicación única | App\bin\MyLib.dll |
| Compartido Assembly | GAC (Global Assembly Cache) | Múltiples aplicaciones | DLL con nombre seguro |
Ejemplo (Creación de un nombre seguro):
sn -k keypair.snk
Luego, en VB.NET:
<Assembly: AssemblyKeyFile("keypair.snk")>
Ventajas: Control de versiones, modularidad, reutilización.
Desventajas: Se añadió complejidad al despliegue de GAC.
27) Explique la diferencia entre la programación síncrona y asíncrona en VB.NET con ejemplos.
SyncLas operaciones cronológicas bloquean el hilo hasta que finalizan, mientras que las operaciones asíncronas liberan el hilo para que continúe ejecutándose.
| Característica | Synchonrado | Asincrónico |
|---|---|---|
| Bloqueo de hilos | Sí | No |
| Rendimiento | Más lento | Análisis escalable |
| Ejemplo | ExecuteReader() |
ExecuteReaderAsync() |
Ejemplo:
Public Async Function DownloadAsync(url As String) As Task
Using client As New Net.Http.HttpClient()
Dim content = Await client.GetStringAsync(url)
Console.WriteLine(content)
End Using
End Function
Ventajas: Mejor capacidad de respuesta y escalabilidad de la interfaz de usuario.
Desventajas: Depuración y seguimiento de pila más complejos.
28) ¿Qué es el multihilo en VB.NET? ¿Cómo se gestiona la seguridad de los hilos?
multihilo permite la ejecución simultánea de múltiples rutas de código. VB.NET utiliza System.Threading System.Threading.Tasks espacios de nombres para esto.
Ejemplo:
Dim t1 As New Thread(AddressOf TaskA)
t1.Start()
Sub TaskA()
Console.WriteLine("Running on thread: " & Thread.CurrentThread.ManagedThreadId)
End Sub
Técnicas de seguridad de hilos:
SyncLock(monitor) para prevenir condiciones de carrera.- Estructuras de datos inmutables.
ConcurrentDictionaryTaskpara la concurrencia gestionada.
Ventajas: rendimiento en paralelo; Desventajas: complejidad, posibles bloqueos.
29) ¿Cuáles son los patrones de diseño que se utilizan comúnmente en VB.NET?
Los patrones de diseño proporcionan soluciones reutilizables para problemas de diseño recurrentes. Algunos ejemplos comunes son:
| Patrón de Costura | Categoría | Caso de uso |
|---|---|---|
| Semifallo | Creacional | Instancia compartida global |
| Fábrica | Creacional | abstracción de creación de objetos |
| Observador | Salud Conductual | Sistemas de notificación de eventos |
| MVC | Arquitectura | Separación de la lógica de la interfaz de usuario |
Ejemplo (Singleton):
Public Class Logger
Private Shared _instance As Logger
Private Sub New()
End Sub
Public Shared ReadOnly Property Instance As Logger
Get
If _instance Is Nothing Then _instance = New Logger()
Return _instance
End Get
End Property
End Class
Los patrones garantizan la extensibilidad, la mantenibilidad y una clara separación de responsabilidades.
30) ¿Cómo funciona la recolección de basura (GC) en .NET y cómo se puede optimizar en VB.NET?
El Recolector de basura de .NET Gestiona la memoria automáticamente recuperando los objetos no utilizados. Utiliza colección generacional (0, 1 y 2) para optimizar el rendimiento.
Fases de GC:
- Marcar – identifica objetos vivos.
- Sweep – recupera la memoria de objetos no referenciados.
- Compact – reorganiza los objetos para la memoria contigua.
Técnicas de optimización:
- Use
Usingpara objetos desechables. - Evite la asignación innecesaria de objetos grandes.
- Lláme
GC.Collect()escasamente. - Utilice tipos de valor para datos pequeños e inmutables.
Ejemplo:
Using bmp As New Bitmap(100, 100)
' Work with bitmap
End Using
Una gestión adecuada del recolector de basura garantiza un ciclo de vida estable de las aplicaciones y evita fugas de memoria.
31) Explique los cuatro pilares de la Programación Orientada a Objetos (POO) en VB.NET con ejemplos.
VB.NET, como lenguaje totalmente orientado a objetos, admite los cuatro principios de la programación orientada a objetos: La encapsulación, Herencia, Polimorfismo y Abstracción.
| Principio | Descripción | Ejemplo |
|---|---|---|
| La encapsulación | Agrupar datos con métodos que operan sobre ellos. | Private fields with Public properties |
| Herencia | Derivación de nuevas clases a partir de las existentes | Class Car Inherits Vehicle |
| Polimorfismo | El mismo método se comporta de manera diferente según el tipo. | Overrides Function Draw() |
| Abstracción | Ocultar detalles de implementación complejos | MustInherit clases, interfaces |
Ejemplo:
Public MustInherit Class Shape
Public MustOverride Function Area() As Double
End Class
Public Class Square
Inherits Shape
Public Overrides Function Area() As Double
Return 25
End Function
End Class
Cada principio contribuye a un ciclo de vida de la aplicación más limpio, modular y fácil de mantener.
32) ¿Cómo se realiza el manejo de archivos en VB.NET? Explique con ejemplos.
VB.NET utiliza System.IO Espacio de nombres para gestionar operaciones con archivos como creación, lectura, escritura y eliminación.
Ejemplo:
Dim path = "C:\example.txt" ' Write File.WriteAllText(path, "Hello VB.NET") ' Read Dim content = File.ReadAllText(path) Console.WriteLine(content) ' Append File.AppendAllText(path, vbCrLf & "New Line")
Diferentes maneras:
StreamReader/StreamWriterpara operaciones secuenciales.BinaryReader/BinaryWriterpara datos binarios.FileInfo/DirectoryInfopara la gestión de metadatos.
Beneficios: API sencillas y seguridad ante excepciones; desventajas: Posibles cuellos de botella de E/S si no se gestionan de forma asíncrona.
33) ¿Qué son las operaciones XML en VB.NET? ¿Cómo se puede leer y escribir XML de manera eficiente?
VB.NET proporciona múltiples tipos de procesamiento XML a través de System.Xml y LINQ to XML (System.Xml.Linq).
Ejemplo utilizando LINQ to XML:
Dim books = <Books>
<Book title="VB.NET Essentials" author="John Doe"/>
</Books>
books.Save("books.xml")
Dim loaded = XDocument.Load("books.xml")
For Each book In loaded...<Book>
Console.WriteLine(book.@title)
Next
Ventajas:
- Sintaxis declarativa.
- Consultas sencillas mediante LINQ.
- Validación del esquema (
XmlSchemaSet).
Desventajas:
- Mayor consumo de memoria para archivos de gran tamaño.
Para un mejor rendimiento, prefiero XmlReader para lecturas en streaming.
34) Explique la serialización y sus tipos en VB.NET. Incluya una tabla comparativa.
Publicación por entregas Convierte los objetos a un formato almacenable o transmisible. La deserialización reconstruye el objeto.
| Categoría | Espacio de nombres | Formato | Caso de uso |
|---|---|---|---|
| Binario | System.Runtime.Serialization.Formatters.Binary |
Binario | Rápido, compacto (obsoleto en .NET 5+) |
| XML | System.Xml.Serialization |
XML | Interoperable, legible |
| JSON | System.Text.Json |
JSON | API web modernas |
| Contrato de datos | System.Runtime.Serialization |
XML/JSON | WCF y contratos |
Ejemplo:
Dim emp As New Employee With {.Id = 1, .Name = "Sam"}
Dim serializer As New XmlSerializer(GetType(Employee))
Using fs As New FileStream("emp.xml", FileMode.Create)
serializer.Serialize(fs, emp)
End Using
Beneficios: persistencia sencilla, interoperabilidad; desventajas: Desafíos de control de versiones y coste de rendimiento para gráficos grandes.
35) ¿Cuál es la diferencia entre autenticación y autorización en el contexto de seguridad de VB.NET?
La autenticación verifica que un usuario es; la autorización lo determina Lo que Ellos pueden hacerlo.
| Aspecto | Autenticación | Autorización |
|---|---|---|
| Proposito | Verificar identidad | Conceder derechos de acceso |
| Mecanismo | Credenciales (nombre de usuario/contraseña, token) | Roles, reclamaciones |
| Ejemplo | Validación del formulario de inicio de sesión | Control de acceso basado en roles |
| Espacio de nombres | System.Security.Principal |
System.Web.Security |
Ejemplo:
If User.Identity.IsAuthenticated Then
If User.IsInRole("Admin") Then
' Allow access
End If
End If
Ambas son etapas clave del ciclo de vida de la seguridad: primero la autenticación, luego la autorización.
36) ¿Cómo funciona el cifrado y descifrado en VB.NET? Proporcione un ejemplo práctico.
VB.NET admite criptografía mediante System.Security.Cryptography. Común tipos incluir simétrico (AES, DES) y asimétrico (RSA) cifrado.
Ejemplo con AES:
Dim aes As Aes = Aes.Create() aes.Key = keyBytes aes.IV = ivBytes Dim encryptor = aes.CreateEncryptor(aes.Key, aes.IV)
Beneficios: Protege la confidencialidad y la integridad.
Desventajas: Complejidad de gestión de claves, coste de CPU.
Use cifrado asimétrico para el intercambio de claves y simétrico para grandes volúmenes de datos.
37) ¿Cómo se puede llamar a un servicio web o a una API REST desde VB.NET?
VB.NET puede consumir API REST mediante HttpClient.
Ejemplo:
Imports System.Net.Http
Imports System.Threading.Tasks
Public Async Function GetWeatherAsync() As Task
Using client As New HttpClient()
Dim response = Await client.GetStringAsync("https://api.weather.com/data")
Console.WriteLine(response)
End Using
End Function
Beneficios: Sencillez, soporte asíncrono, integración JSON.
Desventajas: El manejo de excepciones para fallos de red es obligatorio.
También puede usar Add Web Reference para servicios SOAP heredados.
38) ¿Qué son los delegados y las expresiones lambda, y cómo se utilizan juntos en VB.NET?
A delegar es un puntero con seguridad de tipos a una función; un lambda es una función anónima en línea. Suelen trabajar juntas para el manejo de eventos o expresiones LINQ.
Ejemplo:
Dim square As Func(Of Integer, Integer) = Function(x) x * x Console.WriteLine(square(4))
Ventajas: Sintaxis concisa, estilo de programación funcional, reutilización.
Desventajas: Menos legible para lógica compleja.
Los delegados constituyen la base de las devoluciones de llamada asíncronas, los eventos y las expresiones LINQ.
39) ¿Cuál es la diferencia entre código administrado y no administrado en VB.NET?
El código administrado se ejecuta bajo el control del Common Language Runtime (CLR), mientras que el código no administrado se ejecuta directamente en el sistema operativo (por ejemplo, C++ bibliotecas).
| Característica | Gestionado | Sin administrar |
|---|---|---|
| Salud Cerebral | Recolección automática de basura | Gestión manual |
| Seguridad | Aplicado por CLR | Impuesto por el desarrollador |
| Interoperabilidad | Fácil mediante P/Invoke | Manual |
| Ejemplo | Clase VB.NET | C++ DLL |
Ejemplo (P/Invoke):
<DllImport("user32.dll")>
Public Shared Function MessageBox(hwnd As IntPtr, text As String, caption As String, type As Integer) As Integer
End Function
Utilice la interoperabilidad no administrada con precaución y libere siempre los recursos nativos correctamente.
40) ¿Cómo se optimiza el rendimiento de las aplicaciones VB.NET? Enumere las estrategias clave.
La optimización del rendimiento de VB.NET implica algorítmico, de memoria y arquitectónico mejoras.
técnicas:
- Use
StringBuilderpara concatenación en bucles. - Habilite las opciones Strict y Explicit.
- Deseche los recursos no administrados.
- Aprovechar la E/S asíncrona.
- Almacenar en caché los cálculos frecuentes.
- Utilice tipos de valores cuando corresponda.
- Perfil con las herramientas de diagnóstico de Visual Studio.
Ejemplo:
Dim sb As New Text.StringBuilder()
For i = 1 To 10000
sb.Append(i)
Next
Beneficios: Menor consumo de CPU/memoria y mayor capacidad de respuesta.
Desventajas: Las microoptimizaciones pueden perjudicar la legibilidad; mida antes de ajustar.
🔍 Principales preguntas de entrevista sobre VB.Net con escenarios reales y respuestas estratégicas
1) ¿Cuáles son las principales diferencias entre VB.Net y VB6?
Se espera del candidato: El entrevistador quiere comprobar si el candidato entiende cómo ha evolucionado VB.Net desde VB6, centrándose en los paradigmas de programación modernos y la integración del framework .NET.
Respuesta de ejemplo:
“VB.Net es un lenguaje totalmente orientado a objetos que se ejecuta en .NET Framework, mientras que VB6 no es totalmente orientado a objetos y se ejecuta como un lenguaje independiente. VB.Net admite herencia, polimorfismo, manejo estructurado de excepciones e interoperabilidad con otros lenguajes .NET, lo que lo hace más potente y flexible en comparación con VB6.”
2) ¿Puedes explicar el concepto de Common Language Runtime (CLR) en VB.Net?
Se espera del candidato: Comprensión del componente central que ejecuta los programas VB.Net.
Respuesta de ejemplo:
“El Common Language Runtime (CLR) es el motor de ejecución del .NET Framework. Administra la memoria, la ejecución de subprocesos, el manejo de excepciones y la seguridad. El código VB.Net se compila primero en código de Lenguaje Intermedio (IL), que luego es ejecutado por el CLR, lo que garantiza la compatibilidad entre lenguajes y un rendimiento optimizado.”
3) ¿Cómo se manejan las excepciones en VB.Net?
Se espera del candidato: El entrevistador quiere confirmar la capacidad del candidato para escribir código robusto y sin errores.
Respuesta de ejemplo:
En VB.Net, las excepciones se manejan utilizando Try...Catch...Finally cuadra. La Try Esta sección contiene código que podría generar una excepción. Catch esta sección gestiona el error, y la Finally Esta sección ejecuta código de limpieza. Esta estructura garantiza que las aplicaciones permanezcan estables incluso cuando se produzcan errores inesperados.
4) Describa una ocasión en la que optimizó una aplicación VB.Net para obtener un mejor rendimiento.
Se espera del candidato: Capacidad para analizar y mejorar la eficiencia del código.
Respuesta de ejemplo:
“En mi puesto anterior, trabajé en una aplicación que tenía tiempos de respuesta lentos debido a consultas de base de datos ineficientes. Optimizé el código implementando procedimientos almacenados y reduciendo bucles redundantes. Como resultado, el rendimiento de la aplicación mejoró en casi un 40 por ciento.”
5) ¿Cómo se implementa la herencia en VB.Net?
Se espera del candidato: Conocimiento de los principios de la programación orientada a objetos.
Respuesta de ejemplo:
“La herencia en VB.Net se logra utilizando la Inherits Palabra clave. Una clase hija hereda propiedades y métodos de una clase padre, lo que permite la reutilización del código y una mejor mantenibilidad. Por ejemplo, Class Employee : Inherits Person permite que la clase Empleado herede atributos y comportamientos de la clase Persona.”
6) Cuéntame sobre un problema de depuración difícil que hayas resuelto en VB.Net.
Se espera del candidato: Resolución de problemas y pensamiento analítico.
Respuesta de ejemplo:
En mi trabajo anterior, me encontré con un problema de fuga de memoria que provocaba que una aplicación VB.Net fallara tras un uso prolongado. Utilicé herramientas de diagnóstico como Visual Studio Profiler para identificar flujos de archivos sin cerrar. Tras asegurar la correcta liberación de recursos con el Using En dicha declaración, el asunto quedó completamente resuelto.
7) ¿Cómo se gestionan las conexiones a bases de datos en aplicaciones VB.Net?
Se espera del candidato: Conocimiento de ADO.Net y de las mejores prácticas de acceso a datos.
Respuesta de ejemplo:
“Utilizo ADO.Net para conectarme a bases de datos a través de objetos como SqlConnection, SqlCommand y SqlDataAdapterSiempre abro las conexiones lo más tarde posible y las cierro inmediatamente después de usarlas. También uso Using Bloques para garantizar que las conexiones se eliminen correctamente, evitando fugas de recursos.”
8) ¿Cómo manejaría una situación en la que una aplicación VB.Net deja de responder repentinamente en producción?
Se espera del candidato: Capacidad de pensamiento crítico y resolución de problemas bajo presión.
Respuesta de ejemplo:
En tal caso, primero revisaría los registros de eventos y los mensajes de error para determinar la causa. Buscaría bucles infinitos, excepciones no controladas o bloqueos. Una vez identificado el problema, lo reproduciría en un entorno de prueba y aplicaría una solución. Mantendría una comunicación constante con las partes interesadas durante todo el proceso.
9) ¿Cómo se utiliza LINQ en VB.Net para trabajar con colecciones o bases de datos?
Se espera del candidato: Capacidad para utilizar las características modernas de .NET para la consulta de datos.
Respuesta de ejemplo:
LINQ (Language Integrated Query) permite consultar colecciones o bases de datos de forma concisa y legible. Por ejemplo, Dim result = From emp In Employees Where emp.Salary > 50000 Select emp Filtra a los empleados que ganan más de 50,000. Simplifica la manipulación de datos y mejora la legibilidad del código.
10) Describa cómo garantiza la mantenibilidad y escalabilidad del código en proyectos de VB.Net.
Se espera del candidato: Conocimiento de la arquitectura de software y de las mejores prácticas de codificación.
Respuesta de ejemplo:
“En mi último puesto, seguí los principios SOLID y una arquitectura en capas para garantizar la mantenibilidad. Separé la lógica de negocio de las capas de acceso a datos y presentación. También implementé convenciones de nomenclatura consistentes, documentación adecuada y pruebas unitarias, lo que facilitó al equipo la escalabilidad y actualización eficiente del código base.”
