Korkunç C # programlama röportaj testi - herhangi bir tavsiye? [kapalı]


21

Sıraladığım bir C # dev işim var ancak görüşmeden önce iş bulma kurumu ile test yaptırmam gerekiyor.

Şimdi, 10 yıldan fazla programlama tecrübesi olan ve 3 yıldan daha uzun bir süre önce c # ile üst düzey bir geliştirici olmama rağmen, gerçekten bu testi dört gözle bekliyorum ve başarısız olma ihtimalimin yüksek olduğunu düşünüyorum.

Tecrübelerime göre, bu testler günlük çalışma durumlarında nadiren kullandığınız şeyleri sormak için tahmin edilemez.

Neyi gözden geçirmem gerektiği konusunda en iyi tavsiyeye ihtiyacım var - örneğin iyi bir kitap veya web sitesi. Hazırlanacak 1 haftadan az sürem var ve bunu geçmem şart.

Şimdiden teşekkürler.

EDIT: Bu tür testler yazma endişelerimi daha da doğrulamak için - Şu soruyu düşünün:

12) Bir Olay:

   a) The result of a users action - correct answer
   b) The esult of a party
   c) code to force users action

Teste göre doğru cevap A, ancak SOA geliştirme yaptığımdan (genellikle olaylar sistem olaylarına dayanabileceği zaman (kullanıcı eylemleri değil) bir etkinliğin yönlendirilmesi gerekmediğinden% 100 eminim) Bir kullanıcı eylemi. Bu aynı zamanda bir C # sorusuydu (bir ASP.net sorusu değil). Anlayışıma dayanarak, doğru bir cevabı tam olarak tespit edemedim ama B partinin en iyisi gibi görünüyor (eğer parti tanımı: herhangi bir Bir olayı tetikleyebilecek varlık… Bu tür sorular beni korkutuyor.


4
'Üst düzey bir geliştirici' iseniz ve üç yıldır C # gün kullanıyorsanız, iyi olmalısınız. Bu testler normal olarak dili veya kullanımlarını bilmeyen insanları dışlamak içindir. 3 yıldır günden güne kullanıyorsanız, verilen bir testte neredeyse tüm tuzaklara rastlamanız gerekirdi.
George Stocker

11
@GeorgeStocker - aslında, bu testlerin bazılarını (daha çok tam .NET çerçevesini hedef alarak) almak zorunda kaldım ve çok ayrıntılıydı. Onları oldukça zor buldum çünkü ilk önce çok fazla tecrübeye sahip olmadığım çerçeveye (WCF gibi) girdiler. Artı bir .config dosyasında hangi konfigürasyon seçeneğini kullanacağınız gibi bir şeyi bilmek zorundaydınız. bazı belirsiz seçenek. Nadiren ezberlemeniz gereken şeylerdi, çünkü muhtemelen sadece bir kez kullanıp Google’ı kullanacaktınız. Bu deneyimi biraz sinir bozucu buldum.
Scott Whitlock

7
Ve yanlış anladığım sorulardan biri de "VB.NET’te, bir yapı bildirmek için kullanılan anahtar kelime nedir? A) struct b) Struct c) yapı d) Yapı". "İstihbarat bunu biliyor, bu yüzden yapmak zorunda değilim!" Diye düşünüyordum. Şimdi, elbette, cevap hafızamda aranıyor.
Scott Whitlock

17
@ScottWhitlock: Kötü tasarlanmış bir röportaj için yeterince hazırlanmanıza imkan yok. Bir noktada, gerçekten de uzmanlaştığını iddia ettiğiniz alanlara ve bazı kavramsal yeteneklere dayanarak sormaya ve yargılamaya yetkin olduklarına güvenmek zorundasınız. Olmazlarsa, muhtemelen yine de onlar için çalışan sefil bir zamanınız olur.
Aaron,

2
Bu bir C # dil testi mi, yoksa .NET Framework testi mi?
Karıncalar

Yanıtlar:


24

Biraz eski olsa da, belki bu blog yazısı sizin için yararlıdır: Ne harika geliştiriciler bilmeli (daha fazla .NET röportaj soruları)

