As 50 principais perguntas e respostas da entrevista C # para 2021

C # é uma linguagem de programação de propósito geral que abrange várias disciplinas como programação orientada a objetos, tipagem estática, programação orientada a componentes, tipagem forte, etc. C # é amplamente utilizado na estrutura ASP.NET para a criação de sites, aplicativos da web e jogos. Existem vastas oportunidades para programação C # em todo o mundo. Se você está pensando em construir uma carreira em programação C #, precisa fazer uma entrevista na qual serão feitas várias perguntas e respostas básicas em C #, conforme listado abaixo.

Esta é uma lista selecionada de perguntas e respostas da entrevista C #, que provavelmente serão feitas durante a entrevista. Os candidatos provavelmente receberão perguntas básicas da entrevista C # para avançar as perguntas da entrevista de nível C # .NET, dependendo de sua experiência e de vários outros fatores. Esta lista cobre todas as perguntas C # para caloiros, bem como perguntas de entrevista C # e respostas para candidatos de nível experiente.

Arquivo PDF de perguntas e respostas da entrevista em C #: Faça o download aqui!

Perguntas e respostas mais frequentes da entrevista C # para novatos e experientes

Aqui estão algumas perguntas freqüentes da entrevista para caloiros, bem como candidatos a desenvolvedores C # experientes para conseguir o emprego certo.

Cobrimos mais de 50 perguntas básicas para avançar as perguntas e respostas mais frequentes das entrevistas em C #

1. O que é C #?

C # é uma linguagem orientada a objetos, segura de tipo e gerenciada, compilada pela estrutura .Net para gerar a linguagem intermediária da Microsoft.

2. Explique os tipos de comentários em C # com exemplos

Única linha

Exemplo:

 //This is a single line comment 

ii. Linha múltipla (/ * * /)

Exemplo:

 /*This is a multiple line comment We are in line 2 Last line of comment*/ 

