No internet connection
  1. Home
  2. Dúvidas Gerais

Perguntas de Entrevista - Parte 1

Por Gabriele Martins Pereira @gabi.mp
    2023-01-31 18:33:10.196Z

    Seguindo o post do @ThiagoMarinho (Perguntas para entrevista de C# e .NET) trago aqui algumas respostas que pesquisei com as referências dos textos. Essas sãos as primeiras 6 perguntas respondidas. Se todos curtirem a ideia, pretendo fazer outros posts respondendo as outras perguntas. Qualquer observação, correção ou sugestão, comente aqui :)

    Perguntas e Respostas

    O C# é uma linguagem compilada, tipada e gerenciada, o que isto significa?

    Compiladores recebem código legível por seres humanos e convertem-no para código de máquina, legível pelo computador. Em uma linguagem compilada, a máquina de destino traduz o programa diretamente. Os compiladores geram códigos que podem ser executados diretamente pelo computador (Executável ou .exe).

    Uma linguagem tipada é uma linguagem de programação que usa variáveis com tipos específicos. O estilo de tipagem do C# é estático, ou seja, é preciso informar explicitamente o tipo de cada dado utilizado no sistema: variáveis, parâmetros de funções, valores de retorno, etc.

    Os programas desenvolvidos em C# executam num ambiente gerenciado, o que significa que todo o gerenciamento de memória é feito pelo runtime via o GC (Garbage Collector), e não diretamente pelo programador, reduzindo as chances de cometer erros comuns a linguagens de programação onde o gerenciamento da memória é feito diretamente pelo programador.

    O que diferencia uma linguagem compilada de uma interpretada?

    Em uma linguagem compilada, a máquina de destino traduz o programa diretamente. Em uma linguagem interpretada, o código fonte não é traduzido diretamente pela máquina de destino. Em vez disso, um programa diferente, o interpretador, lê e executa o código.

    Explique como o C# funciona

    O C# é o que chamamos de linguagem fortemente tipada. Isso significa que seus tipos de dados são fixos e que não são alteráveis com facilidade. Em uma melhor explicação: se a gente define uma variável como numérica, não será possível atribuir caracteres a ela em outro ponto do código.

    Uma das maiores similaridades com o Java é o fato de que o C# é um exemplo moderno de uma tecnologia orientada a objetos. Apoia-se nessa forma de representação para modelar o mundo real em classes, métodos e interfaces. Suporta, então, subtemas como herança e poliformismo, típicos desse paradigma.

    Assim, como as outras tecnologias que usam objetos, é fortemente baseada em documentação para estabelecer e representar as relações do mundo real.

    Exemplo: um programa para uma loja em C# deve considerar os elementos principais como classes: o produto, a venda, o consumidor, entre outros.

    Também se assemelha ao Java por automatizar e simplificar algumas tarefas das pessoas desenvolvedoras, com Garbage Collector (limpador da memória), máquina virtual que executa o código e código gerenciado. Além disso, apresenta um bom controle de versões.

    O que é o CLR?

    O vídeo abaixo dá uma explicação geral sobre CLR (Common Lenguage Runtime). Está em inglês, porém podemos traduzir a legenda automaticamente para português e vê-lo sem problemas.

    O tempo de execução de linguagem comum, em inglês Common Language Runtime (CLR), é o componente de máquina virtual da plataforma .NET da Microsoft que gerencia a execução de programas .NET. Um processo conhecido como compilação just-in-time converte o código compilado em linguagem de máquina que a CPU do computador executa. A CLR fornece serviços adicionais, incluindo gerenciamento de memória, segurança de tipagem, tratamento de exceção, garbage collection, segurança e gerenciamento de thread (programação assíncrona). Todos os programas escritos para o framework .NET, independentemente da linguagem de programação (C#, VB.NET, F#, entre outros), são executados pela CLR. Todas as versões do framework .NET incluem a CLR.

    • Gerenciamento de Memória: Está relacionado em duas tarefas essenciais: Alocação e Reciclagem. A Alocação ocorre quando o programa requisita um bloco de memória e a Reciclagem ocorre quando um bloco de memória foi alocado, mas os dados não foram requisitados por um determinado número de ciclos ou não há nenhum tipo de referência a este bloco pelo programa, esse bloco é liberado e pode ser reutilizado para outra requisição.

    • Tratamento de Exceção: é o mecanismo responsável pelo tratamento da ocorrência de condições que alteram o fluxo normal da execução de programas de computadores.

    • Garbage Collection: é um processo usado para a automação do gerenciamento de memória. Com ele é possível recuperar uma área de memória inutilizada por um programa, o que pode evitar problemas de vazamento de memória, resultando no esgotamento da memória livre para alocação.

    • Gerenciamento de Thread: é uma forma como um processo/tarefa de um programa de computador é divido em duas ou mais tarefas que podem ser executadas simultaneamente. O suporte à thread é fornecido pelo sistema operacional. Uma thread permite, por exemplo, que o utilizador de um programa utilize uma funcionalidade do ambiente enquanto outras linhas de execução realizam outros cálculos e operações.

    O que é IL?

    O que é IL (Intermediate Lenguage) ou Linguagem Intermediária? É um produto de compilação de código gravado em linguagens .NET de alto nível. Quando você compila o código gravado em uma dessas linguagens, obtém um binário composto de IL. É importante observar que a IL é independente de qualquer linguagem específica executada em runtime; há até mesmo uma especificação separada para que você pode ler se desejar.

    Depois de gerar a IL do código de alto nível, execute-o. Aqui, a CLR assume e inicia o processo de compilação Just-In-Time ou colocando em compilação Just-In-Time seu código da IL no código do computador, que pode ser executado em uma CPU. Dessa forma, a CLR sabe exatamente o que o código está fazendo e pode, efetivamente, gerenciá-lo.

    A Linguagem intermediária também é chamada CIL (Common Intermediate Language) ou MSIL (Microsoft Intermediate Language).

    O que é um Framework?

    Framework é um conjunto de bibliotecas, que abordam funcionalidades, e estruturas, para o desenvolvimento de aplicações, a fim de fornecer soluções para um mesmo domínio de problema, permitindo a reutilização do seu código. Assim, através das diversas linguagens de programação, os Frameworks são criados e identificados pelas metodologias, propósitos, e implementações, aos quais os diversos tipos de aplicações, na maioria orientadas a objetos, poderão reutilizar suas estruturas e códigos.

    Um Framework é formado por um conjunto classes implementadas em uma determinada linguagem de programação, que fornece recursos comuns já prontos, validados e testados, os quais podem ser usados para auxiliar o desenvolvimento de software, viabilizando maior eficiência na resolução dos problemas, otimização de recursos, e detecção de erros. Ele fornece um modelo de dados, usados para resolver um problema específico, abstraindo parte do código das soluções que estamos tratando.

    Na programação orientada a objetos, especificamente, um Framework é um conjunto de classes e interfaces, com objetivo da reutilização de arquitetura de software, é composto por objetos, pelos mapeamentos das suas responsabilidades, que através de interfaces, com um fluxo de controle definido, possibilitará a interação com aplicações, ou seja é ele quem irá guiar à solução de um domínio específico.

    Referências

    https://www.freecodecamp.org/portuguese/news/linguagens-de-programacao-interpretadas-x-compiladas-qual-e-a-diferenca/

    https://pt.wikipedia.org/wiki/Linguagem_tipada

    https://www.alura.com.br/artigos/o-que-sao-as-tipagens-estatica-e-dinamica-em-programacao

    https://www.devmedia.com.br/a-evolucao-da-linguagem-de-programacao-csharp/28639#:~:text=Linguagem%20gerenciada%3A%20os%20programas%20desenvolvidos,linguagens%20de%20programa%C3%A7%C3%A3o%20onde%20o

    https://blog.somostera.com/desenvolvimento-web/linguagem-c#:~:text=O%20C%23%20%C3%A9%20o%20que%20chamamos,em%20outro%20ponto%20do%20c%C3%B3digo.

    https://pt.wikipedia.org/wiki/Common_Language_Runtime

    https://learn.microsoft.com/pt-br/dotnet/standard/managed-code

    https://balta.io/blog/o-que-e-um-framework

    • 2 respostas
    1. Thiago Marinho @ThiagoMarinho
        2023-01-31 21:15:08.543Z

        Show Gabi! Apoio a ideia

        1. Em resposta agabi.mp:
          Felipe Augusto @FelipeALCM
            2023-02-01 18:50:24.622Z

            Achei bem interessante.