Top 50 C# pitanja i odgovora za intervjue (2025.)

C# Intervju Pitanja i odgovori za brucoše i 2/3/5/10 godina iskustva

Ovdje su pitanja i odgovori za intervjue za C# za svježije, kao i kandidate s iskustvom od 5 ili 10 godina kako bi dobili posao iz snova.

1) Što je C#?

C# je objektno orijentiran, siguran za tip i upravljani jezik koji je kompilirao .Net framework za generiranje Microsoft Srednji jezik.

👉 Besplatno preuzimanje PDF-a: C# Interview Interview Questions & Answers


2) Objasnite vrste komentara u C# s primjerima

Jedna linija

Primjer:

//This is a single line comment

ii. Više redaka (/* */)

Primjer:

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

iii. XML komentari (///).

Primjer:

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

3) Može li se izvršiti više catch blokova?

Ne, višestruki catch blokovi slične vrste ne mogu se izvršiti. Nakon što se izvrši odgovarajući catch kod, kontrola se prenosi na finally blok, a zatim se izvršava kôd koji slijedi nakon finally bloka.


4) Koja je razlika između javnog, statičnog i nevažećeg?

Javno deklarirane varijable ili metode dostupne su bilo gdje u aplikaciji. Statičke deklarirane varijable ili metode globalno su dostupne bez stvaranja instance klase. Statički članovi prema zadanim postavkama nisu globalno dostupni, to ovisi o vrsti modificiranog pristupa koji se koristi. Prevodilac pohranjuje adresu metode kao ulaznu točku i koristi te informacije za početak izvršenja prije nego što se bilo koji objekt kreira. A Void je modifikator tipa koji navodi da metoda ili varijabla ne vraća nikakvu vrijednost.

Objekt u C#

C# pitanja za intervju


5) Što je objekt?

Objekt je instanca klase preko koje pristupamo metodama te klase. Ključna riječ "New" koristi se za stvaranje objekta. Klasa koja stvara objekt u memoriji sadržavat će informacije o metodama, varijablama i ponašanju te klase.


6) Definirajte konstruktore

Konstruktor je funkcija članica u klasi koja ima isto ime kao i klasa. Konstruktor se automatski poziva kad god se kreira klasa objekta. Konstruira vrijednosti članova podataka tijekom inicijalizacije klase.


7) Što su nazubljeni nizovi?

Niz koji ima elemente tipa array naziva se nazubljeni niz. Elementi mogu biti različitih dimenzija i veličina. Nazubljeni niz možemo nazvati i nizom nizova.


8) Koja je razlika između ref & out parametara?

Argument proslijeđen kao ref mora se inicijalizirati prije prosljeđivanja metodi, dok izlazni parametar ne mora biti inicijaliziran prije prosljeđivanja metodi.


9) Koja je upotreba naredbe 'using' u C#?

Blok 'korištenje' koristi se za dobivanje resursa i njegovu obradu, a zatim automatski raspolaže njime kada se završi izvršenje bloka.


10) Što je serijalizacija?

Kada želimo prenijeti objekt kroz mrežu, tada moramo pretvoriti objekt u tok bajtova. Proces pretvaranja objekta u tok bajtova naziva se serijalizacija. Da bi se objekt mogao serijalizirati, treba implementirati sučelje ISerialize. Deserijalizacija je obrnuti proces stvaranja objekta iz toka bajtova.


11) Možemo li koristiti "ovu" naredbu unutar statičke metode?

Ne možemo koristiti 'This' u statičkoj metodi jer možemo koristiti samo statičke varijable/metode u statičkoj metodi.


12) Koja je razlika između konstanti i samo za čitanje?

Konstantne varijable se deklariraju i inicijaliziraju tijekom kompajliranja. Vrijednost se ne može naknadno promijeniti. Samo za čitanje koristi se samo kada želimo dodijeliti vrijednost tijekom izvođenja.


13) Što je klasa sučelja? Navedite jedan primjer toga

Sučelje je apstraktna klasa koja ima samo javne apstraktne metode, a metode imaju samo deklaraciju, a ne definiciju. Ove apstraktne metode moraju biti implementirane u naslijeđene klase.

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) Što su tipovi vrijednosti i tipovi referenci?

Vrsta vrijednosti sadrži podatkovnu vrijednost unutar vlastitog memorijskog prostora. Primjer

int a = 30;

Referentni tip pohranjuje adresu objekta gdje se pohranjuje vrijednost. To je pokazivač na drugu memorijsku lokaciju.

string b = "Hello Guru99!!";

15) Što su prilagođena kontrola i korisnička kontrola?

Prilagođene kontrole su kontrole generirane kao kompilirani kod (Dlls), jednostavnije su za korištenje i mogu se dodati u okvir s alatima. Programeri mogu povući i ispustiti kontrole na svoje web obrasce. Atributi mogu, u vrijeme dizajna. Lako možemo dodati prilagođene kontrole u više aplikacija (ako se dijele DLL-ovi). Dakle, ako su privatni, onda možemo kopirati u dll u bin direktorij web aplikacije, a zatim dodati referencu i moći ih koristiti.

