Pular para o conteúdo principal

Questão de Programação — .Net — VUNESP 2024

Programação.Net
Código
vu081591
Banca
VUNESP
Órgão
DESENVOLVE-SP
Ano
2024
Nível
Superior
Cargo
Analista de Sistemas
No contexto do .NET, assinale a alternativa correta.
  1. AQuando se trabalha com código gerenciado (managed code), a responsabilidade do gerenciamento de memória é do ambiente de runtime.
  2. BArquivos binários resultantes de compilação para CIL (Common Intermediate Language) são considerados código não gerenciado (unmanaged code).
  3. CA compilação JIT realizada pelo CLR necessita do código-fonte do programa na linguagem de alto nível original na qual foi escrito (C#, Visual Basic etc.).
  4. DArquivos binários resultantes de compilação para CIL (Common Intermediate Language) correspondem a bytecode Java, podendo ser executados diretamente por uma JVM.
  5. ECada linguagem de alto nível suportada pelo .NET (C#, Visual Basic etc.) possui sua própria CIL (Common Intermediate Language) correspondente, sendo diferentes entre si.
Revelar gabarito e comentário

GabaritoA — Quando se trabalha com código gerenciado (managed code), a responsabilidade do gerenciamento de memória é do ambiente de runtime.

Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.

.NET: Código Gerenciado, CIL e Compilação JIT

Gabarito: letra A. No .NET, código gerenciado (managed code) é aquele cuja execução é supervisionada pelo runtime (CLR – Common Language Runtime), que assume a responsabilidade pelo gerenciamento de memória, segurança e tratamento de exceções, diferentemente do código não gerenciado, onde o próprio desenvolvedor controla a memória.

A banca testa o conhecimento dos componentes fundamentais da plataforma .NET, especialmente a distinção entre código gerenciado e não gerenciado, o papel da CIL (Common Intermediate Language) e o processo de compilação JIT. O erro típico é associar CIL a bytecode Java ou achar que cada linguagem tem sua própria CIL.

Característica

Código Gerenciado (Managed Code)

Código Não Gerenciado (Unmanaged Code)

Gerenciamento de memória

Responsabilidade do CLR (Garbage Collection)

Responsabilidade do desenvolvedor

Execução

Supervisionada pelo CLR

Executado fora do controle do CLR

Formato de compilação

Compilado para CIL (MSIL)

Compilado diretamente para código de máquina

Exemplo

C#, VB.NET

C++ compilado nativamente

  1. 1Código-fonte (C#, VB)
  2. 2Compilador → CIL
  3. 3Assembly (CIL + metadados)
  4. 4CLR carrega assembly
  5. 5JIT → código nativo
LEVEL · soulevel.com.br

Alternativa A — ✅ Correta ⟵ GABARITO

Conforme o conteúdo de apoio, o CLR é o motor de execução que gerencia memória (Garbage Collection), segurança, tratamento de exceções e execução de threads. O código compilado para CIL (ou MSIL) é executado pelo CLR, e todo esse ambiente de runtime é que cuida da alocação e liberação de memória. Portanto, a afirmação está correta.

O CLR (Common Language Runtime) é o motor de execução. Gerencia memória (Garbage Collection), segurança, tratamento de exceções e execução de threads.

Alternativa B — ❌ Incorreta

Arquivos binários resultantes da compilação para CIL são código gerenciado, não não gerenciado. O código não gerenciado (unmanaged code) é aquele executado fora do controle do CLR, como código C++ compilado diretamente para código de máquina. A CIL é o formato intermediário que será compilado JIT para código nativo pelo CLR, caracterizando-o como gerenciado.

Alternativa C — ❌ Incorreta

A compilação JIT (Just-In-Time) é feita a partir do código CIL (ou MSIL), e não do código-fonte original. O fluxo é: código-fonte (C#, VB.NET) → compilador → CIL → (em execução) JIT → código nativo. O CLR carrega o assembly contendo CIL e, no momento da execução, o JIT traduz esse CIL para código de máquina. Nunca o código-fonte original é utilizado nesse processo.

Alternativa D — ❌ Incorreta

A CIL do .NET não é bytecode Java e não pode ser executada por uma JVM (Java Virtual Machine). Cada plataforma tem seu próprio formato intermediário: o .NET usa CIL e o Java usa bytecode (arquivos .class). Ambos são conceitos análogos, mas incompatíveis. A JVM executa bytecode Java, não CIL. Para executar código .NET, é necessário o CLR.

Alternativa E — ❌ Incorreta

Todas as linguagens de alto nível suportadas pelo .NET (C#, Visual Basic, F#, C++/CLI) compartilham a mesma CIL. O CTS (Common Type System) garante que tipos sejam compatíveis entre linguagens. A CIL é comum e padronizada; o compilador de cada linguagem traduz seu código-fonte para essa mesma CIL. Se cada linguagem tivesse sua própria CIL, a interoperabilidade entre elas não seria possível.

PEGA ESSA DICA!

Para fixar: Código fonte → CIL (comum) → JIT → nativo. Lembre-se: CIL é o intermediário universal; código gerenciado depende do CLR; código não gerenciado (ex.: legacy C++) foge desse controle.

Alternativa A é a correta.

Link permanente: /questoes/vu081591