iii. Comentários XML (///).

Por exemplo:

 /// summary; /// Set error message for multilingual language. /// summary 

3. Podem ser executados vários blocos catch?

Não, vários blocos catch de tipo semelhante não podem ser executados. Depois que o código catch apropriado é executado, o controle é transferido para o bloco finally e, em seguida, o código que segue o bloco finally é executado.

4. Qual é a diferença entre public, static e void?

Variáveis ​​ou métodos declarados públicos podem ser acessados ​​em qualquer lugar do aplicativo. Variáveis ​​declaradas estáticas ou métodos são globalmente acessíveis sem criar uma instância da classe. Os membros estáticos, por padrão, não são acessíveis globalmente; depende do tipo de acesso modificado usado. O compilador armazena o endereço do método como o ponto de entrada e usa essas informações para iniciar a execução antes que qualquer objeto seja criado. E Void é um modificador de tipo que afirma que o método ou variável não retorna nenhum valor.

5. O que é um objeto?

Um objeto é uma instância de uma classe por meio da qual acessamos os métodos dessa classe. A palavra-chave 'New' é usada para criar um objeto. Uma classe que cria um objeto na memória conterá as informações sobre os métodos, variáveis ​​e comportamento dessa classe.

6. Definir construtores

Um construtor é uma função de membro em uma classe que tem o mesmo nome de sua classe. O construtor é chamado automaticamente sempre que uma classe de objeto é criada. Ele constrói os valores dos membros de dados ao inicializar a classe.

7. O que são matrizes irregulares?

O Array que possui elementos do tipo array é denominado Array denteado. Os elementos podem ser de diferentes dimensões e tamanhos. Também podemos chamar Jagged Array como um Array de arrays.

8. Qual é a diferença entre os parâmetros ref e out?

Um argumento passado como ref deve ser inicializado antes de passar para o método, enquanto o parâmetro out não precisa ser inicializado antes de passar para um método.

9. Qual é o uso da instrução 'using' em C #?

O bloco 'usando' é usado para obter um recurso e processá-lo e, em seguida, descartá-lo automaticamente quando a execução do bloco for concluída.

10. O que é serialização?

Quando queremos transportar um objeto através de uma rede, temos que converter o objeto em um fluxo de bytes. O processo de conversão de um objeto em um fluxo de bytes é chamado de serialização. Para um objeto ser serializável, ele deve implementar a Interface ISerialize. A desserialização é o processo reverso de criação de um objeto a partir de um fluxo de bytes.

11. Podemos usar o comando 'this' em um método estático?

Não podemos usar 'This' em um método estático porque só podemos usar variáveis ​​/ métodos estáticos em um método estático.

12. Qual é a diferença entre constantes e somente leitura?

Variáveis ​​constantes são declaradas e inicializadas em tempo de compilação. O valor não pode ser alterado posteriormente. Somente leitura é usado apenas quando queremos atribuir o valor em tempo de execução.

13. O que é uma classe de interface? Dê um exemplo disso

Uma Interface é uma classe abstrata que possui apenas métodos abstratos públicos, e os métodos possuem apenas a declaração e não a definição. Esses métodos abstratos devem ser implementados nas classes herdadas.

 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace DemoApplication { interface Guru99Interface { void SetTutorial(int pID, string pName); String GetTutorial(); } class Guru99Tutorial : Guru99Interface { protected int TutorialID; protected string TutorialName; public void SetTutorial(int pID, string pName) { TutorialID = pID; TutorialName = pName; } public String GetTutorial() { return TutorialName; } static void Main(string[] args) { Guru99Tutorial pTutor = new Guru99Tutorial(); pTutor.SetTutorial(1,'.Net by Guru99'); Console.WriteLine(pTutor.GetTutorial()); Console.ReadKey(); } } } 

14. O que são tipos de valor e tipos de referência?

Um tipo de valor contém um valor de dados em seu próprio espaço de memória. Exemplo

int a = 30;

O tipo de referência armazena o endereço do objeto onde o valor está sendo armazenado. É um ponteiro para outro local da memória.

string b = 'Hello Guru99!!';

15. O que são Custom Control e User Control?

Os controles personalizados são controles gerados como código compilado (Dlls), são mais fáceis de usar e podem ser adicionados à caixa de ferramentas. Os desenvolvedores podem arrastar e soltar controles em seus formulários da web. Os atributos podem, em tempo de design. Podemos facilmente adicionar controles personalizados a vários aplicativos (se Dlls compartilhadas). Portanto, se eles forem privados, podemos copiar para o diretório dll para bin do aplicativo da web e, em seguida, adicionar referência e usá-los.

Os controles do usuário são muito semelhantes aos arquivos de inclusão do ASP e são fáceis de criar. Os controles do usuário não podem ser colocados na caixa de ferramentas e arrastados - soltos dela. Eles têm seu design e código por trás. A extensão do arquivo para controles do usuário é ascx.

16. O que são classes seladas em C #?

Criamos classes lacradas quando queremos restringir a classe a ser herdada. Modificador selado usado para impedir a derivação de uma classe. Se forçosamente especificarmos uma classe lacrada como classe base, ocorrerá um erro em tempo de compilação.

17. O que é sobrecarga de método?

A sobrecarga de método é criar vários métodos com o mesmo nome com assinaturas exclusivas na mesma classe. Quando compilamos, o compilador usa a resolução de sobrecarga para determinar o método específico a ser chamado.

18. Qual é a diferença entre Array e Arraylist?

Em uma matriz, podemos ter itens do mesmo tipo apenas. O tamanho da matriz é fixo quando comparado. Para um arraylist é semelhante a um array, mas não tem um tamanho fixo.

19. Um método virtual privado pode ser sobrescrito?

Não, porque eles não são acessíveis fora da classe.

20. Descreva o modificador de acessibilidade 'interno protegido'.

Variáveis ​​/ métodos internos protegidos são acessíveis no mesmo assembly e também nas classes derivadas desta classe pai.

21. Quais são as diferenças entre as classes System.String e System.Text.StringBuilder?

System.String é imutável. Quando modificamos o valor de uma variável de string, uma nova memória é alocada para o novo valor e a alocação de memória anterior é liberada. System.StringBuilder foi projetado para ter um conceito de string mutável, onde uma variedade de operações podem ser realizadas sem alocação de local de memória separado para a string modificada.

22. Qual é a diferença entre System.Array.CopyTo () e System.Array.Clone ()?

Usando o método Clone (), criamos um novo objeto array contendo todos os elementos do Array original e usando o método CopyTo (). Todos os elementos da matriz existente são copiados para outra matriz existente. Ambos os métodos executam uma cópia superficial.

23. Como podemos classificar os elementos do Array em ordem decrescente?

Usando métodos Sort () seguidos pelo método Reverse ().

24. Escreva a sintaxe C # para capturar uma exceção

Para capturar uma exceção, usamos blocos try-catch. O bloco Catch pode ter um parâmetro do tipo system.Exception.

Por exemplo:

 try { GetAllData(); } catch (Exception ex) { } 

No exemplo acima, podemos omitir o parâmetro da instrução catch.

25. Qual é a diferença entre uma interface e uma classe abstrata?

As interfaces têm todos os métodos tendo apenas declaração, mas nenhuma definição. Em uma classe abstrata, podemos ter alguns métodos concretos. Em uma classe de interface, todos os métodos são públicos. Uma classe abstrata pode ter métodos privados.

26. Qual é a diferença entre os métodos Finalize () e Dispose ()?

Dispose () é chamado quando queremos que um objeto libere quaisquer recursos não gerenciados com eles. Por outro lado, Finalize () é usado com o mesmo propósito, mas não garante a coleta de lixo de um objeto.

27. O que são referências circulares?

A referência circular é a situação em que dois ou mais recursos são interdependentes um do outro causa a condição de bloqueio e torna os recursos inutilizáveis.

28. O que são genéricos em C # .NET?

Os genéricos são usados ​​para criar classes de código reutilizáveis ​​para diminuir a redundância do código, aumentar a segurança de tipo e o desempenho. Usando genéricos, podemos criar classes de coleção. Para criar uma coleção genérica, o namespace System.Collections.Generic deve ser usado em vez de classes como ArrayList no namespace System.Collections. Genéricos promove o uso de tipos parametrizados.

29. O que é um pool de objetos no .NET?

Um pool de objetos é um contêiner com objetos prontos para serem usados. Ele rastreia o objeto que está em uso, o número total de objetos no pool. Isso reduz a sobrecarga de criação e recriação de objetos.

30. Liste os tipos de exceções comumente usados ​​em .net

ArgumentException, ArgumentNullException, ArgumentOutOfRangeException, ArithmeticException, DivideByZeroException, OverflowException, IndexOutOfRangeException, InvalidCastException, InvalidOperationException, IOEndOfStreamException, IOEndOfStreamException, NullReceptionExceptionMemferenceOfStream, etc.

31. O que são exceções personalizadas?

Às vezes, há alguns erros que precisam ser tratados de acordo com os requisitos do usuário. Exceções personalizadas são usadas para eles e são exceções definidas.

32. O que são delegados?

Os delegados são os mesmos ponteiros de função em C ++, mas a única diferença é que eles são seguros para o tipo, ao contrário dos ponteiros de função. Os delegados são necessários porque podem ser usados ​​para escrever funções seguras de tipo muito mais genéricas.

33. Como você herda uma classe para outra classe em C #?

Dois pontos é usado como operador de herança em C #. Basta colocar dois pontos e o nome da classe.

public class DerivedClass: BaseClass

34. Qual é a classe base em .net da qual todas as classes são derivadas?

 System.Object 

35. Qual é a diferença entre substituição de método e sobrecarga de método?

Na substituição do método, alteramos a definição do método na classe derivada que altera o comportamento do método. A sobrecarga de método é criar um método com o mesmo nome dentro da mesma classe com assinaturas diferentes.

36. Quais são as diferentes maneiras pelas quais um método pode ser sobrecarregado?

Os métodos podem ser sobrecarregados usando diferentes tipos de dados para um parâmetro, diferentes ordens de parâmetros e diferentes números de parâmetros.

37. Por que você não pode especificar o modificador de acessibilidade para métodos dentro da interface?

Em uma interface, temos métodos virtuais que não possuem definição de método. Todos os métodos devem ser substituídos na classe derivada. É por isso que todos eles são públicos.

38. Como podemos definir a classe a ser herdada, mas evitar que o método seja anulado?

Declare a classe como pública e torne o método lacrado para evitar que seja substituído.

39. O que acontece se as interfaces herdadas tiverem nomes de métodos conflitantes?

Implementar depende de você, pois o método está dentro de sua própria classe. Pode haver um problema quando os métodos de interfaces diferentes esperam dados diferentes, mas no que diz respeito ao compilador, você está bem.

40. Qual é a diferença entre Struct e Class?

Estruturas são variáveis ​​de tipo de valor e classes são tipos de referência. As estruturas armazenadas na pilha causam sobrecarga adicional, mas recuperação mais rápida. As estruturas não podem ser herdadas.

41. Como usar tipos anuláveis ​​em .Net?

Os tipos de valor podem assumir seus valores normais ou um valor nulo. Esses tipos são chamados de tipos anuláveis.

 Int? someID = null; If(someID.HasVAlue) { } 

42. Como podemos criar um array com valores não padrão?

Podemos criar uma matriz com valores não padrão usando Enumerable.Repeat.

43. Qual é a diferença entre os operadores 'is' e 'as' em c #?

O operador 'is' é usado para verificar a compatibilidade de um objeto com um determinado tipo e retorna o resultado como booleano.

O operador 'as' é usado para converter um objeto em um tipo ou classe.

44. O que é um delegado multicast?

Um delegado com vários manipuladores atribuídos a ele é chamado de delegado multicast. Cada manipulador é atribuído a um método.

45. O que são indexadores em C # .NET?

Indexadores são conhecidos como matrizes inteligentes em C #. Ele permite que as instâncias de uma classe sejam indexadas da mesma maneira que um array.

Por exemplo:

 public int this[int index] // Indexer declaration 

46. ​​Qual é a diferença entre 'lançar' e 'lançar ex' no .NET?

A instrução 'Throw' preserva a pilha de erros original, enquanto 'throw ex' tem o rastreamento de pilha de seu ponto de lançamento. É sempre aconselhável usar 'lançar' porque fornece informações de erro mais precisas.

47. O que são atributos C # e seu significado?

C # fornece aos desenvolvedores uma maneira de definir marcas declarativas em certas entidades, por exemplo. Classe, método, etc. são chamados de atributos. As informações do atributo podem ser recuperadas em tempo de execução usando o Reflection.

48. Como implementar um padrão de design singleton em C #?

Em um padrão singleton, uma classe pode ter apenas uma instância e fornece um ponto de acesso para ela globalmente.

Por exemplo:

 Public sealed class Singleton { Private static readonly Singleton _instance = new Singleton(); } 

49. Qual é a diferença entre directcast e ctype?

DirectCast é usado para converter o tipo de objeto que requer que o tipo de tempo de execução seja igual ao tipo especificado em DirectCast.

Ctype é usado para conversão onde a conversão é definida entre a expressão e o tipo.

50. O código C # é gerenciado ou não gerenciado?

C # é um código gerenciado porque o Common Language Runtime pode compilar o código C # para uma linguagem intermediária.

51. O que é o aplicativo Console?

Um aplicativo de console é aquele que pode ser executado no prompt de comando do Windows. Para qualquer iniciante em .Net, construir um aplicativo de console é idealmente o primeiro passo, para começar.

52. Dê um exemplo de remoção de um elemento da fila

O método dequeue é usado para remover um elemento da fila.

 using System; using System.Collections; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace DemoApplication { class Program { static void Main(string[] args) { Queue qt = new Queue(); qt.Enqueue(1); qt.Enqueue(2); qt.Enqueue(3); foreach (Object obj in qt) { Console.WriteLine(obj); } Console.WriteLine(); Console.WriteLine(); Console.WriteLine('The number of elements in the Queue ' + qt.Count); Console.WriteLine('Does the Queue contain ' + qt.Contains(3)); Console.ReadKey(); } } }