Kod yazan herkes

  • Bir iş parçacığı ve bir işlem arasındaki farkı açıklayın?
  • Windows Hizmeti nedir ve kullanım ömrü "standart" bir EXE'den nasıl farklıdır?
  • Windows'taki herhangi bir işlemin adresleyebileceği maksimum bellek miktarı nedir? Bu, sistem için maksimum sanal bellekten farklı mı? Bu sistem tasarımını nasıl etkiler?
  • Bir EXE ve bir DLL arasındaki fark nedir?
  • Zayıf yazmaya karşı güçlü yazma nedir? Hangisi tercih edilir? Niye ya?
  • Corillian'ın ürünü bir "Komponent Kabı" dır. Şimdi Windows Server Ailesiyle birlikte gelen en az 3 bileşen kapsayıcısını adlandırın.
  • PID nedir? Bir sistemde sorun giderirken ne kadar faydalıdır?
  • Tek bir TCP / IP portunda kaç işlem dinleyebilir?
  • GAC nedir? Hangi sorunu çözer?

Orta Seviye .NET Geliştirici

  • Arayüz yönelimli, Nesne yönelimli ve Yön yönelimli programlama arasındaki farkı açıklayın.
  • Arabirimin ne olduğunu ve bir Sınıftan nasıl farklı olduğunu açıklayın.
  • Yansıma nedir?
  • SOM kullanarak ASMX ve .NET Remoting kullanan XML Web Servisleri arasındaki fark nedir?
  • Tip sistemi XmlSchema ve CLS izomorfik ile temsil ediliyor mu?
  • Kavramsal olarak, erken bağlama ve geç bağlama arasındaki fark nedir?
  • Assembly.Load statik referans mı yoksa dinamik referans mı kullanıyor?
  • Assembly.LoadFrom veya Assembly.LoadFile ne zaman kullanılmalıdır?
  • Bir Montaj Nitelikli Adı nedir? Bir dosya adı mı? Nasıl farklı?
  • Bu geçerli mi? Assembly.load ( "Foo.dll");
  • Kesin olarak adlandırılmış bir derlemenin kesin olarak adlandırılmamış olandan farkı nedir?
  • DateTimes boş olabilir mi?
  • JIT nedir? NGEN Nedir? Her birinin sınırlamaları ve faydaları nelerdir?
  • .NET CLR'deki kuşak çöp toplayıcısı nesnenin ömrünü nasıl yönetir? Deterministik olmayan sonlandırma nedir?
  • Finalize () ve Dispose () arasındaki fark nedir?
  • Using () kalıbı nasıl faydalıdır? Tek kullanımlık nedir? Deterministik sonlandırmayı nasıl destekliyor?
  • Bu yararlı komut satırı ne işe yarar? görev listesi / m "mscor *"
  • İşlem içi ve işlem dışı arasındaki fark nedir?
  • Hangi teknoloji .NET'te işlem dışı iletişimi sağlar?
  • ASP.NET'te bir bileşen çalıştırırken, Windows XP'de hangi süreç çalışıyor? Windows 2000? Windows 2003?

Kıdemli Geliştiriciler / Mimarlar

  • Böyle bir çizgide yanlış olan ne? DateTime.Parse (myString);
  • PDB nedir? Hata ayıklamanın çalışması için nerede bulunmalılar?
  • Döngüsel karmaşıklık nedir ve neden önemlidir?
  • Değişken erişim etrafında kritik bir bölüm oluşturmak için standart bir kilit () artı “iki kez kontrol” yazın.
  • FullTrust Nedir? GAC'lı meclislerde FullTrust var mı?
  • Belirli Güvenlik izinleri gerektiren özelliklerle dekore ederseniz kodunuz ne kadar yararlanır?
  • Bu ne işe yarıyor? gacutil / l | "Corillian" ı bul /
  • Bu ne işe yarıyor? sn -t foo.dll
  • Bir güvenlik duvarı üzerinden DCOM için hangi bağlantı noktalarının açık olması gerekir? 135 numaralı limanın amacı nedir?
  • Kontrast OOP ve SOA. Her birinin ilkeleri nelerdir?
  • XmlSerializer nasıl çalışır? Hangi ACL izinlerini kullanan bir işlem gerektirir?
  • Neden yakalamak (İstisna) hemen hemen her zaman kötü bir fikirdir?
  • Debug.Write ve Trace.Write arasındaki fark nedir? Her biri ne zaman kullanılmalı?
  • Bir hata ayıklama ve sürüm oluşturma arasındaki fark nedir? Önemli bir hız farkı var mı? Neden ya da neden olmasın?
  • JITting, montaj başına mı yoksa yöntem başına mı gerçekleşiyor? Bu çalışma setini nasıl etkiler?
  • Soyut bir temel sınıfın kullanımı bir arayüze karşı mı?
  • A.Equals (b) ve a == b arasındaki fark nedir?
  • Bir karşılaştırma bağlamında, nesne kimliği ve nesne denkliği nedir?
  • Biri .NET'te nasıl derin bir kopya yapar?
  • IClonable ile ilgili güncel düşünceleri açıklar.
  • Boks nedir?
  • Dize bir değer türü veya başvuru türü mü?
  • XmlSerializer tarafından kullanılan "PropertySpecified" deseninin önemi nedir? Hangi sorunu çözmeye çalışıyor?
  • .NET'te parametreler neden kötü bir fikir? Onlar mı?
  • Bir yönteme özgü parametreler üzerine nitelikler yerleştirilebilir mi? Bu neden faydalıdır?

