50 najpopularniejszych pytań i odpowiedzi na rozmowie kwalifikacyjnej w języku C# (2025)
Pytania i odpowiedzi do rozmowy kwalifikacyjnej w języku C# dla nowicjuszy i 2/3/5/10 lat doświadczenia
Oto pytania i odpowiedzi dotyczące rozmów kwalifikacyjnych w języku C# zarówno dla nowszych, jak i doświadczonych kandydatów z 5 lub 10-letnim doświadczeniem, którzy chcą zdobyć wymarzoną pracę.
1) Co to jest C#?
C# to zorientowany obiektowo, bezpieczny dla typów i zarządzany język, który jest kompilowany przez platformę .Net w celu generowania Microsoft Język pośredni.
👉 Bezpłatne pobieranie pliku PDF: pytania i odpowiedzi dotyczące wywiadu w języku C#
2) Wyjaśnij rodzaje komentarzy w C# z przykładami
Pojedyncza linia
Przykład:
//This is a single line comment
II. Wiele linii (/* */)
Przykład:
/*This is a multiple line comment We are in line 2 Last line of comment*/
iii. Komentarze XML (///).
Przykład:
/// summary; /// Set error message for multilingual language. /// summary
3) Czy można wykonać wiele bloków catch?
Nie, nie można wykonać wielu bloków catch podobnego typu. Po wykonaniu odpowiedniego kodu catch kontrola jest przekazywana do bloku Final, a następnie wykonywany jest kod następujący po bloku Final.
4) Jaka jest różnica między publicznym, statycznym i nieważnym?
Publicznie zadeklarowane zmienne lub metody są dostępne w dowolnym miejscu aplikacji. Zadeklarowane statycznie zmienne lub metody są dostępne globalnie bez tworzenia instancji klasy. Elementy statyczne domyślnie nie są dostępne globalnie, zależy to od rodzaju użytego zmodyfikowanego dostępu. Kompilator przechowuje adres metody jako punkt wejścia i wykorzystuje te informacje do rozpoczęcia wykonywania przed utworzeniem jakichkolwiek obiektów. Void to modyfikator typu, który stwierdza, że metoda lub zmienna nie zwraca żadnej wartości.
5) Co to jest przedmiot?
Obiekt to instancja klasy, poprzez którą uzyskujemy dostęp do metod tej klasy. Słowo kluczowe „Nowy” służy do tworzenia obiektu. Klasa tworząca obiekt w pamięci będzie zawierać informacje o metodach, zmiennych i zachowaniu tej klasy.
6) Zdefiniuj konstruktory
Konstruktor jest funkcją członkowską w klasie, która ma taką samą nazwę jak jej klasa. Konstruktor jest wywoływany automatycznie za każdym razem, gdy tworzona jest klasa obiektu. Konstruuje wartości elementów danych podczas inicjowania klasy.
7) Co to są tablice postrzępione?
Tablica zawierająca elementy typu array nazywana jest tablicą postrzępioną. Elementy mogą mieć różne wymiary i rozmiary. Możemy również wywołać postrzępioną tablicę jako tablicę tablic.
8) Jaka jest różnica pomiędzy parametrami ref i out?
Argument przekazywany jako ref musi zostać zainicjowany przed przekazaniem do metody, natomiast parametr out nie musi być inicjowany przed przekazaniem do metody.
9) Jaki jest pożytek z instrukcji „używanie” w języku C#?
Blok „używający” służy do pozyskania zasobu i jego przetworzenia, a następnie automatycznego usunięcia po zakończeniu wykonywania bloku.
10) Co to jest serializacja?
Kiedy chcemy przetransportować obiekt przez sieć, musimy przekonwertować obiekt na strumień bajtów. Proces konwersji obiektu na strumień bajtów nazywa się serializacją. Aby obiekt mógł być serializowany, powinien implementować interfejs ISerialize. Deserializacja to odwrotny proces tworzenia obiektu ze strumienia bajtów.
11) Czy możemy użyć polecenia „this” w metodzie statycznej?
Nie możemy użyć „This” w metodzie statycznej, ponieważ w metodzie statycznej możemy używać tylko statycznych zmiennych/metod.
12) Jaka jest różnica między stałymi i tylko do odczytu?
Zmienne stałe są deklarowane i inicjowane w czasie kompilacji. Wartości nie można później zmienić. Tryb tylko do odczytu jest używany tylko wtedy, gdy chcemy przypisać wartość w czasie wykonywania.
13) Co to jest klasa interfejsu? Podaj jeden przykład
Interfejs to klasa abstrakcyjna, która ma tylko publiczne metody abstrakcyjne, a metody mają tylko deklarację, a nie definicję. Te abstrakcyjne metody muszą zostać zaimplementowane w dziedziczonych klasach.
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) Co to są typy wartości i typy referencyjne?
Typ wartości przechowuje wartość danych we własnej przestrzeni pamięci. Przykład
int a = 30;
Typ referencyjny przechowuje adres obiektu, w którym przechowywana jest wartość. Jest to wskaźnik do innego miejsca w pamięci.
string b = "Hello Guru99!!";
15) Czym są Kontrola Niestandardowa i Kontrola Użytkownika?
Kontrolki niestandardowe to kontrolki generowane jako skompilowany kod (biblioteki DLL), są łatwiejsze w użyciu i można je dodać do skrzynki narzędziowej. Programiści mogą przeciągać i upuszczać kontrolki do swoich formularzy internetowych. Atrybuty mogą, w czasie projektowania. Możemy łatwo dodać kontrolki niestandardowe do wielu aplikacji (jeśli współdzielone biblioteki DLL). Więc jeśli są prywatne, możemy skopiować do katalogu dll do bin aplikacji internetowej, a następnie dodać odniesienie i możemy ich używać.
Kontrolki użytkownika są bardzo podobne do plików dołączanych ASP i są łatwe do utworzenia. Kontrolki użytkownika nie mogą być umieszczane w skrzynce narzędziowej i przeciągane – upuszczane z niej. Mają swój projekt i kod. Rozszerzenie pliku dla kontrolek użytkownika to ascx.
16) Czym są zapieczętowane klasy w C#?
Klasy zapieczętowane tworzymy, gdy chcemy ograniczyć dziedziczenie klasy. Zapieczętowany modyfikator używany do zapobiegania wyprowadzaniu z klasy. Jeśli na siłę określimy zapieczętowaną klasę jako klasę bazową, wystąpi błąd w czasie kompilacji.
17) Co to jest przeciążanie metody?
Przeciążanie metod polega na tworzeniu wielu metod o tej samej nazwie z unikalnymi podpisami w tej samej klasie. Kiedy kompilujemy, kompilator wykorzystuje rozpoznawanie przeciążenia, aby określić konkretną metodę do wywołania.
18) Jaka jest różnica między tablicą a listą tablic?
W tablicy możemy mieć tylko elementy tego samego typu. Rozmiar tablicy jest stały podczas porównywania. Lista tablic jest podobna do tablicy, ale nie ma stałego rozmiaru.
19) Czy można zastąpić prywatną metodę wirtualną?
Nie, ponieważ nie są one dostępne poza zajęciami.
20) Opisz modyfikator dostępności „chroniony wewnętrzny”.
Chronione zmienne/metody wewnętrzne są dostępne w obrębie tego samego zestawu, a także z klas pochodnych tej klasy nadrzędnej.
21) Jakie są różnice pomiędzy klasami System.String i System.Text.StringBuilder?
System.String jest niezmienny. Gdy modyfikujemy wartość zmiennej ciągu, nowa pamięć jest przydzielana do nowej wartości, a poprzednia alokacja pamięci jest zwalniana. System.StringBuilder został zaprojektowany tak, aby mieć koncepcję zmiennego ciągu, w którym można wykonywać różne operacje bez przydzielania oddzielnej lokalizacji pamięci dla zmodyfikowanego ciągu.
22) Jaka jest różnica pomiędzy funkcjami System.Array.CopyTo() i System.Array.Clone()?
Korzystanie z Clone()
metodą tworzymy nowy obiekt tablicowy zawierający wszystkie elementy oryginalnej tablicy i używający CopyTo()
metoda. Wszystkie elementy istniejącej tablicy zostaną skopiowane do innej istniejącej tablicy. Obie metody wykonują płytką kopię.
23) Jak możemy posortować elementy tablicy w kolejności malejącej?
Korzystanie z Sort()
metody, którymi podążamy Reverse()
Metoda.
24) Zapisz składnię C#, aby złapać wyjątek
Aby złapać wyjątek, używamy bloków try-catch. Blok catch może mieć parametr typu system.Exception.
Na przykład:
try { GetAllData(); } catch (Exception ex) { }
W powyższym przykładzie możemy pominąć parametr w instrukcji catch.
25) Jaka jest różnica między interfejsem a klasą abstrakcyjną?
Interfejsy mają wszystkie metody posiadające jedynie deklarację, ale bez definicji. W klasie abstrakcyjnej możemy mieć kilka konkretnych metod. W klasie interfejsu wszystkie metody są publiczne. Klasa abstrakcyjna może mieć metody prywatne.
26) Jaka jest różnica pomiędzy metodami Finalize() i Dispose()?
Dispose()
jest wywoływana, gdy chcemy, aby obiekt zwolnił wraz z nim wszelkie niezarządzane zasoby. Z drugiej strony, Finalize()
służy do tego samego celu, ale nie zapewnia usuwania śmieci obiektu.
27) Czym są odniesienia cykliczne?
Odwołanie cykliczne to sytuacja, w której dwa lub więcej zasobów jest od siebie współzależnych, co powoduje stan blokady i sprawia, że zasoby stają się bezużyteczne.
28) Czym są typy generyczne w C#.NET?
Generyki służą do tworzenia klas kodu wielokrotnego użytku w celu zmniejszenia redundancji kodu, zwiększenia bezpieczeństwa typu i wydajności. Używając generyków, możemy tworzyć klasy kolekcji. Aby utworzyć kolekcję generyczną, należy użyć przestrzeni nazw System.Collections.Generic zamiast klas takich jak ArrayList w przestrzeni nazw System.Collections. Generyki promują używanie sparametryzowanych typów.
29) Co to jest pula obiektów w .NET?
Pula obiektów to kontener zawierający obiekty gotowe do użycia. Śledzi obiekt, który jest aktualnie używany, całkowitą liczbę obiektów w basenie. Zmniejsza to obciążenie związane z tworzeniem i ponownym tworzeniem obiektów.
30) Wypisz powszechnie używane typy wyjątków w .net
ArgumentException, ArgumentNullException, ArgumentOutOfRangeException, ArithmeticException, DivideByZeroException, OverflowException, IndexOutOfRangeException, InvalidCastException, nieprawidłowyOperationException, IOEndOfStreamException, NullReferenceException, OutOfMemoryException, StackOverflowException itp.
31) Jakie są wyjątki niestandardowe?
Czasami występują pewne błędy, które należy rozwiązać zgodnie z wymaganiami użytkownika. Stosowane są dla nich wyjątki niestandardowe i używane są wyjątki zdefiniowane.
32) Kim są delegaci?
Delegaty są takie same, jak wskaźniki funkcji C++, ale jedyną różnicą jest to, że są one bezpieczne dla typów, w przeciwieństwie do wskaźników funkcji. Delegaty są wymagane, ponieważ można ich używać do pisania znacznie bardziej ogólnych funkcji bezpiecznych dla typów.
33) Jak dziedziczyć klasę do innej klasy w C#?
Dwukropek jest używany jako operator dziedziczenia w C#. Wystarczy umieścić dwukropek, a następnie nazwę klasy.
public class DerivedClass : BaseClass
34) Jaka jest klasa bazowa w .net, z której pochodzą wszystkie klasy?
System.Object
35) Jaka jest różnica pomiędzy przesłonięciem metody a jej przeciążeniem?
Podczas przesłaniania metody zmieniamy definicję metody w klasie pochodnej, co zmienia zachowanie metody. Przeciążanie metod polega na utworzeniu metody o tej samej nazwie w tej samej klasie i posiadającej różne podpisy.
36) Jakie są różne sposoby przeciążenia metody?
Metody można przeciążać przy użyciu różnych typów danych dla parametru, innej kolejności parametrów i różnej liczby parametrów.
37) Dlaczego nie można określić modyfikatora dostępności dla metod wewnątrz interfejsu?
W interfejsie mamy metody wirtualne, które nie mają definicji metody. Wszystkie metody można zastąpić w klasie pochodnej. Dlatego wszystkie są publiczne.
38) Jak ustawić dziedziczenie klasy, ale jednocześnie zapobiec przejęciu metody?
Zadeklaruj klasę jako publiczną i zapieczętuj metodę, aby zapobiec jej zastąpieniu.
39) Co się stanie, jeśli odziedziczone interfejsy będą miały sprzeczne nazwy metod?
Implementacja należy do Ciebie, ponieważ metoda znajduje się w Twojej własnej klasie. Może wystąpić problem, gdy metody z różnych interfejsów oczekują różnych danych, ale jeśli chodzi o kompilator, wszystko jest w porządku.
40) Jaka jest różnica pomiędzy strukturą a klasą?
Struktury są zmiennymi typu wartościowego, a klasy są typami referencyjnymi. Struktury przechowywane na stosie powodują dodatkowe obciążenie, ale szybsze pobieranie. Struktury nie mogą być dziedziczone.
41) Jak używać typów dopuszczających wartość null w .Net?
Typy wartości mogą przyjmować wartości normalne lub wartość null. Takie typy nazywane są typami dopuszczającymi wartość null.
Int? someID = null; If(someID.HasVAlue) { }
42) Jak możemy utworzyć tablicę z wartościami innymi niż domyślne?
Możemy utworzyć tablicę z wartościami innymi niż domyślne, używając Enumerable.Repeat.
43) Jaka jest różnica między operatorami „is” i „as” w języku C#?
Operator „is” służy do sprawdzania zgodności obiektu z danym typem i zwraca wynik w postaci wartości logicznej.
Operator „as” służy do rzutowania obiektu na typ lub klasę.
44) Co to jest delegat multiemisji?
Delegat mający przypisanych wiele procedur obsługi nazywany jest delegatem multiemisji. Każdy moduł obsługi jest przypisany do metody.
45) Czym są indeksatory w C# .NET?
Indeksatory są znane jako inteligentne tablice w C#. Umożliwia indeksowanie instancji klasy w taki sam sposób jak tablicę.
Na przykład:
public int this[int index] // Indexer declaration
46) Jaka jest różnica między „rzutem” a „rzutem ex” w .NET?
Instrukcja „Throw” zachowuje oryginalny stos błędów, podczas gdy „throw ex” ma ślad stosu od punktu rzutu. Zawsze zaleca się użycie opcji „rzut”, ponieważ zapewnia ona dokładniejsze informacje o błędach.
47) Jakie są atrybuty C# i ich znaczenie?
C# zapewnia programistom sposób definiowania tagów deklaratywnych dla określonych encji, np. Klasa, metoda itp. nazywane są atrybutami. Informacje o atrybucie można pobrać w czasie wykonywania za pomocą Reflection.
48) Jak zaimplementować wzorzec projektowy singletonu w C#?
We wzorcu singleton klasa może mieć tylko jedną instancję i zapewnia do niej globalny punkt dostępu.
Na przykład:
Public sealed class Singleton { Private static readonly Singleton _instance = new Singleton(); }
49) Jaka jest różnica między directcast a ctype?
DirectCast służy do konwertowania typu obiektu, który wymaga, aby typ wykonawczy był taki sam, jak typ określony w DirectCast.
Ctype jest używany do konwersji, gdzie konwersja jest zdefiniowana pomiędzy wyrażeniem a typem.
50) Czy kod C# jest kodem zarządzanym czy niezarządzanym?
C# jest kodem zarządzanym, ponieważ środowisko uruchomieniowe języka wspólnego może kompilować kod C# do języka pośredniego.
51) Co to jest aplikacja konsolowa?
Aplikacja konsolowa to aplikacja, którą można uruchomić w wierszu poleceń Windows. Dla każdego początkujący w .Netnajlepiej zacząć od zbudowania aplikacji konsolowej.
52) Podaj przykład usunięcia elementu z kolejki
Metoda dequeue służy do usuwania elementu z kolejki.
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(); } } }
Te pytania podczas rozmowy kwalifikacyjnej pomogą również w Twoim życiu (ustach)