it-swarm.asia

C # Multithreading Üst düzey bir geliştirici / tasarımcı pozisyonu için röportaj soruları

Üst düzey bir geliştiriciye veya çoklu iş parçacığı konusunda teknik danışmana ne tür mülakat soruları sorulduğunu merak ediyorum.

Mümkünse, senaryo tabanlı soruları bazı teorik sorularla birlikte yazarken, çoktan okuma üzerine röportajda sorulan bazı görüşme sorularını bana verin. Bazı insanlarla tartışmanın ardından bazı zaman röportajcılarının size bir senaryo verebileceğini ve bunu uygulamanızı isteyebileceğini bildiğim gibi mi?

@ Görüşmede diğer kişilere karşı karşıya kaldığınız veya sorduğunuz belirli soruları sadece kavramlardan bahsetmekten başka ekleyin, çünkü insanlar kavramları gözden geçiriyor ve hala görüşme sorularını ele almayı zor buluyor. soru aslında kişinin d gün için bir başlangıç ​​yapmak için yardımcı olabilir

7
Mohit Bhandari

Adaydan C # 'da çok iş parçacıklı uygulamalar oluşturmak için en az 2 veya 3 farklı yol tarif etmesini isteyebilirim.

  • Thread sınıfının açık kullanımı

  • Threadpool

  • Görev Paralel Kütüphanesi

  • Lambda fonksiyonlu eylem sınıfı

  • Beginınvoke

  • BackgroundWorker

Ayrıca nasıl açıkça açıkça bir iş parçacığı oluşturmadan çok iş parçacıklı bir uygulama ile sonuçlanabilir sormak.

  • Olay işleyicileri başka bir iş parçacığında çalışabilir (SNetPort.DataReceived ve .Net'teki üç Zamanlayıcıdan biri veya ikisi akla gelir).

Ayrıca yeniden giriş kodu oluşturma yöntemleri hakkında da konuşmak isteyebilirsiniz.

  • kilit

  • Monitor.Wait ve Monitor.Pulse

  • ManualResetEvent

  • statik sınıflar/yöntemler

Yazdığım bir gönderiden daha fazla bilgi gelebilir burada .

Son olarak, bir kitaptan sadece bir beyin dökümü yerine bu derslerin nereden öğrenildiğini deneyimler isteyebilirim. Üst düzey bir geliştirici, keşifleri ve problem çözme yetenekleri hakkında fikir vermesi gereken birçok deneyime sahip olacaktır.

6
Nate

En sevdiğim sorulardan biri:

  1. Konuları kullanmadan nasıl duyarlı kullanıcı arayüzü oluşturabilirsiniz? Beklenen cevap: İşi küçük parçalara bölerek ve bunları kullanıcı arayüzünün mesaj döngüsünde sıraya koyarak. (Eric Lippert'in nasıl yapılacağı konusunda iyi bir açıklaması var http://blogs.msdn.com/b/ericlippert/archive/2010/10/25/continuation-passing-style-revisited-part-three- musings-about-coroutines.aspx )

Şu anda başka bir cevapta listelenmeyen ilginç bir soru:

  1. TPL'de iş çalmalarını açıklar. Nasıl çalışır ve neden? Beklenen cevap: Sıranın sahibi olan çekirdeğin bir taraftaki öğeleri nasıl ayıkladığını açıklayın, kuyruğa sahip olmayan bir çekirdek diğer taraftan CPU önbellek hatlarını korumak için "çaldı".
2
Stilgar

Diğer tüm cevaplara ek olarak, adayı birkaç konu örneği ile sunacağım ve problemlerin nerede ortaya çıkabileceğini göstermesini sağlayacağım.

Bazı örnekler, yarış koşullarını, kilitleri veya bir problemi tek dişliden çok iş parçacığına dönüştürmesini içerir. Özellikle sonuncusunu tasarımının gözden geçirilmesiyle takip etmeyi ve performans artışının neden, ne kadar ve ne kadar artacağını açıklamasına izin vermek istiyorum.

2
Jorge Córdoba

Bu matrisi her zaman sevdim: http://www.indiangeek.net/wp-content/uploads/Programmer%20competency%20matrix.htm

Size hazır bir soru kutusu sağlamaz, ancak bir adayı sıralamak için sorular seçebileceğiniz (almanız gereken) oldukça kapsamlı bir alan kümesi sağlar.

GJ

1
gjvdkamp

Bulduğum iyi bir yöntem, Invoke, WaitHandles, Semiphores vb.Gibi çeşitli multithreading formlarına ihtiyaç duyan birkaç sahte sınıf oluşturmak ve daha sonra sınıfları yazdırmak ve seçenekleri adayla tartışmak. Mülakat yapılan kişiye adayın nasıl düşündüğü konusunda daha fazla geri bildirim verir ve adaya önceki projelere referanslar sunmasını sağlar.

0
Lloyd