As 40 principais perguntas e respostas da entrevista VB.Net (2026)
Preparando-se para uma entrevista de emprego em VB.Net? É hora de se concentrar nas perguntas que você pode enfrentar. Compreender essas perguntas é fundamental. Perguntas da entrevista do VB.Net Ajuda a revelar suas habilidades de resolução de problemas, mentalidade de programação e conhecimento técnico aprofundado.
O VB.Net oferece amplas oportunidades para profissionais de todos os níveis, desde iniciantes até desenvolvedores seniores. Com sólida experiência técnica e conhecimento do domínio, os candidatos podem demonstrar habilidades analíticas e expertise técnica alinhadas ao desenvolvimento de software no mundo real. Estas perguntas e respostas ajudam os profissionais a se saírem bem em entrevistas, impressionarem recrutadores e aprimorarem suas habilidades gerais de programação e análise.
Reunimos informações de mais de 55 líderes técnicos, gerentes de equipe e profissionais de TI de diversos setores para garantir que estas perguntas de entrevista sobre VB.Net reflitam as expectativas reais de contratação e sejam relevantes para todo o setor.

1) Explique o que é VB.NET e como ele difere do VB clássico (VB6) em termos de tempo de execução, sistema de tipos e características da linguagem.
VB.NET é uma linguagem orientada a objetos, compatível com CLS e direcionada ao Common Language Runtime (CLR). Ao contrário do VB clássico (VB6), que era vinculado ao COM e a um runtime específico, o VB.NET é compilado para Linguagem Intermediária (IL) e executado no CLR do .NET, obtendo benefícios como gerenciamento automático de memória, um sistema de tipos unificado (CTS), genéricos mais ricos e tratamento estruturado de exceções. As características da linguagem foram significativamente aprimoradas: herança verdadeira, interfaces, delegates, atributos e reflexão tornaram-se recursos de primeira classe. A mudança do COM de ligação tardia para assemblies fortemente tipados de ligação antecipada melhora a confiabilidade e as ferramentas. Como resultado, o ciclo de vida de desenvolvimento se integra melhor com CI/CD moderno, NuGet gerenciamento de pacotes e interoperabilidade entre linguagens em todo o ecossistema .NET.
Exemplo:
Uma classe VB.NET pode herdar (Inherits) de outra classe e implementar múltiplas interfaces, algo que o VB6 não conseguia fazer nativamente:
Public Class Repository
Inherits BaseRepository
Implements IDisposable
' ...
End Class
👉 Download gratuito do PDF: Perguntas e respostas para entrevistas de VB.Net
2) Como o sistema de tipos do .NET se relaciona com o VB.NET? Distinga tipos de valor de tipos de referência com exemplos.
O Sistema de Tipos Comuns (CTS) do .NET define os fundamentos. tipos Usado pelo VB.NET. Tipos de valor (por exemplo, Integer, Boolean, Datee definido pelo usuário Structure) são normalmente alocados na pilha e copiados por valor; tipos de referência (por exemplo, Class, String, Array, DelegateOs tipos de valor residem no heap gerenciado e são acessados por meio de referências. Essa diferença influencia o desempenho, a semântica de passagem de dados e as características da memória. Os tipos de valor são ideais para construções pequenas, imutáveis e centradas em dados, enquanto os tipos de referência são adequados para entidades com identidade, comportamento complexo e polimorfismo.
Responda com exemplos:
' 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
fatores Os fatores que influenciam a escolha incluem tamanho, mutabilidade, necessidade de herança e cenários de interoperabilidade.
3) Qual a diferença entre uma Classe, uma Estrutura e um Módulo em VB.NET? Forneça uma comparação estruturada.
Classes, estruturas e módulos representam diferentes maneiras de modelar comportamento e dados. Aula É um tipo de referência que suporta herança e polimorfismo. Estrutura É um tipo de valor ideal para agregados pequenos e imutáveis, sem herança. Módulo É um contêiner para membros compartilhados e não pode ser instanciado ou herdado. vantagens com desvantagens variam de acordo com o ciclo de vida, a memória e a flexibilidade do projeto.
| Aspecto | Aula | Estrutura | Módulo |
|---|---|---|---|
| Formato | Referência | Valor | Recipiente especial |
| Herança | suportes Inherits |
Não suportado | Não aplicável |
| Instanciação | Dim c = New C() |
Dim s As S |
Não instanciável |
| Membros | Instância + Compartilhada | Instância + Compartilhada | Compartilhado apenas |
| Casos de uso | Entidades, polimorfismo | Agregados de dados pequenos | Utilitários auxiliares, constantes |
Exemplo:
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) Em que situações um desenvolvedor deve usar ByVal em vez de ByRef no VB.NET? Inclua uma tabela comparativa prática.
O VB.NET suporta dois tipos principais de passagem de parâmetros. tipos: ByVal (padrão) e PorRef. ByVal Passa uma cópia do valor (ou uma cópia da referência para tipos de referência), preservando a variável original do chamador. PorRef A função passa uma variável por referência, permitindo que a função chamada substitua a variável da função que a chamou. Escolher a abordagem correta tem Benefícios para clareza e desempenho, mas o uso inadequado pode introduzir desvantagens tais como efeitos colaterais surpreendentes.
| Dimensão | ByVal | PorRef |
|---|---|---|
| Mutação da variável de chamada | Não permitido | Permitido |
| Desempenho para estruturas grandes | Custo potencial de cópia | Evita cópias |
| Clareza e segurança | Mais alto | Diminui se usado incorretamente |
| Uso típico | entradas | Saídas/atualizações no local |
Exemplo:
Sub IncrementByRef(ByRef x As Integer)
x += 1
End Sub
Sub Demo()
Dim n As Integer = 10
IncrementByRef(n) ' n becomes 11
End Sub
Uso PorRef Quando você precisa definir saídas ou realizar transformações no local; prefira ByVal Para APIs previsíveis e sem efeitos colaterais.
5) Quais modificadores de acesso estão disponíveis em VB.NET e como eles influenciam o design e o encapsulamento de APIs?
O VB.NET fornece Public, Private, Protected, Friend e Protected Friend (mais Private Protected (em versões mais recentes do .NET). Esses modificadores controlam a visibilidade em todo o limite do assembly e na hierarquia de herança. Particularidades: Public Os membros são a parte externa da sociedade e formam o contrato; Private Oculta detalhes de implementação; Protected expõe às subclasses; Friend expõe dentro da montagem atual; Protected Friend mescla ambos os escopos; Private Protected Restringe-se ao assembly que o contém e aos tipos derivados. O uso apropriado resulta em Benefícios tais como limites claros, refatoração mais segura e acoplamento minimizado. fatores Incluir se os tipos são reutilizados em diferentes assemblies, a estabilidade da superfície da API e considerações de testabilidade.
Exemplo:
Public Class Service
Private ReadOnly _repo As IRepository
Protected Overridable Sub Validate() ' extensible in subclasses
End Sub
End Class
6) Os protocolos sync/Await se aplicam ao VB.NET? Descreva o padrão assíncrono baseado em tarefas com exemplos.
Sim. O VB.NET oferece suporte completo. Async/Await e o padrão assíncrono baseado em tarefas (TAP). Um Async método retorna Task or Task(Of T) e usa Await para retomar de forma assíncrona sem bloquear threads. O vantagens Inclui interfaces de usuário responsivas, E/S escaláveis e fluxo de controle mais claro em vez de callbacks. Desvantagens
pode surgir se os desenvolvedores bloquearem (.Result, .Wait) ou misturar síncrono e assíncrono de forma inadequada. Chave fatores Inclui tratamento de exceções (capturadas no resultado retornado). Task) e comportamento do contexto de sincronização.
Exemplo:
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
Em ASP.NET, prefira o protocolo assíncrono de ponta a ponta para evitar a escassez de threads; Windows Em aplicativos assíncronos, a interface do usuário permanece responsiva.
7) Qual a diferença entre interfaces e classes abstratas (MustInherit) em VB.NET, e quando cada uma deve ser usada?
Interfaces define contratos apenas—membros sem implementação—permitindo diferentes formas Compor comportamentos entre tipos não relacionados. MustInherit As classes podem conter elementos abstratos (MustOverride) e membros concretos, permitindo funcionalidades básicas compartilhadas. O vantagens As interfaces incluem implementação múltipla e baixo acoplamento; desvantagens Não inclua nenhum código compartilhado. MustInherit As classes proporcionam reutilização e estado protegido, mas restringem a herança múltipla.
| Critério | Interface | Classe MustInherit |
|---|---|---|
| Implementação | nenhum | Parcial ou total |
| Herança | Vários permitidos | Base única |
| Campos/Estado | Não permitido | Permitido |
| Versão | Mais difícil de evoluir | Mais fácil com valores padrão virtuais. |
Exemplo:
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
Escolha interfaces para contratos plugáveis; use MustInherit Ao compartilhar a lógica básica em uma hierarquia.
8) Como os eventos e delegados são modelados em VB.NET? Forneça exemplos práticos de uso com Handles e AddHandler.
Em VB.NET, os eventos são baseados em delegates e expõem um padrão de publicação-assinatura. Um delegate é um ponteiro de função com verificação de tipo. Os eventos oferecem encapsulamento, permitindo que os assinantes assinem manipuladores enquanto o publicador controla a invocação. Existem diferentes formas Para se inscrever: declarativamente com Handles ou dinamicamente com AddHandler. O Benefícios incluem desacoplamento e extensibilidade, enquanto fatores É preciso considerar os vazamentos de memória decorrentes de assinaturas persistentes e a segurança de threads ao gerar eventos.
Responda com exemplos:
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 inscrição com RemoveHandler para evitar ciclos de vida indesejados.
9) Quais conceitos de ciclo de vida e gerenciamento de memória são importantes em VB.NET? Discuta GC, finalização e IDisposable.
O VB.NET depende do coletor de lixo generacional (GC) do CLR para gerenciar os ciclos de vida dos objetos no heap. Finalizadores (Protected Overrides Sub Finalize) oferecem uma última chance de recuperação, mas são não determinísticas e caras. IDisposable O padrão permite a liberação determinística de recursos não gerenciados, como identificadores de arquivos, sockets ou conexões de banco de dados. vantagens of Using ... End Using incluem clareza, segurança excepcional e limpeza imediata; o potencial desvantagens de ignorar IDisposable São vazamentos de recursos e degradação de desempenho.
Exemplo:
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
Prefere IDisposable Para wrappers de recursos, minimize os finalizadores e deixe o coletor de lixo gerenciar a memória puramente gerenciada.
10) As opções Option Strict, Option Explicit e Option Infer são importantes? Detalhe as diferenças, vantagens e desvantagens.
Essas opções do compilador controlam a disciplina de tipagem e a resolução de nomes, impactando diretamente a correção e a capacidade de manutenção. Option Explicit On Impõe declarações antes do uso. Option Strict On Impede a ligação tardia e as conversões de estreitamento implícito. Option Infer On Permite a inferência de tipo para variáveis locais. Benefícios Inclui detecção de erros mais precoce, refatoração mais segura e melhor desempenho por meio de vinculação antecipada. Possível desvantagens São mais verbosas e têm uma curva de aprendizado mais acentuada para iniciantes.
| Configuração | Propósito | Diferenciais | Desvantagens | Exemplo |
|---|---|---|---|---|
Option Explicit On |
Exigir declarações | Menos erros de digitação, escopo claro | Ligeiramente verboso | Dim x As Integer = 0 |
Option Strict On |
Digitação rápida, sem vinculação tardia. | Erros iniciais, velocidade | Less flexibilidade dinâmica | Sem estreitamento implícito |
Option Infer On |
Inferência de tipo local | Conciso e de fácil leitura. | Pode obscurecer tipos | Dim n = 42 (Inteiro) |
Exemplo de snippet:
Option Strict On Option Explicit On Option Infer On
Adotar as configurações padrão acima é considerada uma prática recomendada para código de produção.
11) Quais são os diferentes tipos de herança suportados em VB.NET? Explique com exemplos.
VB.NET suporta herança única para aulas e herança múltipla através de interfaces deIsso significa que uma classe pode herdar de uma classe base (Inherits) mas pode Implementar múltiplas interfaces (ImplementsAlém disso, a herança pode ser hierárquica (várias classes derivadas de uma base), multinível (classe A → B → C), e baseado em interface (contratos compartilhados).
| Tipo de herança | Descrição | Exemplo |
|---|---|---|
| Individual | Uma classe herda de outra. | Class B Inherits A |
| Multinível | Cadeia de herança | C Inherits B |
| Hierárquico | Diversas classes derivadas compartilham uma base comum. | Manager, Engineer Inherit Employee |
| Múltiplos (via interfaces) | A classe implementa diversas interfaces. | Class X Implements I1, I2 |
Exemplo:
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
O sistema de estantes ResinDek foi escolhido por sua capacidade de personalização, vantagens incluem reutilização, polimorfismo e clareza em comportamentos compartilhados; desvantagens surgem quando as hierarquias se tornam muito profundas ou rígidas.
12) Como funciona o tratamento de exceções em VB.NET? Explique o ciclo de vida de um bloco Try…Catch…Finally.
O VB.NET utiliza tratamento de exceções estruturado (SEH) baseado no CLR. Um bloco Try contém código arriscado; Catch Os blocos tratam exceções de tipos específicos; o opcional Finally Executa independentemente do sucesso ou fracasso. wifecycwe é determinístico:
- Entrar
Tryescopo. - Em caso de exceção, desfaça a pilha para a correspondência.
Catch. - Execute
Finallyantes de sair.
Vantagens: Maior confiabilidade, limpeza de recursos mais eficiente e depuração consistente.
Desvantagens: A captura excessiva pode mascarar os insetos.
Exemplo:
Try
Dim n = Integer.Parse("abc")
Catch ex As FormatException
Console.WriteLine("Invalid number")
Finally
Console.WriteLine("Execution complete")
End Try
Sempre pegue o mais específico Tipo de exceção e evite blocos catch vazios.
13) Qual a diferença entre vinculação antecipada e vinculação tardia em VB.NET? Quando cada uma deve ser usada?
Encadernação antecipada Ocorre quando os tipos de objeto são conhecidos em tempo de compilação, permitindo o uso do IntelliSense, a verificação de tipos e uma execução mais rápida. Ligação tardia Adia a resolução de tipos para o tempo de execução, normalmente usando Object or Reflection.
| Característica | Encadernação Antecipada | Encadernação Tardia |
|---|---|---|
| Verificação em tempo de compilação | Sim | Não |
| Desempenho | Mais rápido | Mais lento |
| Suporte IntelliSense | Disponível | nenhum |
| Exemplo | Dim fs As New FileStream(...) |
Dim o As Object = CreateObject("...") |
Exemplo:
' 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)
Uso ligação inicial Sempre que possível, por questões de segurança e rapidez; prefira ligação tardia Somente para interoperabilidade COM ou plug-ins dinâmicos.
14) Explique o papel dos namespaces em VB.NET e seus benefícios em soluções de grande escala.
A namespace Um namespace é um contêiner lógico que organiza classes, interfaces, enumerações e estruturas para evitar conflitos de nomes. Namespaces podem espelhar hierarquias de pastas e são importados usando Imports.
Benefícios:
- Melhor capacidade de manutenção e modularização.
- Descoberta e reutilização simplificadas de APIs.
- Redução de conflitos de nomes em equipes grandes.
- Suporta controle de versão e camadas lógicas.
Exemplo:
Namespace Company.Data
Public Class Repository
End Class
End Namespace
Imports Company.Data
Dim repo As New Repository()
Uso convenções de namespace como Company.Project.Module Para maior clareza, evite aninhamento excessivo que prejudique a legibilidade.
15) O que são Collections e Generics em VB.NET? Discuta suas vantagens em relação aos arrays tradicionais.
Coleções são estruturas de dados dinâmicas usadas para armazenar e manipular grupos de objetos. Coleções genéricas (em System.Collections.Generic) melhorar segurança de tipo, atuação e reutilização de código permitindo tipos parametrizados.
| Coleção Tradicional | Equivalente genérico | Diferenciais |
|---|---|---|
ArrayList |
List(Of T) |
Compatível com tipos de dados, evita o uso de caixas. |
Hashtable |
Dictionary(Of TKey, TValue) |
Tipagem forte, pesquisas mais rápidas |
Queue |
Queue(Of T) |
Variantes à prova de rosca disponíveis |
Exemplo:
Dim numbers As New List(Of Integer) From {1, 2, 3}
numbers.Add(4)
Os genéricos eliminam a necessidade de conversão de tipos e melhoram a eficiência em tempo de execução — fundamental. fatores em bases de código VB.NET modernas de alto desempenho.
16) Como você pode obter polimorfismo em VB.NET? Ilustre com um exemplo prático.
O polimorfismo permite que uma única interface represente diferentes implementações. O VB.NET oferece essa funcionalidade. polimorfismo em tempo de compilação via sobrecarregar com polimorfismo de tempo de execução através de predominante.
Exemplo:
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
Aqui, diferentes Shape Os tipos implementam o mesmo contrato de maneiras diferentes.
Vantagens: extensibilidade e facilidade de manutenção; desvantagens: Pequena sobrecarga de tempo de execução e complexidade nas hierarquias de depuração.
17) Qual a diferença entre Dispose() e Finalize() em VB.NET? Quando cada um deve ser implementado?
Ambos se relacionam com a limpeza de recursos, mas servem a propósitos diferentes. wifecycwe fases.
| Característica | Dispose () | Finalizar () |
|---|---|---|
| Propósito | Limpeza determinística de recursos não gerenciados | Limpeza não determinística baseada em GC |
| Invocação | Explícito (Using / manual) |
Implícito por GC |
| padrão | IDisposable |
Ultrapassar Finalize() |
| Exemplo | Using conn As New SqlConnection() |
Raramente usado |
Exemplo:
Public Class FileLogger
Implements IDisposable
Private fs As FileStream
Public Sub Dispose() Implements IDisposable.Dispose
fs.Dispose()
GC.SuppressFinalize(Me)
End Sub
End Class
Implemente sempre Dispose() para limpeza determinística e somente substituição Finalize() ao encapsular diretamente identificadores não gerenciados.
18) Como os atributos aprimoram os metadados em assemblies VB.NET? Forneça exemplos comuns.
Em VB.NET, os atributos são anexados de forma declarativa. metadados para codificar elementos — classes, métodos, propriedades ou assemblies. Esses metadados são acessíveis em tempo de execução por meio de reflexão e influencia ferramentas, estruturas e comportamentos.
Atributos comuns:
[Serializable]— marca classes para serialização binária.[Obsolete]— sinaliza APIs obsoletas.[DllImport]— Habilita P/Invoke.[DebuggerStepThrough]— guia o depurador.
Exemplo:
<Obsolete("Use NewLogger instead")>
Public Class OldLogger
End Class
Benefícios: Centraliza a configuração, melhora a legibilidade e integra-se perfeitamente com frameworks como ASP.NET ou Entity Framework.
19) Explique como funciona a reflexão em VB.NET e dê um exemplo de uso.
A reflexão permite a inspeção e manipulação de metadados em tempo de execução usando o System.Reflection namespace. Os desenvolvedores podem descobrir tipos, métodos, Propriedades, e até mesmo invocar membros dinamicamente.
Exemplo:
Dim t = GetType(String)
For Each m In t.GetMethods()
Console.WriteLine(m.Name)
Next
Casos de uso:
- Construindo arquiteturas de plug-ins.
- Serialização/desserialização dinâmica.
- Geração de documentação.
- Estruturas de teste.
Vantagens: flexibilidade e potência; desvantagens: Execução mais lenta e potenciais problemas de segurança.
20) O que são métodos de extensão e como eles diferem da herança ou dos utilitários em VB.NET?
Os métodos de extensão permitem que os desenvolvedores adicionar nova funcionalidade para tipos existentes sem modificar ou herdar deles. Eles são declarados em Módulo escopo e marcado com <Extension()> atributo.
Exemplo:
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()
Vantagens: Melhoria na legibilidade, na facilidade de manutenção e no design fluente da API.
Desvantagens: Pode gerar ambiguidade se usado em excesso.
Elas oferecem uma alternativa elegante às funções auxiliares estáticas, mantendo a capacidade de serem detectadas no IntelliSense.
21) Explique o ciclo de vida de um Windows Aplicativo de formulários em VB.NET.
O sistema de estantes ResinDek foi escolhido por sua capacidade de personalização, Windows Ciclo de vida dos formulários Consiste em uma sequência de eventos, da inicialização ao descarte. Começa quando Application.Run() é chamada, o que cria o formulário principal e inicia o loop de mensagens. As principais etapas são:
- Inicialização – O construtor define os valores padrão, e
InitializeComponent()Constrói a interface do usuário. - Evento de carregamento – O formulário e os controles estão totalmente criados.
- Ativado/Pintura – O formulário é exibido e desenhado.
- Interação com o usuário – Os eventos de entrada (clique, pressionamento de tecla) são processados.
- Encerramento/Fechado – Ocorrem a limpeza e a persistência dos dados.
- dispor – A memória e os recursos não gerenciados são liberados.
Exemplo:
Public Sub Main()
Application.Run(New MainForm())
End Sub
Melhor prática: lidar com inicialização em Form_Load e limpeza em Form_Closing or DisposeEsse ciclo de vida organizado garante a estabilidade da interface do usuário e o gerenciamento de recursos.
22) Quais são as diferentes tecnologias de acesso a dados disponíveis em VB.NET? Compare ADO.NET e Entity Framework.
O VB.NET suporta múltiplos camadas de acesso a dados, notavelmente ADO.NET, Entity Framework (EF) e LINQ para SQL.
| Característica | ADO.NET | Estrutura de entidade |
|---|---|---|
| Nível de abstração | Baixo (SQL manual, conjunto de dados) | Alto (ORM, LINQ) |
| Controlar | Totalmente sobre SQL e conexões | Mapeamento automatizado |
| Desempenho | Mais rápido para tarefas simples | Leve sobrecarga |
| Segurança do tipo de dados | manual | Fortemente tipado |
| Caso de uso | Legado, procedimentos armazenados | Modelagem de dados moderna |
Exemplo:
' 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
Estrutura de entidade Simplifica o ciclo de vida mapeando automaticamente as tabelas do banco de dados para as classes.
23) Qual é a diferença entre DataSet e DataReader no ADO.NET?
DataReader fornece um rápido, somente para frente, somente para leitura fluxo de dados. DataSet é um na memória, desconectado representação de dados.
| Característica | Leitor de dados | DataSet |
|---|---|---|
| Conexão | Requer conexão aberta | Funciona offline |
| Uso da Memória | Baixa | Alta |
| Navegação | Somente para frente | Acesso aleatório |
| Suporte de atualização | Não | Sim |
| Desempenho | Mais rápido | Mais lento |
Exemplo:
Dim reader = cmd.ExecuteReader() ' Connected
Dim adapter As New SqlDataAdapter("SELECT * FROM Employees", conn)
Dim ds As New DataSet()
adapter.Fill(ds, "Emp") ' Disconnected
Uso DataReader para leitura leve e DataSet Quando você precisar de relacionamentos, atualizações ou operações XML.
24) Como realizar operações CRUD usando ADO.NET em VB.NET?
CRUD significa Criar, Ler, Atualizar, ExcluirEssas operações são gerenciadas por meio de SqlCommand, SqlConnection e SqlDataAdapter.
Exemplo:
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
Vantagens: Controle, desempenho, segurança das transações.
Desvantagens: Código padrão e gerenciamento manual de SQL.
Uso TransactionScope para garantir operações atômicas em múltiplos comandos.
O ADO.NET continua sendo fundamental para o acesso a dados de baixo nível, mesmo em frameworks modernos.
25) O que é LINQ em VB.NET? Explique seus benefícios e exemplos de uso.
Consulta integrada à linguagem (LINQ) Permite consultar coleções, XML ou bancos de dados diretamente na sintaxe VB.NET. Isso melhora a legibilidade, a segurança de tipos e a facilidade de manutenção.
Exemplo:
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
Benefícios:
- Modelo de consulta unificado para dados em memória e remotos.
- Verificação de tipos em tempo de compilação.
- Risco reduzido de injeção de SQL.
- Depuração e manutenção mais fáceis.
LINQ simplifica o gerenciamento do ciclo de vida ao unificar fontes de dados distintas sob uma única sintaxe declarativa.
26) O que são assemblies em VB.NET? Diferencie entre assemblies privados e compartilhados.
An montagem é uma biblioteca de código compilado (DLL ou EXE) que serve como um unidade de implantação, versionamento e segurança na rede.
| Formato | Localização: | Visibilidade | Exemplo |
|---|---|---|---|
| Privado Assembly | Pasta do aplicativo | Aplicação única | App\bin\MyLib.dll |
| Partilhado Assembly | GAC (Global Assembly cache) | Vários aplicativos | DLL com nome forte |
Exemplo (Criando um nome forte):
sn -k keypair.snk
Em seguida, em VB.NET:
<Assembly: AssemblyKeyFile("keypair.snk")>
Vantagens: Controle de versão, modularidade, reutilização.
Desvantagens: Complexidade adicional na implantação do GAC.
27) Explique a diferença entre programação síncrona e assíncrona em VB.NET com exemplos.
SyncOperações cronológicas bloqueiam a thread até sua conclusão, enquanto operações assíncronas liberam a thread para continuar a execução.
| Característica | Síncrono | Assíncrono |
|---|---|---|
| Bloqueio de Tópicos | Sim | Não |
| Desempenho | Mais lento | Escalável |
| Exemplo | ExecuteReader() |
ExecuteReaderAsync() |
Exemplo:
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
Vantagens: Melhor capacidade de resposta e escalabilidade da interface do usuário.
Desvantagens: Depuração e rastreamento de pilha mais complexos.
28) O que é multithreading em VB.NET? Como gerenciar a segurança de threads?
multithreading Permite a execução simultânea de múltiplos caminhos de código. O VB.NET utiliza o System.Threading com System.Threading.Tasks Espaços de nomes para isto.
Exemplo:
Dim t1 As New Thread(AddressOf TaskA)
t1.Start()
Sub TaskA()
Console.WriteLine("Running on thread: " & Thread.CurrentThread.ManagedThreadId)
End Sub
Técnicas de segurança de roscas:
SyncLock(monitorar) para prevenir condições de corrida.- Estruturas de dados imutáveis.
ConcurrentDictionarycomTaskpara concorrência gerenciada.
Vantagens: desempenho paralelo; Desvantagens: complexidade, potenciais impasses.
29) Quais são os padrões de projeto comumente usados em VB.NET?
Os padrões de projeto fornecem soluções reutilizáveis para problemas de projeto recorrentes. Alguns exemplos comuns incluem:
| padrão | Formato | Caso de uso |
|---|---|---|
| Filho único | Criativo | Instância global compartilhada |
| Fábrica | Criativo | Abstração de criação de objetos |
| Observador | Comportamentais | sistemas de notificação de eventos |
| MVC | Agilidade | separação da lógica da interface do usuário |
Exemplo (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
Os padrões garantem extensibilidade, facilidade de manutenção e uma clara separação de responsabilidades.
30) Como funciona a coleta de lixo (GC) no .NET e como você pode otimizá-la no VB.NET?
O sistema de estantes ResinDek foi escolhido por sua capacidade de personalização, Coletor de lixo do .NET Gerencia a memória automaticamente, recuperando objetos não utilizados. Ele usa coleção geracional (0, 1 e 2) para otimizar o desempenho.
Fases GC:
- Mark – identifica objetos vivos.
- Varrer – recupera a memória de objetos não referenciados.
- Compact – reorganiza os objetos para memória contígua.
Técnicas de Otimização:
- Uso
Usingpara objetos descartáveis. - Evite alocações desnecessárias de objetos grandes.
- Ligar
GC.Collect()moderadamente. - Utilize tipos de valor para dados imutáveis de pequena quantidade.
Exemplo:
Using bmp As New Bitmap(100, 100)
' Work with bitmap
End Using
O gerenciamento adequado do coletor de lixo (GC) garante um ciclo de vida estável para as aplicações e previne vazamentos de memória.
31) Explique os quatro pilares da Programação Orientada a Objetos (POO) em VB.NET com exemplos.
O VB.NET, como uma linguagem totalmente orientada a objetos, suporta todos os quatro princípios da POO: Encapsulamento, Herança, Polimorfismo e Abstração.
| Princípio | Descrição | Exemplo |
|---|---|---|
| Encapsulamento | Agrupar dados com métodos que operam sobre eles. | Private fields with Public properties |
| Herança | Derivar novas classes a partir de classes existentes. | Class Car Inherits Vehicle |
| Polimorfismo | O mesmo método se comporta de maneira diferente em diferentes tipos. | Overrides Function Draw() |
| Abstração | Ocultar detalhes complexos de implementação | MustInherit Classes, Interfaces |
Exemplo:
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 princípio contribui para um ciclo de vida de aplicação mais limpo, modular e de fácil manutenção.
32) Como você realiza o processamento de arquivos em VB.NET? Explique com exemplos.
O VB.NET usa o System.IO Espaço de nomes para lidar com operações de arquivo, como criação, leitura, gravação e exclusão.
Exemplo:
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")
Jeitos diferentes:
StreamReader/StreamWriterpara operações sequenciais.BinaryReader/BinaryWriterpara dados binários.FileInfo/DirectoryInfopara gerenciamento de metadados.
Benefícios: APIs simples e segurança contra exceções; desvantagens: Possíveis gargalos de E/S se não forem tratados de forma assíncrona.
33) Quais são as operações XML em VB.NET? Como ler e escrever XML de forma eficiente?
O VB.NET oferece múltiplas opções. tipos do processamento XML através de System.Xml e LINQ to XML (System.Xml.Linq).
Exemplo usando 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
Vantagens:
- Sintaxe declarativa.
- Consultas fáceis via LINQ.
- Validação de esquema (
XmlSchemaSet).
Desvantagens:
- Maior consumo de memória para arquivos grandes.
Para melhor desempenho, prefira XmlReader para leituras em streaming.
34) Explique a serialização e seus tipos em VB.NET. Inclua uma tabela comparativa.
Serialização Converte objetos em um formato armazenável ou transmissível. A desserialização reconstrói o objeto.
| Formato | Namespace | Formato | Caso de uso |
|---|---|---|---|
| Binário | System.Runtime.Serialization.Formatters.Binary |
Binário | Rápido e compacto (obsoleto no .NET 5+) |
| XML | System.Xml.Serialization |
XML | Interoperável, legível |
| JSON | System.Text.Json |
JSON | APIs web modernas |
| Contrato de Dados | System.Runtime.Serialization |
XML/JSON | WCF e contratos |
Exemplo:
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
Benefícios: persistência fácil, interoperabilidade; desvantagens: Desafios de versionamento e custo de desempenho para grafos grandes.
35) Qual é a diferença entre autenticação e autorização no contexto de segurança do VB.NET?
A autenticação verifica que Um usuário é; a autorização determina o que Eles podem fazer isso.
| Aspecto | Autenticação | Autorização |
|---|---|---|
| Propósito | Verificar identidade | Conceder direitos de acesso |
| Mecanismo | Credenciais (nome de usuário/senha, token) | Funções, reivindicações |
| Exemplo | Validação do formulário de login | Controle de acesso baseado em função |
| Namespace | System.Security.Principal |
System.Web.Security |
Exemplo:
If User.Identity.IsAuthenticated Then
If User.IsInRole("Admin") Then
' Allow access
End If
End If
Ambas são etapas fundamentais do ciclo de vida da segurança — primeiro a autenticação, depois a autorização.
36) Como funcionam a criptografia e a descriptografia em VB.NET? Forneça um exemplo prático.
O VB.NET oferece suporte à criptografia por meio de System.Security.Cryptography. Comum tipos incluir simétrico (AES, DES) e assimétrico (RSAcriptografia.
Exemplo usando AES:
Dim aes As Aes = Aes.Create() aes.Key = keyBytes aes.IV = ivBytes Dim encryptor = aes.CreateEncryptor(aes.Key, aes.IV)
Benefícios: Protege a confidencialidade e a integridade.
Desvantagens: Complexidade de gerenciamento de chaves, custo da CPU.
Uso criptografia assimétrica para troca de chaves e simétrico para dados em massa.
37) Como posso chamar um serviço Web ou uma API REST a partir do VB.NET?
O VB.NET pode consumir APIs REST usando HttpClient.
Exemplo:
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
Benefícios: Simplicidade, suporte assíncrono, integração JSON.
Desvantagens: O tratamento de exceções para falhas de rede é obrigatório.
Você também pode usar Add Web Reference para serviços SOAP legados.
38) O que são delegates e expressões lambda, e como eles são usados juntos em VB.NET?
A delegar é um ponteiro seguro em relação a tipos para uma função; um lambda é uma função anônima embutida. Elas geralmente trabalham juntas para tratamento de eventos ou expressões LINQ.
Exemplo:
Dim square As Func(Of Integer, Integer) = Function(x) x * x Console.WriteLine(square(4))
Vantagens: Sintaxe concisa, estilo de programação funcional, reutilização.
Desvantagens: Menos legível para lógica complexa.
Os delegados formam a base para retornos de chamada assíncronos, eventos e expressões LINQ.
39) Qual é a diferença entre código gerenciado e não gerenciado em VB.NET?
O código gerenciado é executado sob o controle do Common Language Runtime (CLR), enquanto o código não gerenciado é executado diretamente no sistema operacional (por exemplo, C++ bibliotecas).
| Característica | Dirigido | Não gerenciado |
|---|---|---|
| Memória | GC automático | Gestão manual |
| Segurança | CLR aplicado | Imposto pelo desenvolvedor |
| Interoperabilidade | Fácil via P/Invoke | manual |
| Exemplo | Classe VB.NET | C++ DLL |
Exemplo (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
Use a interoperabilidade não gerenciada com cautela e sempre libere os recursos nativos adequadamente.
40) Como você otimiza o desempenho de um aplicativo VB.NET? Liste as principais estratégias.
A otimização do desempenho do VB.NET envolve algorítmico, memória e arquitetural melhorias.
Técnicas:
- Uso
StringBuilderpara concatenação em loops. - Ative as opções Strict e Explicit.
- Descartar recursos não gerenciados.
- Aproveite as oportunidades de E/S assíncrona.
- Armazene em cache os cálculos frequentes.
- Utilize tipos de valor quando apropriado.
- Perfil com as Ferramentas de Diagnóstico do Visual Studio.
Exemplo:
Dim sb As New Text.StringBuilder()
For i = 1 To 10000
sb.Append(i)
Next
Benefícios: Redução do consumo de CPU/memória e melhoria da capacidade de resposta.
Desvantagens: Micro-otimizações podem prejudicar a legibilidade — meça antes de ajustar.
🔍 Principais perguntas de entrevista sobre VB.Net com cenários reais e respostas estratégicas
1) Quais são as principais diferenças entre VB.Net e VB6?
Esperado do candidato: O entrevistador quer verificar se o candidato entende como o VB.Net evoluiu desde o VB6, com foco em paradigmas de programação modernos e integração com o framework .NET.
Resposta de exemplo:
“VB.Net é uma linguagem totalmente orientada a objetos que roda no .NET Framework, enquanto VB6 não é totalmente orientada a objetos e roda como uma linguagem independente. VB.Net suporta herança, polimorfismo, tratamento estruturado de exceções e interoperabilidade com outras linguagens .NET, o que a torna mais poderosa e flexível em comparação com VB6.”
2) Você pode explicar o conceito de Common Language Runtime (CLR) em VB.Net?
Esperado do candidato: Compreensão do componente principal que executa programas em VB.Net.
Resposta de exemplo:
“O Common Language Runtime (CLR) é o mecanismo de execução do .NET Framework. Ele gerencia memória, execução de threads, tratamento de exceções e segurança. O código VB.Net é primeiro compilado em código de Linguagem Intermediária (IL), que é então executado pelo CLR, garantindo compatibilidade entre linguagens e desempenho otimizado.”
3) Como lidar com exceções em VB.Net?
Esperado do candidato: O entrevistador deseja confirmar a capacidade do candidato de escrever código robusto e sem erros.
Resposta de exemplo:
Em VB.Net, as exceções são tratadas usando o Try...Catch...Finally bloquear. o Try Esta seção contém código que pode lançar uma exceção. Catch A seção trata do erro, e o Finally Esta seção executa o código de limpeza. Essa estrutura garante que os aplicativos permaneçam estáveis mesmo quando ocorrem erros inesperados.”
4) Descreva uma situação em que você otimizou um aplicativo VB.Net para obter melhor desempenho.
Esperado do candidato: Capacidade de analisar e melhorar a eficiência do código.
Resposta de exemplo:
“Na minha função anterior, trabalhei em um aplicativo que apresentava tempos de resposta lentos devido a consultas ineficientes ao banco de dados. Otimizei o código implementando procedimentos armazenados e reduzindo loops redundantes. Como resultado, o desempenho do aplicativo melhorou em quase 40%.”
5) Como implementar herança em VB.Net?
Esperado do candidato: Conhecimento dos princípios da programação orientada a objetos.
Resposta de exemplo:
“A herança em VB.Net é obtida usando o Inherits palavra-chave. Uma classe filha herda propriedades e métodos de uma classe pai, permitindo a reutilização de código e uma melhor manutenção. Por exemplo, Class Employee : Inherits Person Permite que a classe Employee herde atributos e comportamentos da classe Person.”
6) Conte-me sobre um problema de depuração desafiador que você resolveu em VB.Net.
Esperado do candidato: Resolução de problemas e pensamento analítico.
Resposta de exemplo:
No meu emprego anterior, deparei-me com um problema de vazamento de memória que causava o travamento de um aplicativo VB.Net após uso prolongado. Utilizei ferramentas de diagnóstico como o Visual Studio Profiler para identificar fluxos de arquivos não fechados. Após garantir o descarte adequado de recursos com o Using De acordo com a declaração, o problema foi completamente resolvido.”
7) Como gerenciar conexões de banco de dados em aplicativos VB.Net?
Esperado do candidato: Compreensão do ADO.Net e das melhores práticas de acesso a dados.
Resposta de exemplo:
“Eu uso ADO.Net para me conectar a bancos de dados por meio de objetos como SqlConnection, SqlCommand e SqlDataAdapterSempre abro as conexões o mais tarde possível e as fecho imediatamente após o uso. Também uso Using blocos para garantir que as conexões sejam descartadas corretamente, evitando vazamentos de recursos.”
8) Como você lidaria com uma situação em que um aplicativo VB.Net parasse repentinamente de responder em produção?
Esperado do candidato: Capacidade de pensamento crítico e resolução de problemas sob pressão.
Resposta de exemplo:
“Nesse cenário, eu primeiro analisaria os registros de eventos e as mensagens de erro para determinar a causa. Verificaria a existência de loops infinitos, exceções não tratadas ou impasses. Uma vez identificados, reproduziria o problema em um ambiente de teste e aplicaria uma correção. A comunicação com as partes interessadas seria mantida durante todo o processo.”
9) Como usar LINQ em VB.Net para trabalhar com coleções ou bancos de dados?
Esperado do candidato: Capacidade de usar recursos modernos do .NET para consulta de dados.
Resposta de exemplo:
“LINQ (Language Integrated Query) permite consultar coleções ou bancos de dados de forma concisa e legível. Por exemplo, Dim result = From emp In Employees Where emp.Salary > 50000 Select emp Filtra funcionários que ganham mais de 50,000. Simplifica a manipulação de dados e melhora a legibilidade do código.”
10) Descreva como você garante a manutenção e a escalabilidade do código em projetos VB.Net.
Esperado do candidato: Compreensão da arquitetura de software e das melhores práticas de codificação.
Resposta de exemplo:
“Na minha última função, segui os princípios SOLID e adotei uma arquitetura em camadas para garantir a manutenção. Separei a lógica de negócios das camadas de acesso a dados e de apresentação. Também implementei convenções de nomenclatura consistentes, documentação adequada e testes unitários, o que facilitou a escalabilidade e a atualização eficiente do código pela equipe.”
