top 50 c interview questions with answers
Programlama ve Kodlama hakkında sıkça sorulan temel C # Mülakat Soruları:
C #, hızla büyüyen ve aynı zamanda yaygın olarak kullanılan bir programlama dilidir. Yüksek talep görüyor, çok yönlü ve çapraz platformu da destekliyor.
Sadece pencereler için değil, diğer birçok işletim sistemi için kullanılır. Bu nedenle, Yazılım Test endüstrisindeki herhangi bir işe girmek için bu dili güçlü bir şekilde anlamak çok önemlidir.
Aşağıda yalnızca C # ile ilgili en sık sorulan sorular değil, aynı zamanda C # popülasyonunun kalabalığından sıyrılmak için anlaşılması gereken çok önemli konular da listelenmiştir.
C # geniş bir konu olduğundan, tüm kavramları ele alma kolaylığı için, bu konuyu aşağıda belirtildiği gibi üç bölüme ayırdım:
- Temel Kavramlarla İlgili Sorular
- Diziler ve Dizelerle İlgili Sorular
- İleri Kavramlar
Bu makale, röportajınıza hazırlanmanıza yardımcı olmak için, hemen hemen tüm önemli konularını basit terimlerle kapsayan bir dizi en iyi 50 C # mülakat sorusu ve cevabı içermektedir.
Ne öğreneceksin:
En Popüler C # Mülakat Soruları ve Cevapları
Temel konseptler
S # 1) Nesne ve Sınıf nedir?
Cevap: Sınıf, gerçek zamanlı bir varlığı temsil etmek için kullanılan özelliklerin ve yöntemlerin bir kapsüllemesidir. Tüm örnekleri tek bir birimde bir araya getiren bir veri yapısıdır.
Nesne, bir Sınıfın bir örneği olarak tanımlanır. Teknik olarak, değişkenler, diziler veya bir koleksiyon şeklinde saklanabilen ayrılmış bir bellek bloğudur.
S # 2) Temel OOP kavramları nelerdir?
Cevap: Nesne Tabanlı Programlamanın dört temel kavramı şunlardır:
- Kapsülleme : Burada, bir nesnenin dahili temsili, nesnenin tanımının dışında görünümden gizlenir. Veri uygulamasının geri kalanı gizlenirken yalnızca gerekli bilgilere erişilebilir.
- Soyutlama: Bir nesnenin kritik davranışını ve verilerini belirleme ve ilgisiz detayları ortadan kaldırma işlemidir.
- Miras : Başka bir sınıftan yeni sınıflar oluşturma yeteneğidir. Üst sınıftaki nesnelerin davranışına erişilerek, değiştirilerek ve genişletilerek yapılır.
- Polimorfizm : İsim, tek isim, birçok form anlamına gelir. Aynı isimde ancak farklı uygulamalara sahip birden fazla yönteme sahip olunması ile elde edilir.
S # 3) Yönetilen ve Yönetilmeyen kod nedir?
Cevap: Yönetilen kod, CLR (Common Language Runtime) tarafından yürütülen bir koddur, yani tüm uygulama kodu .Net platformuna dayanır. Kullanılmayan belleği temizlemek için çöp toplayıcıyı dahili olarak kullanan .Net çerçevesi nedeniyle yönetilen olarak kabul edilir.
Yönetilmeyen kod, .Net dışındaki herhangi bir çerçevenin uygulama çalışma zamanı tarafından çalıştırılan herhangi bir koddur. Uygulama çalışma zamanı, bellek, güvenlik ve diğer performans işlemleriyle ilgilenecektir.
S # 4) Arayüz nedir?
Cevap: Arayüz, uygulaması olmayan bir sınıftır. İçerdiği tek şey, yöntemlerin, özelliklerin ve olayların bildirilmesidir.
S # 5) C # 'da farklı sınıf türleri nelerdir?
Cevap: C # 'daki farklı sınıf türleri şunlardır:
- Kısmi sınıf: Üyelerinin birden çok .cs dosyasıyla bölünmesine veya paylaşılmasına olanak tanır. Anahtar kelime ile gösterilir Kısmi.
- Mühürlü sınıf: Miras alınamayan bir sınıftır. Mühürlenmiş bir sınıfın üyelerine erişmek için, sınıfın nesnesini oluşturmamız gerekir. Anahtar kelime ile gösterilir Mühürlü .
- Soyut sınıf : Nesnesi somutlaştırılamayan bir sınıftır. Sınıf yalnızca miras alınabilir. En az bir yöntem içermelidir. Anahtar kelime ile gösterilir Öz .
- Statik sınıf : Kalıtıma izin vermeyen bir sınıftır. Sınıfın üyeleri de statiktir. Anahtar kelime ile gösterilir statik . Bu anahtar sözcük, derleyiciye statik sınıfın herhangi bir kazayla meydana gelen örneklerini kontrol etmesini söyler.
S # 6) C # 'da kod derlemeyi açıklayın.
Cevap: C # kod derlemesi aşağıdaki dört adımı içerir:
- Kaynak kodu C # derleyicisi tarafından Yönetilen koda derleniyor.
- Yeni oluşturulan kodu derlemelerde birleştirmek.
- Ortak Dil Çalışma Zamanı'nı (CLR) Yükleme.
- Montajın CLR tarafından yürütülmesi.
S # 7) Sınıf ve Struct arasındaki farklar nelerdir?
Cevap: Aşağıda bir Sınıf ve Yapı arasındaki farklar verilmiştir:
Sınıf | Struct |
---|---|
Kalıtımı Destekler | Devralmayı desteklemiyor |
Sınıf, referansla geçer (referans türü) | Struct, Kopyalama Yoluyla Geçer (Değer türü) |
Üyeler varsayılan olarak özeldir | Üyeler varsayılan olarak herkese açıktır |
Daha büyük karmaşık nesneler için iyi | Küçük izole modeller için iyi |
Hafıza yönetimi için atık toplayıcı kullanabilir | Çöp toplayıcı kullanılamaz ve dolayısıyla Bellek yönetimi yoktur |
S # 8) Sanal yöntem ile Soyut yöntem arasındaki fark nedir?
Cevap: Sanal yöntem her zaman varsayılan bir uygulamaya sahip olmalıdır. Ancak, zorunlu olmamasına rağmen türetilmiş sınıfta geçersiz kılınabilir. Kullanılarak geçersiz kılınabilir geçersiz kılmak anahtar kelime.
Soyut bir yöntemin bir uygulaması yoktur. Soyut sınıfta bulunur. Türetilmiş sınıfın soyut yöntemi uygulaması zorunludur. Bir geçersiz kılmak Kullanılabilse de burada anahtar kelime gerekli değildir.
S # 9) C # 'ta Ad alanlarını açıklayın.
Cevap: Büyük kod projeleri düzenlemek için kullanılırlar. 'Sistem', C # 'da en yaygın kullanılan ad alanıdır. Kendi ad alanımızı oluşturabiliriz ve ayrıca bir ad alanını diğerinde Nested Namespaces olarak adlandırabiliriz.
'İsim alanı' anahtar kelimesi ile belirtilirler.
S # 10) C # 'ta 'kullanma' ifadesi nedir?
Cevap: 'Kullanmak' anahtar sözcüğü, belirli ad alanının program tarafından kullanıldığını gösterir.
Örneğin, Sistemi kullanarak
Buraya, Sistem bir ad alanıdır. Konsol sınıfı, Sistem altında tanımlanır. Böylece programımızda console.writeline (“….”) Veya readline'ı kullanabiliriz.
S # 11) Soyutlamayı açıklayın.
Cevap: Soyutlama, OOP kavramlarından biridir. Sınıfın yalnızca temel özelliklerini görüntülemek ve gereksiz bilgileri gizlemek için kullanılır.
Bir Araba örneğini ele alalım:
Bir araba sürücüsü, renk, isim, ayna, direksiyon, vites, fren vb. Araba ile ilgili ayrıntıları bilmelidir. Bilmesi gerekmeyen şey, dahili bir motor, egzoz sistemidir.
Dolayısıyla, Soyutlama, neyin gerekli olduğunu bilmeye ve iç ayrıntıları dış dünyadan gizlemeye yardımcı olur. Dahili bilgilerin gizlenmesi, özel gibi parametrelerin, özel anahtar kelime.
S # 12) Polimorfizmi açıklar mısınız?
Cevap: Programatik olarak, Polimorfizm, aynı yöntem, ancak farklı uygulamalar anlamına gelir. Derleme zamanı ve Çalışma Zamanı olmak üzere 2 türdendir.
- Derleme zamanı polimorfizmi operatörün aşırı yüklenmesi ile elde edilir.
- Çalışma zamanı polimorfizmi geçersiz kılarak elde edilir. Kalıtım ve Sanal işlevler, Çalışma Zamanı polimorfizmi sırasında kullanılır.
Örneğin ,Bir sınıfın bir Void Add () yöntemi varsa, polimorfizm, yöntemin aşırı yüklenmesiyle elde edilir, yani void Add (int a, int b), void Add (int add), aşırı yüklenmiş yöntemlerdir.
S # 13) C # 'da İstisna İşleme nasıl uygulanır?
Cevap: İstisna işleme, C # 'da dört anahtar kelime kullanılarak yapılır:
- Deneyin : Bir istisnanın kontrol edileceği bir kod bloğu içerir.
- yakalamak : İstisna işleyicisi yardımıyla bir istisnayı yakalayan bir programdır.
- en sonunda : İstisnanın yakalanıp yakalanmadığına bakılmaksızın çalıştırılmak üzere yazılmış bir kod bloğudur.
- Atmak : Bir sorun oluştuğunda bir istisna atar.
S # 14) C # I / O sınıfları nelerdir? Yaygın olarak kullanılan G / Ç sınıfları nelerdir?
Cevap: C #, dosyalarda oluşturma, silme, açma, kapatma vb. Gibi çeşitli işlemleri gerçekleştirmek için kullanılan sınıflardan oluşan System.IO ad alanına sahiptir.
Yaygın olarak kullanılan bazı G / Ç sınıfları şunlardır:
- Dosya - Bir dosyayı değiştirmeye yardımcı olur.
- StreamWriter - Bir akışa karakter yazmak için kullanılır.
- StreamReader - Bir akışa karakter okumak için kullanılır.
- StringWriter - String tampon okumak için kullanılır.
- StringReader - String tampon yazmak için kullanılır.
- Yol - Yol bilgileriyle ilgili işlemleri gerçekleştirmek için kullanılır.
S # 15) StreamReader / StreamWriter sınıfı nedir?
Cevap: StreamReader ve StreamWriter, System.IO ad alanı sınıflarıdır. Sırasıyla, Reader tabanlı veriler olan charact90'ı okumak veya yazmak istediğimizde kullanılırlar.
StreamReader'ın bazı üyeleri şunlardır: Kapat (), Oku (), Readline ().
StreamWriter üyeleri: Kapat (), Yaz (), Writeline ().
Class Program1 { using(StreamReader sr = new StreamReader(“C:ReadMe.txt”) { //----------------code to read-------------------// } using(StreamWriter sw = new StreamWriter(“C:ReadMe.txt”)) { //-------------code to write-------------------// } }
S # 16) C # 'ta Yıkıcı nedir?
Cevap: Destructor, belleği temizlemek ve kaynakları serbest bırakmak için kullanılır. Ancak C # 'da bu, çöp toplayıcı tarafından kendi başına yapılır. System.GC.Collect (), temizleme için dahili olarak çağrılır. Ancak bazen yıkıcıları manuel olarak uygulamak gerekebilir.
Örneğin:
~Car() { Console.writeline(“….”); }
S # 17) Soyut Ders nedir?
Cevap: Abstract sınıfı, abstract anahtar sözcüğüyle gösterilen ve yalnızca Base sınıfı olarak kullanılabilen bir sınıftır. Bu sınıf her zaman miras alınmalıdır. Sınıfın kendisinin bir örneği yaratılamaz. Herhangi bir programın bir sınıfın nesnesini oluşturmasını istemiyorsak, bu tür sınıflar soyut hale getirilebilir.
Soyut sınıftaki herhangi bir yöntemin aynı sınıfta uygulamaları yoktur. Ancak çocuk sınıfında uygulanmaları gerekir.
Örneğin:
abstract class AB1 { Public void Add(); } Class childClass : AB1 { childClass cs = new childClass (); int Sum = cs.Add(); }
Soyut bir sınıftaki tüm yöntemler örtük olarak sanal yöntemlerdir. Bu nedenle, sanal anahtar kelime, soyut sınıfta herhangi bir yöntemle kullanılmamalıdır.
S # 18) Boks ve Kutudan Çıkarma nedir?
Cevap: Bir değer türünün başvuru türüne dönüştürülmesine Boxing denir.
Örneğin:
int Değer1 - = 10;
//----Boks------//
object boxedValue = Değer1;
Aynı referans türünün (kutu oluşturularak oluşturulan) değer türüne açıkça dönüştürülmesi denir Kutudan çıkarma .
Örneğin:
// ———— Kutu Açma —————— //
int UnBoxing = int (boxedValue);
modem neye benziyor
S # 19) Devam ve Mola İfadesi arasındaki fark nedir?
Cevap: Break deyimi döngüyü keser. Döngüden çıkmak için programın kontrolünü yapar. Continue deyimi, programın denetimini yalnızca geçerli yinelemeden çıkacak şekilde yapar. Döngüyü bozmaz.
S # 20) Nihayet ve sonlandır blok arasındaki fark nedir?
Cevap: en sonunda blok, deneme ve yakalama bloğunun yürütülmesinden sonra çağrılır. İstisna işleme için kullanılır. Bir istisna yakalanıp yakalanmadığına bakılmaksızın, bu kod bloğu çalıştırılacaktır. Genellikle bu bloğun bir temizleme kodu olacaktır.
finalize yöntemi çöp toplamadan hemen önce çağrılır. Yönetilmeyen kodun temizleme işlemlerini gerçekleştirmek için kullanılır. Belirli bir örnek daha sonra çağrılmadığında otomatik olarak çağrılır.
Diziler ve Dizeler
S # 21) Dizi nedir? Tek ve çok boyutlu bir dizi için sözdizimi verin?
Cevap: Bir Dizi, aynı türden birden çok değişkeni depolamak için kullanılır. Bitişik bir bellek konumunda depolanan değişkenlerin bir koleksiyonudur.
Örneğin:
çift sayı = yeni çift (10);
int () skor = yeni int (4) {25,24,23,25};
Tek boyutlu bir dizi, değişkenlerin tek bir satırda depolandığı doğrusal bir dizidir. Yukarıda misal tek boyutlu bir dizidir.
Dizilerin birden fazla boyutu olabilir. Çok boyutlu dizilere dikdörtgen diziler de denir.
Örneğin , int (,) sayılar = yeni int (3,2) {{1,2}, {2,3}, {3,4}};
S # 22) Jagged Array nedir?
Cevap: Jagged dizi, elemanları dizilerden oluşan bir dizidir. Aynı zamanda dizi dizisi olarak da adlandırılır. Tek veya birden çok boyut olabilir.
int () jaggedArray = new int (4) ();
S # 23) Array'in bazı özelliklerini adlandırın.
Cevap: Bir Dizinin özellikleri şunları içerir:
- Uzunluk: Bir dizideki toplam öğe sayısını alır.
- IsFixedSize: Dizinin boyut olarak sabit olup olmadığını söyler.
- IsReadOnly : Dizinin salt okunur olup olmadığını söyler.
S # 24) Dizi Sınıfı nedir?
Cevap: Array sınıfı, tüm diziler için temel sınıftır. Birçok özellik ve yöntem sağlar. Ad alanı sisteminde mevcuttur.
S # 25) İp nedir? Bir String Sınıfının özellikleri nelerdir?
Cevap: Bir String, char nesnelerinin bir koleksiyonudur. Ayrıca dize değişkenlerini c # ile de tanımlayabiliriz.
string name = “C # Sorular”;
C # 'daki bir dize sınıfı bir dizeyi temsil eder. String sınıfının özellikleri şunlardır:
- Karakterler Geçerli String'deki Char nesnesini alın.
- Uzunluk geçerli String'deki nesnelerin sayısını alır.
S # 26) Kaçış Dizisi nedir? C # 'da bazı String kaçış dizilerini adlandırın.
Cevap: Bir Kaçış dizisi ters eğik çizgi () ile gösterilir. Ters eğik çizgi, onu takip eden karakterin harfi harfine yorumlanması gerektiğini veya özel bir karakter olduğunu belirtir. Bir kaçış dizisi tek bir karakter olarak kabul edilir.
Dize kaçış dizileri aşağıdaki gibidir:
- n - Yeni satır karakteri
- b - Geri tuşu
- \ - Ters eğik çizgi
- ' - Tek alıntı
- ’’ - Çift Alıntı
S # 27) Normal ifadeler nedir? Normal ifadeler kullanarak bir dizge mi arıyorsunuz?
Cevap: Normal ifade, bir girdi kümesiyle eşleşen bir şablondur. Kalıp, operatörler, yapılar veya karakter değişmezlerinden oluşabilir. Regex, karakter dizisini dizge ayrıştırmak ve değiştirmek için kullanılır.
Örneğin:
* önceki karakterle sıfır veya daha fazla kez eşleşir. Dolayısıyla, a * b normal ifadesi b, ab, aab, aaab vb. İle eşdeğerdir.
Regex kullanarak bir dizeyi arama:
static void Main(string() args) { string() languages = { 'C#', 'Python', 'Java' }; foreach(string s in languages) { if(System.Text.RegularExpressions.Regex.IsMatch(s,'Python')) { Console.WriteLine('Match found'); } } }
Yukarıdaki örnek, diller dizisindeki giriş kümesine karşı 'Python' araması yapar. Girdide model bulunması durumunda doğru olan Regex.IsMatch'i kullanır. Kalıp, eşleştirmek istediğimiz girdiyi temsil eden herhangi bir normal ifade olabilir.
S # 28) Temel Dizi İşlemleri nelerdir? Açıklamak.
Cevap: Temel dizi işlemlerinden bazıları şunlardır:
- Birleştir : Bir System.String.Concat veya + operatörü kullanılarak iki dizge birleştirilebilir.
- Değiştir : Replace (a, b), bir dizeyi başka bir dizeyle değiştirmek için kullanılır. Trim () dizeyi sonunda veya başında kırpmak için kullanılır.
- Karşılaştırmak : System.StringComparison (), iki dizeyi karşılaştırmak için kullanılır; büyük / küçük harfe duyarlı veya büyük / küçük harfe duyarlı olmayan. Esas olarak karşılaştırılacak iki parametre, orijinal dize ve dize alır.
- Arama : StartWith, EndsWith yöntemleri belirli bir dizeyi aramak için kullanılır.
S # 29) Ayrıştırma nedir? Tarih Saat Dizesi Nasıl Ayrıştırılır?
Cevap: Ayrıştırma, bir dizeyi başka bir veri türüne dönüştürür.
Örneğin:
string text = '500';
int num = int.Parse (metin);
500 bir tam sayıdır. Dolayısıyla, Parse yöntemi 500 dizesini kendi temel türüne, yani int'e dönüştürür.
Bir DateTime dizesini dönüştürmek için aynı yöntemi izleyin.
string dateTime = “1 Ocak 2018”;
DateTime parsedValue = DateTime.Parse (dateTime);
İleri Kavramlar
S # 30) Delege nedir? Açıklamak.
Cevap: Temsilci, bir yönteme başvuruyu tutan bir değişkendir. Dolayısıyla bir işlev göstericisi veya başvuru türüdür. Tüm Temsilciler System.Delegate ad alanından türetilir. Hem Delege hem de başvurduğu yöntem aynı imzaya sahip olabilir.
- Bir temsilci bildirmek: genel delege void AddNumbers (int n);
Bir temsilcinin bildiriminden sonra, nesne new anahtar sözcüğü kullanılarak temsilci tarafından oluşturulmalıdır.
AddNumbers an1 = new AddNumbers (sayı);
Temsilci, bir delege çağrıldığında dahili olarak çağrılacak olan referans yöntemine bir tür kapsülleme sağlar.
public delegate int myDel(int number); public class Program { public int AddNumbers(int a) { int Sum = a + 10; return Sum; } public void Start() { myDel DelgateExample = AddNumbers; } }
Yukarıdaki örnekte, parametre olarak bir tamsayı değeri alan bir temsilci myDel'imiz var. Sınıf Programının, temsilciyle aynı imzaya sahip, AddNumbers () adı verilen bir yöntemi vardır.
Temsilcinin bir nesnesini oluşturan Start () adında başka bir yöntem varsa, nesne, temsilcinin imzasıyla aynı imzaya sahip olduğundan AddNumbers'e atanabilir.
S # 31) Olaylar nedir?
Cevap: Olaylar, yanıt vermesi gereken uygulamaya bildirimler oluşturan kullanıcı eylemleridir. Kullanıcı eylemleri fare hareketleri, tuşa basma vb. Olabilir.
Programlı olarak, bir olay oluşturan bir sınıfa yayıncı adı verilir ve olayı yanıtlayan / alan sınıfa abone adı verilir. Etkinliğin, hiçbir zaman ortaya çıkmayan en az bir abonesi olmalıdır.
Delegeler, Olayları bildirmek için kullanılır.
Genel delege void PrintNumbers ();
Olay Baskı Numaraları myEvent;
S # 32) Temsilciler Etkinliklerde nasıl kullanılır?
Cevap: Temsilciler olayları yükseltmek ve işlemek için kullanılır. Her zaman önce bir temsilcinin bildirilmesi gerekir ve ardından Olaylar bildirilir.
Bir örnek görelim:
Patient adlı bir sınıfı ele alalım. Hasta sınıfından Hastanın Ölüm bilgilerini gerektiren diğer iki sınıfı düşünün, Sigorta ve Banka. Burada Sigorta ve Banka abonelerdir ve Hasta sınıfı Yayıncı olur. Ölüm olayını tetikler ve diğer iki sınıf olayı almalıdır.
namespace ConsoleApp2 { public class Patient { public delegate void deathInfo();//Declaring a Delegate// public event deathInfo deathDate;//Declaring the event// public void Death() { deathDate(); } } public class Insurance { Patient myPat = new Patient(); void GetDeathDetails() { //-------Do Something with the deathDate event------------// } void Main() { //--------Subscribe the function GetDeathDetails----------// myPat.deathDate += GetDeathDetails; } } public class Bank { Patient myPat = new Patient(); void GetPatInfo () { //-------Do Something with the deathDate event------------// } void Main() { //--------Subscribe the function GetPatInfo ----------// myPat.deathDate += GetPatInfo; } } }
S # 33) Farklı Delege türleri nelerdir?
Cevap: Farklı Delege türleri şunlardır:
- Tek Temsilci : Tek bir yöntemi çağırabilen bir temsilci.
- Çok Noktaya Yayın Temsilcisi : Birden çok yöntemi çağırabilen bir temsilci. + ve - operatörleri sırasıyla abone olmak ve abonelikten çıkmak için kullanılır.
- Genel Temsilci : Temsilcinin bir örneğinin tanımlanmasını gerektirmez. Üç tiptir, Action, Funcs ve Predicate.
- Aksiyon - Yukarıdaki delege ve olay örneğinde, Action anahtar sözcüğünü kullanarak delege ve olay tanımını değiştirebiliriz. Eylem temsilcisi, bağımsız değişkenlerde çağrılabilen ancak bir sonuç döndürmeyen bir yöntemi tanımlar
Genel temsilci void deathInfo ();
Genel olay deathInfo deathDate;
// Action ile Değiştirmek //
Herkese açık olay Eylem deathDate;
Eylem, dolaylı olarak bir temsilciye atıfta bulunur.
-
- fonksiyonlar - Bir Func temsilcisi, bağımsız değişkenlerde çağrılabilen ve bir sonuç döndüren bir yöntemi tanımlar.
Func myDel aynı delege bool myDel (int a, string b);
-
- Dayanak - Bağımsız değişkenlerde çağrılabilen ve her zaman bool döndüren bir yöntem tanımlar.
MyDel'i tahmin et aynı delege bool myDel (dizeler);
S # 34) Çok Noktaya Yayın Delegeleri ne anlama geliyor?
Cevap: Birden fazla yöntemi işaret eden bir Delege, Çoklu Yayın Temsilcisi olarak adlandırılır. Çok noktaya yayın, + ve + = operatörü kullanılarak gerçekleştirilir.
Soru # 32'deki örneği ele alalım.
İçin iki abone var deathEvent, GetPatInfo , ve GetDeathDetails . Ve dolayısıyla + = operatörünü kullandık. Ne zaman olursa olsun myDel denir, her iki abone de aranır. Delegeler eklendikleri sıraya göre aranacaktır.
S # 35) Etkinliklerde Yayıncıları ve Aboneleri Açıklayın.
Cevap: Publisher, farklı türdeki diğer sınıfların mesajlarını yayınlamaktan sorumlu bir sınıftır. Mesaj, yukarıdaki sorularda tartışılan Olaydan başka bir şey değildir.
İtibaren Misal Soru # 32'de, Class Patient, Publisher sınıfıdır. Bir Etkinlik oluşturuyor deathEvent , diğer sınıflar tarafından alınır.
Aboneler, ilgilendikleri türden mesajı yakalarlar. Yine, Misal Q # 32, Sınıf Sigortası ve Banka Abonedir. Etkinlikle ilgileniyorlar deathEvent tip geçersiz .
S # 36) Eşzamanlı ve Eşzamansız işlemler nelerdir?
makefile c ++ oluşturma
Cevap: Eşitleme, herhangi bir zamanda kaynağa yalnızca bir iş parçacığının erişebildiği iş parçacığı güvenli bir kod oluşturmanın bir yoludur. Eşzamansız çağrı, program akışına devam etmeden önce yöntemin tamamlanmasını bekler.
Eşzamanlı programlama, yalnızca bir iş parçacığı kullanılacağından, kullanıcı zaman alıcı işlemler yapmaya çalıştığında UI işlemlerini kötü şekilde etkiler. Eşzamansız işlemde, yöntem çağrısı hemen dönecektir, böylece program, çağrılan yöntem belirli durumlarda çalışmasını tamamlarken diğer işlemleri gerçekleştirebilir.
C # 'da, zaman uyumsuz programlama elde etmek için Async ve Await anahtar sözcükleri kullanılır. Eşzamanlı programlama hakkında daha fazla ayrıntı için S # 43'e bakın.
S # 37) C # 'ta Yansıma nedir?
Cevap: Yansıma, bir kodun çalışma süresi sırasında derlemenin meta verilerine erişme yeteneğidir. Bir program kendi üzerine düşünür ve meta verileri kullanıcıyı bilgilendirmek veya davranışını değiştirmek için kullanır. Meta veriler, nesneler, yöntemler hakkındaki bilgileri ifade eder.
Ad alanı System.Reflection, yüklenen tüm türlerin ve yöntemlerin bilgilerini yöneten yöntemler ve sınıflar içerir. Esas olarak Windows uygulamaları için kullanılır, Örneğin , bir düğmenin özelliklerini bir pencere biçiminde görüntülemek için.
Sınıf yansımasının MemberInfo nesnesi, bir sınıfla ilişkili öznitelikleri keşfetmek için kullanılır.
Yansıma iki adımda gerçekleştirilir, önce nesnenin türünü alırız ve ardından türü yöntemler ve özellikler gibi üyeleri tanımlamak için kullanırız.
Bir sınıfın türünü öğrenmek için, basitçe kullanabiliriz:
Mytype = myClass.GetType () yazın;
Bir sınıfa sahip olduğumuzda, sınıfla ilgili diğer bilgilere kolayca erişilebilir.
System.Reflection.MemberInfo Bilgisi = mytype.GetMethod ('Ek Sayılar');
Yukarıdaki ifade, adı olan bir yöntem bulmaya çalışır Ek Sayılar sınıfta sınıfım .
S # 38) Genel Sınıf nedir?
Cevap: Generics veya Generic sınıfı, belirli bir veri türüne sahip olmayan sınıflar veya nesneler oluşturmak için kullanılır. Veri türü, çalışma süresi sırasında, yani programda kullanıldığında atanabilir.
Örneğin:
Dolayısıyla, yukarıdaki koddan, string ve int'i karşılaştırmak için başlangıçta 2 karşılaştırma yöntemini görüyoruz.
Diğer veri türü parametre karşılaştırmaları durumunda, çok sayıda aşırı yüklenmiş yöntem oluşturmak yerine, genel bir sınıf oluşturabilir ve bir ikame veri türü, yani T geçirebiliriz. Yani, T, özellikle Main () yönteminde kullanılıncaya kadar bir veri türü olarak işlev görür. .
S # 39) Get ve Set Accessor özelliklerini açıklar mısınız?
Cevap: Get ve Set, Accessors olarak adlandırılır. Bunlar, Özellikler tarafından kullanılır. Özellik, özel bir alanın değerini okumak, yazmak için bir mekanizma sağlar. Bu özel alana erişmek için bu erişimciler kullanılır.
Get Property, bir mülkün değerini döndürmek için kullanılır
Değer ayarlamak için Özellik Ayarla erişimcisi kullanılır.
Get ve set kullanımı aşağıdaki gibidir:
S # 40) Konu nedir? Multithreading nedir?
Cevap: İş Parçacığı, programımızın eşzamanlı işlem yapmasını sağlayacak, yürütülebilecek bir dizi talimattır. Eşzamanlı işleme, aynı anda birden fazla işlem yapmamıza yardımcı olur. Varsayılan olarak, C # yalnızca bir iş parçacığına sahiptir. Ancak, kodu orijinal iş parçacığına paralel olarak yürütmek için diğer evreler oluşturulabilir.
İpliğin bir yaşam döngüsü vardır. Bir iş parçacığı sınıfı yaratıldığında başlar ve yürütmeden sonra sonlandırılır. System.Threading evreler oluşturmak ve üyelerini kullanmak için dahil edilmesi gereken ad alanıdır.
Dişler, Diş Sınıfı genişletilerek oluşturulur. Başlat() yöntem, iş parçacığı yürütmeye başlamak için kullanılır.
//CallThread is the target method// ThreadStart methodThread = new ThreadStart(CallThread); Thread childThread = new Thread(methodThread); childThread.Start();
C # aynı anda birden fazla görevi yürütebilir. Bu, farklı işlemlerin farklı iş parçacıkları tarafından ele alınmasıyla yapılır. Buna MultiThreading denir.
Çok iş parçacıklı işlemleri işlemek için kullanılan birkaç iş parçacığı yöntemi vardır:
Başlat, Uyku, Durdur, Askıya Al, Sürdür ve Katıl.
Bu yöntemlerin çoğu kendinden açıklamalıdır.
S # 41) Diş Sınıfının bazı özelliklerini adlandırın.
Cevap: İplik sınıfının birkaç özelliği:
- Yaşıyor - bir iş parçacığı Aktif olduğunda True değerini içerir.
- İsim - İpliğin adını döndürebilir. Ayrıca, iş parçacığı için bir ad belirleyebilir.
- Öncelik - işletim sistemi tarafından belirlenen görevin öncelikli değerini döndürür.
- Arka Plan - iş parçacığının bir arka plan işlemi mi yoksa ön plan mı olması gerektiğini belirten bir değer alır veya ayarlar.
- ThreadState - iş parçacığı durumunu tanımlar.
S # 42) Bir İş Parçacığının farklı durumları nelerdir?
Cevap: Bir iş parçacığının farklı durumları şunlardır:
- Başlatılmamış - Konu oluşturulur.
- Koşu - İş parçacığı yürütmeye başlar.
- WaitSleepJoin - İş parçacığı uykuyu çağırır, çağrılar başka bir nesnede bekler ve başka bir iş parçacığında birleştirmeyi çağırır.
- Askıya alındı - Konu askıya alındı.
- Durduruldu - İş parçacığı öldü, ancak durduruldu durumuna değiştirilmedi.
- Durduruldu - Konu durdu.
S # 43) Async ve Await nedir?
Cevap: Async ve Await anahtar sözcükleri, C'de zaman uyumsuz yöntemler oluşturmak için kullanılır.
Eşzamansız programlama, işlemin ana veya diğer işlemlerden bağımsız olarak çalışması anlamına gelir.
Async ve Await kullanımı aşağıda gösterildiği gibidir:
- Yöntem bildirimi için zaman uyumsuz anahtar sözcük kullanılır.
- Sayım, CalculateCount () yöntemini çağıran int türünde bir görevdir.
- Calculatecount () yürütmeyi başlatır ve bir şey hesaplar.
- İş parçacığım üzerinde bağımsız çalışma yapılıp ardından wait count ifadesine ulaşılır.
- Hesaplama işlemi bitmemişse, myMethod çağırma yöntemine dönecek ve böylece ana iş parçacığı engellenmeyecek.
- Hesaplama hesabı zaten bitmişse, kontrol bekleme sayımına ulaştığında sonucu hazır bulundururuz. Yani bir sonraki adım aynı başlıkta devam edecek. Ancak yukarıdaki durumda 1 saniyelik gecikmenin söz konusu olduğu durum söz konusu değildir.
S # 44) Kilitlenme nedir?
Cevap: Kilitlenme, iki veya daha fazla işlemin birbirinin bitmesini beklemesi nedeniyle bir sürecin yürütülmesini tamamlayamadığı bir durumdur. Bu genellikle çoklu iş parçacığı ile oluşur.
Burada, paylaşılan bir kaynak bir işlem tarafından tutulur ve başka bir işlem, ilk işlemin onu serbest bırakmasını bekler ve kilitli öğeyi tutan iş parçacığı, başka bir işlemin tamamlanmasını bekler.
Aşağıdaki Örneği düşünün:
- Görevleri gerçekleştir, objB'ye erişir ve 1 saniye bekler.
- Bu arada PerformtaskB, ObjA'ya erişmeye çalışır.
- 1 saniye sonra PeformtaskA, PerformtaskB tarafından kilitlenen ObjA'ya erişmeye çalışır.
- PerformtaskB, PerformtaskA tarafından kilitlenen ObjB'ye erişmeye çalışır.
Bu kilitlenme yaratır.
S # 45) Açıkla L ock , Monitörler , ve Mutex Diş Açmada Nesne.
Cevap: Lock anahtar sözcüğü, herhangi bir zamanda yalnızca bir iş parçacığının kodun belirli bir bölümüne girebilmesini sağlar. Yukarıda Misal , lock (ObjA), bu işlem onu serbest bırakana kadar kilidin ObjA'ya yerleştirildiği anlamına gelir, başka hiçbir iş parçacığı ObjA'ya erişemez.
Mutex aynı zamanda bir kilit gibidir, ancak aynı anda birden fazla işlemde çalışabilir. WaitOne () kilitlemek için, ReleaseMutex () ise kilidi açmak için kullanılır. Ancak Mutex, onu elde etmek ve serbest bırakmak zaman aldığı için kilitlenmekten daha yavaştır.
Monitor.Enter ve Monitor.Exit kilidi dahili olarak uygular. kilit, Monitörler için bir kısayoldur. lock (objA) dahili olarak çağırır.
Monitor.Enter(ObjA); try { } Finally {Monitor.Exit(ObjA));}
S # 46) Yarış Durumu nedir?
Yıl: Yarış durumu, iki iş parçacığı aynı kaynağa eriştiğinde ve aynı anda onu değiştirmeye çalıştığında oluşur. Kaynağa ilk erişebilecek olan iş parçacığı tahmin edilemez.
T1 ve T2 olmak üzere iki iş parçacığımız varsa ve bunlar X adında paylaşılan bir kaynağa erişmeye çalışıyorlarsa. Her iki iş parçacığı da X'e bir değer yazmaya çalışırsa, X'e yazılan son değer kaydedilecektir.
S # 47) İş Parçacığı Havuzu Oluşturma nedir?
Yıl: İş parçacığı havuzu bir iş parçacığı koleksiyonudur. Bu iş parçacıkları, birincil iş parçacığını rahatsız etmeden görevleri gerçekleştirmek için kullanılabilir. İş parçacığı görevi tamamladığında, iş parçacığı havuza geri döner.
System.Threading.ThreadPool ad alanı, havuzdaki iş parçacıklarını ve işlemlerini yöneten sınıflara sahiptir.
System.Threading.ThreadPool.QueueUserWorkItem(new System.Threading.WaitCallback(SomeTask));
Yukarıdaki satır bir görevi sıraya koyar. Bazı Görev yöntemlerinin Object türünde bir parametresi olmalıdır.
S # 48) Serileştirme nedir?
Cevap: Serileştirme, kodu ikili biçimine dönüştürme işlemidir. Bayta dönüştürüldükten sonra, kolayca saklanabilir ve bir diske veya bu tür depolama aygıtlarına yazılabilir. Serileştirmeler, esas olarak kodun orijinal biçimini kaybetmek istemediğimizde yararlıdır ve gelecekte herhangi bir zamanda geri alınabilir.
(Serileştirilebilir) özniteliğiyle işaretlenen herhangi bir sınıf, ikili biçime dönüştürülecektir.
C # kodunu ikili formdan geri alma işleminin tersine Deserialization denir.
Bir nesneyi Serileştirmek için, serileştirilecek nesneye ihtiyacımız var, serileştirilmiş nesneyi ve ad alanını içerebilen bir akış System.Runtime.Serialization, serileştirme için sınıflar içerebilir.
S # 49) Serileştirme türleri nelerdir?
Cevap: Farklı Serileştirme türleri şunlardır:
- XML serileştirme - Tüm genel özellikleri XML belgesine serileştirir. Veriler XML biçiminde olduğundan, çeşitli biçimlerde kolayca okunabilir ve işlenebilir. Sınıflar System.sml.Serialization'da bulunur.
- SABUN - Sınıflar System.Runtime.Serialization'da bulunur. XML'e benzer, ancak SOAP'ı anlayan herhangi bir sistem tarafından kullanılabilen eksiksiz bir SOAP uyumlu zarf üretir.
- İkili Serileştirme - Herhangi bir kodun ikili biçimine dönüştürülmesine izin verir. Genel ve genel olmayan mülkleri seri hale getirebilir ve geri yükleyebilir. Daha hızlıdır ve daha az yer kaplar.
S # 50) XSD dosyası nedir?
Cevap: Bir XSD dosyası, XML Şema Tanımı anlamına gelir. XML dosyası için bir yapı verir. Bu, XML'in sahip olması gereken öğelere, hangi sırada ve hangi özelliklerin olması gerektiğine karar verdiği anlamına gelir. XML ile ilişkilendirilmiş bir XSD dosyası olmadan, XML herhangi bir etikete, herhangi bir niteliğe ve herhangi bir öğeye sahip olabilir.
Xsd.exe aracı, dosyaları XSD biçimine dönüştürür. C # kodunun Serileştirilmesi sırasında, sınıflar xsd.exe tarafından XSD uyumlu biçime dönüştürülür.
Sonuç
C # her geçen gün hızla büyümekte ve Yazılım Test Endüstrisinde önemli bir rol oynamaktadır.
Eminim ki bu makale mülakata hazırlanmanızı çok daha kolaylaştıracak ve C # konularının çoğu hakkında size yeterli miktarda bilgi verecektir.
Herhangi bir C # röportajıyla kendinizden emin bir şekilde yüzleşmeye hazır olduğunuzu umuyoruz !!
Önerilen Kaynaklar
- Mülakat Soruları ve Cevapları
- ETL Test Mülakat Soruları ve Cevapları
- En Popüler 50 CCNA Mülakat Soruları ve Cevapları
- En İyi 51 Bootstrap Röportaj Soruları ve Cevapları
- En İyi 20+ .NET Mülakat Soruları ve Cevapları
- En İyi 50 Veritabanı Mülakat Soruları ve Cevapları
- Bazı Zor Manuel Test Soruları ve Cevapları
- 25 En İyi Çevik Test Mülakat Soruları ve Cevapları