Korisničke kontrole vrlo su slične ASP uključenim datotekama i lako ih je izraditi. Korisničke kontrole ne mogu se smjestiti u okvir s alatima i povući – ispustiti iz njega. Imaju svoj dizajn i kod. Ekstenzija datoteke za korisničke kontrole je ascx.


16) Što su zapečaćene klase u C#?

Zapečaćene klase stvaramo kada želimo ograničiti nasljeđivanje klase. Zapečaćeni modifikator koji se koristi za sprječavanje izvođenja iz klase. Ako na silu navedemo zapečaćenu klasu kao osnovnu klasu, dolazi do pogreške tijekom kompajliranja.


17) Što je preopterećenje metode?

Preopterećenje metoda je stvaranje više metoda s istim imenom s jedinstvenim potpisima u istoj klasi. Kada kompajliramo, kompajler koristi rezoluciju preopterećenja kako bi odredio specifičnu metodu koju treba pozvati.


18) Koja je razlika između Array i Arraylist?

U nizu možemo imati samo stavke istog tipa. Veličina niza je fiksna kada se uspoređuje. Popis arraylist sličan je nizu, ali nema fiksnu veličinu.


19) Može li se privatna virtualna metoda nadjačati?

Ne, jer nisu dostupni izvan razreda.


20) Opišite modifikator pristupačnosti "protected internal".

Zaštićene interne varijable/metode dostupne su unutar istog sklopa i također iz klasa koje su izvedene iz ove nadređene klase.


21) Koje su razlike između klasa System.String i System.Text.StringBuilder?

System.String je nepromjenjiv. Kada promijenimo vrijednost varijable niza, tada se nova memorija dodjeljuje novoj vrijednosti i oslobađa se prethodna dodjela memorije. System.StringBuilder je dizajniran da ima koncept promjenjivog niza gdje se mogu izvoditi razne operacije bez dodjele zasebne memorijske lokacije za modificirani niz.


22) Koja je razlika između System.Array.CopyTo() i System.Array.Clone()?

Korištenje Clone() metodom, stvaramo novi objekt polja koji sadrži sve elemente u izvornom polju i koristimo CopyTo() metoda. Svi elementi postojećeg niza kopiraju se u drugi postojeći niz. Obje metode izvode plitku kopiju.


23) Kako možemo poredati elemente niza u silaznom redoslijedu?

Korištenje Sort() metode koje slijede Reverse() metoda.


24) Zapišite C# sintaksu za hvatanje iznimke

Kako bismo uhvatili iznimku, koristimo try-catch blokove. Catch blok može imati parametar tipa system.Exception.

npr:

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

U gornjem primjeru, možemo izostaviti parametar iz izjave catch.


25) Koja je razlika između sučelja i apstraktne klase?

Sučelja imaju sve metode koje imaju samo deklaraciju, ali ne i definiciju. U apstraktnoj klasi možemo imati neke konkretne metode. U klasi sučelja sve metode su javne. Apstraktna klasa može imati privatne metode.


26) Koja je razlika između metoda Finalize() i Dispose()?

Dispose() se poziva kada želimo da objekt sa sobom oslobodi sve neupravljane resurse. S druge strane, Finalize() koristi se za istu svrhu, ali ne osigurava skupljanje smeća objekta.


27) Što su kružne reference?

Kružna referenca je situacija u kojoj su dva ili više resursa međuovisni jedan o drugome, što uzrokuje stanje zaključavanja i čini resurse neupotrebljivima.


28) Što su generici u C#.NET?

Generici se koriste za izradu klasa koda za višekratnu upotrebu kako bi se smanjila redundantnost koda, povećala sigurnost tipa i izvedba. Koristeći generike, možemo kreirati klase zbirke. Za stvaranje generičke zbirke, System.Collections.Generic imenski prostor trebao bi se koristiti umjesto klasa kao što je ArrayList u System.Collections imenski prostor. Generici promoviraju korištenje parametriziranih tipova.


29) Što je skup objekata u .NET-u?

Skup objekata je spremnik koji sadrži objekte spremne za korištenje. Prati objekt koji je trenutno u upotrebi, ukupan broj objekata u bazenu. Ovo smanjuje troškove stvaranja i ponovnog stvaranja objekata.


30) Navedite najčešće korištene vrste iznimaka u .net

ArgumentException, ArgumentNullException, ArgumentOutOfRangeException, ArithmeticException, DivideByZeroException, OverflowException, IndexOutOfRangeException, InvalidCastException, InvalidOperationException, IOEndOfStreamException, NullReferenceException, OutOfMemoryException, StackOverflowException itd.


31) Što su prilagođene iznimke?

Ponekad postoje neke pogreške koje je potrebno riješiti prema zahtjevima korisnika. Za njih se koriste prilagođene iznimke i koriste se definirane iznimke.