C # Bileşen Geliştiricileri

  • Geçersiz kılma kullanımını yenisiyle birlikte kullanın. Gölgeleme nedir?
  • Sanal, mühürlü, geçersiz kılma ve soyut kullanımlarını açıklayın.
  • Bu dizenin her bir bileşeninin önemini ve kullanımını açıklayın: Foo.Bar, Sürüm = 2.0.205.0, Kültür = nötr, PublicKeyToken = 593777ae2d274679d
  • Kamusal, korumalı, özel ve iç arasındaki farkları açıklar.
  • Birincil Birlikte Çalışma Meclisi'ni (PIA) kullanmanın yararı nedir?
  • NUnit hangi mekanizmaları kullanarak hangi yöntemleri test edeceğini bilir?
  • Arasındaki fark nedir: catch (İstisna e) {throw e;} ve catch (İstisna e) {throw;}
  • Typeof (foo) ve myFoo.GetType () arasındaki fark nedir?
  • İlk kurucuda neler olduğunu açıklayın: public class c {public c (string a): this () {;}; public c () {;}} Bu yapı nasıl yararlıdır?
  • Nedir bu ? Bu statik bir yöntemde kullanılabilir mi?

ASP.NET (UI) Geliştiricileri

  • Tarayıcı tabanlı Form POST'un, Button1_OnClick gibi Sunucu Tarafı olayı haline geldiğini açıklayın ...

1
Burada listelenen her cevap faydalı ve güzeldi, ancak listenizdeki her soruyu inceledim (4 saatimi aldı) ve çevrimiçi olarak bir örnek test yazdım ve geçti. Herhangi bir .net geliştiricisini en az bir kez bu soruları incelemeye ve cevapları anladığınızdan ve 2. ve 3. fikirlerinizi aldığınızdan emin olmaya teşvik ediyorum. Pek çok kişi (Google’da bulunan) soruları yanıtlar, ancak çoğu zaman yanlış cevap bile özlü olmaz. Yani dikkatli ol. Hangi cevapları bulduğunu kontrol et.
JL01

2
İyi bağlantı! Bunlardan kaç tanesini bildiğime şaşırdım. this.Ego ++;
Justin Self

@justnS: Gönderiyi keşfettiğimde aynısı bana da oldu. :-)
Konamiman

Birkaç hafta önce bir röportaj için gittim ve bunu cevaplamam için bastırdılar. bana göre, görüşmeci üzerinde yansıdı.
dbones

1
Cevapları ne zaman ekleyeceksin? ;)
Thijs van Dien

10

Sadece çek git Renee

Birkaç kez böyle testler yaptım. Şimdi sadece yürüyüp gidiyorum. Testler, programlama bilgisinin en önemsiz bitlerini ölçer. Bu testleri programcıları değerlendirmenin iyi bir yolu olduğunu düşünen biri için çalışmak ister misiniz? Yapmıyorum.


1
Bunlar asgari standart olarak iyi bir yoldur , yani gerekli bir durumdur, ancak yeterli bir durum değildir .
Sklivvz

4
@ Sklivvz: belki, iyi testler olsaydı . Ticari testlerin çoğu trivia'da aptalca alıştırmalar: “Bir metin dosyasını okumak için hangi sınıfı kullanırsınız?” İyi bir geliştirici, on dakika boyunca bayt akışları ve karakter akışları arasındaki farklar ve UTF kodlamalarının ayrıntıları hakkında konuşabilir ve hala bu soruyu özleyebilir. Bilgi kolayca erişilebilir olduğunda, onu ezberlemenin bir anlamı yoktur.
kevin cl

2
Kevin ile aynı fikirdeyim. İşinizle ilgili olarak testlerde bulunabilecek çok fazla bilgi var. Bu yüzden Google ve IntelliSense’i icat ettiler - cevaplara ihtiyaç duyduğumuzda, onları kullanma ihtiyacı temelinde
buluyoruz

2
Testine bağlı değil. Kaçabileceğim testler var ama sonra iyi olan testler var. Basit bir 3 programlama soru testimiz var. İlk soru basit bir C # uygulaması yazmaktır. İkinci 5 basit SQL sorgusu yazmak ister. Üçüncüsü, sınav katılımcısı daha fazla bilgi istemeden cevaplanamayan bir soru. Birinci ve ikinci sorular tamamen yetersiz programcıları dışlar. Bu bize zamanımıza değmeyen insanlarla röportaj yapmaktan zaman kazandırır. Üçüncü soru, bir programcının problem çözmeye nasıl yaklaştığı konusunda bize fikir verir. Çok değerli şeyler.
Pete,

8

Geçen sene seninki gibi bir durumdaydım. O kadar uzun zaman olmuştu ki röportaj yapmaktayım. C # röportaj soruları için bir arama yaptım ve birkaç site buldum (birçoğu diğer yazarlar tarafından listelendi) ve bunları araştırdım. Sürprizimden çok, görüşmelerin% 90'ı o bölgeden geldi, sözlü . Sanırım görüşmeciler Google'ı soru bulmak için de kullanıyorlar :)


6

Size tamamen katılıyorum:

Testler, günlük çalışma koşullarında nadiren kullanacağınız şeyleri sormanız beklenmez.

..ama onlar sürecin bir parçası, bu yüzden gerçekten yapabileceğimiz bir şey yok. Yaklaşık 10 yıllık tecrübesi olan ve yaklaşık 5'i .NET C # olan sizin gibi bir şeyim. Bunları bu iki ÇOK iyi kitabın içinde buldum:

Derinlik C #

Özetle C #

C # hakkında bilmeniz gereken her şeyi kapsamalıdır. Gerisi C # benzeri ASP.NET vb. Temelli belirli teknolojilerde edindiğiniz kendi becerileriniz ve becerilerinizdir.


3
ama onlar sürecin bir parçası, bu yüzden gerçekten bu konuda yapabileceğimiz bir şey yok. İş yerinizde işe alma sürecinin bir parçası olarak aptalca programlama testlerinin yapılmamasını savunmaya ne dersiniz? İşe alma süreçleri yetkinliğinizi göstermeli, belirsiz önemsiz şeyleri ezberleyebilmelisiniz.
joshin4colours

@ joshin4colours - bu yüzden görüşme konusundaki uzun sohbete iyi bir inancım inanıyorum ... yine de yok olmaları için
iyidirler

2
Aslında kitaplardan birinin yazarı ile röportaj yaptım ve onu reddettim ...
Sklivvz

3

Bu testler, profesyonel işe alım firmaları ve bazı şirketler tarafından ön tarama başvurularının bir parçası haline gelmiştir. Teknik olmayan görüşme yapanlara birisinin teknik yeteneklerini değerlendirmek için bir yol vermek üzere tasarlanmıştır. Ancak, bunlar aslında bir programcının yetenekleri hakkında anlamlı bir şey söylemeyecek trivia testlerinden ibaret, aslında hiçbir şey bilmeyenleri dışlamaktan başka bir şey değil. Ne yazık ki, bazı şirketler / çalışanlar bu sonuçlara çok fazla ağırlık veriyor.

Onlar için çalışmanın yolu, röportaj soru siteleri, okunaklı siteler bulmak ve size cevapları satmaya çalışanlar değil, açılır pencere reklamları veya diğer saçmalıklar ile sıvanmış ve cevapları tıkamaktır. Bu şekilde iyi bir puan alacak ve engelin üzerinden atlayacaksınız. Şirket bu sonuçlara çok fazla ağırlık veriyorsa, muhtemelen bir şekilde çalışacak en iyi şirket değildir.


2

Bir iş bulma kurumu testi ise o kadar zor olmamalı. Testi geliştirmek için dil uzmanlarına sahip değiller. Muhtemelen tek yapacakları soruları bir web sitesinden kopyalamak / yapıştırmak.

Çerçevenin genel olarak nasıl çalıştığını ve görevler için en yaygın ad alanlarını / kütüphanelerini bildiğiniz sürece, belirli görevler için ne gibi şeyler kullanmanız gerekiyorsa, iyi olmalısınız.


2

Mülakat testlerinde, çoğu kurum kültürüne ve test yaratıcısına bağlıdır. Belirsiz sorular sormaya ve sizi gezdirmeye niyetli olsalardı, zeki ve işini yapabilen yüksek kaliteli bireylerle daha fazla ilgilenen başka bir firmaya ya da kuruma giderim.

Yani, günlük işinizde c # kullandığınızda, sorun çözme ve mantık çabalarını ve daha az şeylerin kitap öğrenme tarafına yoğunlaşacağınızı söyledi.

Project Euler, muhtemelen biraz paslanmış hale gelen becerileri uygulamak ve geliştirmek için harika bir yer.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.