32) Što su delegati?

Delegati su isti kao i pokazivači na funkcije C++, ali jedina razlika je u tome što su tipski sigurni, za razliku od pokazivača na funkcije. Delegati su potrebni jer se mogu koristiti za pisanje mnogo više generičkih funkcija sigurnih za tip.


33) Kako nasljeđujete klasu u drugu klasu u C#?

Dvotočka se koristi kao operator nasljeđivanja u C#. Samo stavite dvotočku, a zatim naziv klase.

public class DerivedClass : BaseClass

34) Koja je osnovna klasa u .net iz koje su sve klase izvedene?

System.Object

35) Koja je razlika između nadjačavanja metode i preopterećenja metode?

U nadjačavanju metode mijenjamo definiciju metode u izvedenoj klasi koja mijenja ponašanje metode. Preopterećenje metode je stvaranje metode s istim imenom unutar iste klase koja ima različite potpise.


36) Koji su različiti načini na koje se metoda može preopteretiti?

Metode se mogu preopteretiti upotrebom različitih tipova podataka za parametar, različitim redoslijedom parametara i različitim brojem parametara.


37) Zašto ne možete odrediti modifikator pristupačnosti za metode unutar sučelja?

U sučelju imamo virtualne metode koje nemaju definiciju metode. Sve metode su tu da se nadjačaju u izvedenoj klasi. Zato su svi javni.


38) Kako možemo postaviti klasu da bude naslijeđena, ali spriječiti da se metoda nadjača?

Klasu deklarirajte kao javnu i metodu učinite zapečaćenom kako biste spriječili njezino nadjačavanje.


39) Što se događa ako naslijeđena sučelja imaju proturječna imena metoda?

Implementacija ovisi o vama jer je metoda unutar vaše klase. Može biti problema kada metode iz različitih sučelja očekuju različite podatke, ali što se prevodioca tiče, vi ste u redu.


40) Koja je razlika između strukture i klase?

Strukture su varijable tipa vrijednosti, a klase su referentni tipovi. Strukture pohranjene na stogu uzrokuju dodatne troškove, ali brže dohvaćanje. Strukture se ne mogu naslijediti.


41) Kako koristiti nullable tipove u .Netu?

Tipovi vrijednosti mogu uzeti svoje normalne vrijednosti ili nultu vrijednost. Takvi tipovi se nazivaju nullable tipovi.

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

42) Kako možemo stvoriti niz s vrijednostima koje nisu zadane?

Možemo stvoriti niz s vrijednostima koje nisu zadane pomoću Enumerable.Repeat.


43) Koja je razlika između "is" i "as" operatora u c#?

Operator "is" koristi se za provjeru kompatibilnosti objekta s danim tipom i vraća rezultat kao Booleov.

“as” operator se koristi za pretvaranje objekta u tip ili klasu.


44) Što je multicast delegat?

Delegat kojem je dodijeljeno više rukovatelja naziva se multicast delegat. Svaki rukovatelj je dodijeljen metodi.


45) Što su indeksatori u C# .NET?

Indekseri su poznati kao pametni nizovi u C#. Omogućuje da se instance klase indeksiraju na isti način kao niz.

npr:

public int this[int index]    // Indexer declaration

46) Koja je razlika između "throw" i "throw ex" u .NET-u?

Naredba "Throw" čuva izvorni hrp pogrešaka, dok "throw ex" ima trag stoga od svoje točke bacanja. Uvijek se savjetuje korištenje "baci" jer pruža točnije informacije o pogrešci.


47) Što su C# atributi i njihov značaj?

C# pruža programerima način da definiraju deklarativne oznake na određenim entitetima, npr. Klasa, metoda itd. nazivaju se atributi. Informacije o atributu mogu se dohvatiti tijekom izvođenja pomoću Reflection-a.


48) Kako implementirati singleton dizajn obrazac u C#?

U singleton uzorku, klasa može imati samo jednu instancu i globalno joj pruža pristupnu točku.

npr:

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

49) Koja je razlika između directcast-a i ctype-a?

DirectCast se koristi za pretvaranje tipa objekta koji zahtijeva da tip vremena izvođenja bude isti kao navedeni tip u DirectCast-u.

Ctype se koristi za pretvorbu gdje je pretvorba definirana između izraza i tipa.


50) Je li C# kod upravljani ili neupravljani kod?

C# je upravljani kod jer Common language runtime može prevesti C# kod u srednji jezik.


51) Što je konzolna aplikacija?

Konzolna aplikacija je aplikacija koja se može pokrenuti u naredbenom retku Windows. Za bilo koje početnik na .Netu, idealno je da je izrada konzolne aplikacije prvi korak, za početak.


52) Navedite primjer uklanjanja elementa iz reda čekanja

Metoda dequeue koristi se za uklanjanje elementa iz reda čekanja.

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();
   }
 }
}

Ova pitanja za intervju također će vam pomoći u vašem životu