Pytania, na które powinien odpowiedzieć każdy dobry programista .NET? [Zamknięte]


246

Moja firma ma wkrótce zatrudnić programistów .NET . Pracujemy na różnych platformach .NET: ASP.NET, Compact Framework, Windowsforms, Web Services. Chciałbym sporządzić listę / katalog dobrych pytań, rodzaj minimalnego standardu, aby sprawdzić, czy kandydaci są doświadczeni. Moje pytanie brzmi:

Jak myślisz, na jakie pytania powinien odpowiedzieć dobry programista .NET ?

Widziałbym to również jako listę kontrolną dla siebie, aby zobaczyć, gdzie są moje własne deficyty (jest wiele ...) .

alternatywny tekst

* AKTUALIZACJA: Chodzi o to, aby wyjaśnić, że nie testujemy tylko wiedzy w zakresie .NET, a możliwości rozwiązywania problemów i ogólne umiejętności programistyczne są dla nas jeszcze ważniejsze.

Odpowiedzi:


171

Podstawowe pytania obejmują:

Myślę, że zwykle pomaga poprosić wnioskodawców o wykonanie prostego ćwiczenia kodowania, takiego jak:

  • Napisz własną klasę list połączonych bez korzystania z klas wbudowanych.
  • Napisz własną klasę hashtable bez korzystania z wbudowanych klas.
  • Napisz klasę reprezentującą drzewo binarne. Napisz metodę, która przetnie wszystkie węzły drzewa.
  • Napisz metodę wykonywania wyszukiwania binarnego na tablicy bez użycia wbudowanych metod.
  • Narysuj schemat bazy danych dla bloga. Każdy użytkownik ma tylko jednego bloga, każdy blog ma wiele kategorii, każda kategoria ma wiele postów, a każdy post może należeć do więcej niż jednej kategorii. Poproś wnioskodawcę o napisanie zapytań w celu wyciągnięcia określonych informacji.

Następnie poszukaj konkretnej wiedzy technicznej:

  • (Procedury obsługi zdarzeń) Utwórz klasę za pomocą niestandardowej procedury obsługi zdarzeń, utwórz inną klasę, która podpina się do niestandardowej procedury obsługi zdarzeń.
  • (XML) Załaduj dokument XML i wybierz wszystkie węzły o właściwościach x, yiz.
  • (Programowanie funkcjonalne) Utwórz funkcję, która akceptuje inną funkcję jako parametr. Funkcja Map lub Fold działa naprawdę dobrze w tym przypadku.
  • (Refleksja) Napisz funkcję, która określa, czy klasa ma określony atrybut.
  • (Regex) Napisz wyrażenie regularne, które usuwa wszystkie tagi z bloku HTML.

Żadne z tych pytań nie jest szczególnie trudne dla kompetentnego programisty C # i powinny dać ci dobry obraz twoich kandydatów. Możesz także popracować nad kilkoma przykładami pytań / kodu, które wykorzystują określone wzorce projektowe.

[Edytuj dla wyjaśnienia] :

Wydaje się, że wiele osób nie rozumie, dlaczego zadawałem tego rodzaju pytania. Pozwolę sobie dotknąć komentarzy kilku osób (nie cytuję bezpośrednio, ale parafrazuję):


P: Kiedy ostatni raz ktoś używał substancji lotnych lub słabych referencji?

Odp .: Kiedy udzielam wywiadów technicznych, sprawdzam, czy dana osoba rozumie funkcje wysokiego i niskiego poziomu .NET. Substancje lotne i słabe referencje to dwie funkcje niskiego poziomu oferowane przez .NET - nawet jeśli te funkcje nie są często używane w praktyce, odpowiedzi na te pytania są niezwykle odkrywcze:

  • Dobre zrozumienie składników lotnych pokazuje, że dana osoba rozumie, w jaki sposób optymalizacje kompilatora zmieniają poprawność kodu, w jaki sposób wątki przechowują lokalne kopie współdzielonego stanu, które mogą być niezsynchronizowane w danym momencie, i są w minimalnym stopniu świadome niektórych złożoności wielowątkowego kodu .

  • Dobre zrozumienie słabych referencji pokazuje, że dana osoba wie o intymnych szczegółach śmieciarza i jak decyduje, kiedy zwolnić pamięć. Jasne, możesz zapytać kandydatów „jak działa śmieciarz”, ale pytanie o słabe referencje daje znacznie lepszą, bardziej przemyślaną odpowiedź.

.NET jest dość abstrakcyjnym językiem, ale programiści gwiazd prawie zawsze dobrze rozumieją CLR i szczegółowe informacje o środowisku uruchomieniowym .NET.


P: Dlaczego ktoś miałby wdrażać własną listę skrótów lub link?

Odp .: Nie sugeruję, że klasa Dictionary jest gorsza lub że ludzie powinni tworzyć własne tabele skrótów. Jest to podstawowe pytanie, które sprawdza, czy dana osoba ma minimalne zrozumienie struktur danych. Właśnie to sprawdzają te pytania: minimalne zrozumienie.

Dowiesz się o tych tabelach skrótów i połączonych listach pierwszego dnia Struktur danych 101. Jeśli ktoś nie może napisać tabeli skrótów lub listy połączonej od zera, to ma ogromną lukę w wiedzy technicznej.


P: Dlaczego te pytania są tak zorientowane na ludzi?

Odp .: Ponieważ tytuł tego wątku to „pytania, które powinien znać każdy dobry programista .NET”. Każdy programista .NET rozpoczyna swoją karierę od pisania aplikacji crud, a 90% wszystkich osób tworzących aplikacje, które zarabiają na życie, zajmuje się aplikacjami biznesowymi.

Myślę, że pytania testujące wiedzę osób na temat aplikacji biznesowych są w większości przypadków odpowiednie, chyba że szukasz programistów w bardzo specyficznych niszach, takich jak rozwój kompilatora, rozwój silnika gry, dowodzenie twierdzeń, przetwarzanie obrazów itp. .


8
Myślę, że twoja lista jest dobrym sposobem na sprawdzenie mocnych i słabych stron, ale nie jest to wiedza „podstawowa”. Jak zauważa Greg, potknęły mnie operatory zwarciowe, mimo że są one proste i często z nich korzystam: właśnie zapomniałem nazwy. Czy to mnie zdyskwalifikuje?
Mark Brittingham

33
Podobnie, nigdy nie zadeklarowałem zmiennej „Volatile” i niewiele robię z XML-em, więc nie mogłem wykonać zadania programistycznego. A jednak - jestem autorem publikacji, wygrałem duży konkurs programowy i napisałem 4 udane produkty, które zdobyły główne nagrody.
Mark Brittingham

24
Dlatego niekoniecznie nie zgadzam się z twoją listą - po prostu nie zgadzam się z twoją charakterystyką przedmiotów wiedzy jako „Podstawowymi”. Żadne z nich nie są twardymi konceptami - ale niektóre z nich są po prostu dość specyficzne i nie będą znane wielu kandydatom. Wciąż - jeszcze raz - proszę przyjąć moje przeprosiny.
Mark Brittingham

39
Połowa pozycji na tej liście to pytania dotyczące ciekawostek. To nie pomoże znaleźć dobrych ludzi, ale może denerwować niektórych z nich na tyle, aby wyjść na rozmowę.
Jason Kester

15
(Regex) Write a regular expression which removes all tags from a block of HTML.- I SMELL TROUBLE
BlueRaja - Danny Pflughoeft

135

Znalazłem te listy na Scotta Hanselman „s blogu :

Oto najważniejsze pytania z tych postów podzielone na kategorie. Zredagowałem je i ponownie zaaranżowałem. Na szczęście na większość tych pytań istnieje już dobra odpowiedź na temat przepełnienia stosu. Wystarczy podążać za linkami (zaktualizuję je jak najszybciej) .

Niezależne od platformy pytania .NET

ASP.NET


8
Wiem, że programiści wiedzą o tym wszystkim i wciąż nie widzą nic poza książką. Otwarty umysł jest bardzo ważny, poza tym nie próbuj uzyskać zbyt szczegółowych odpowiedzi, po prostu upewnij się, że rozumieją tę koncepcję.
Saif Khan

Starzeję się, Saif. Ale z drugiej strony, jeśli nie znasz szczegółów, nie będziesz w stanie poprawnie zastosować „pojęć”.
splattne

2
Niektóre pytania są naprawdę głupie, na przykład jaka jest różnica między wersją debugowania i wydania. Tak, Visual Studio wstępnie zdefiniowało niektóre konfiguracje kompilacji, ale nie jest to pytanie niezależne od platformy. Ktoś, kto kompiluje się za pomocą wiersza poleceń lub używa Mono, może nie mieć pojęcia, o czym mówisz.
lubos hasko

3
Czy potrafisz opisać koncepcje, które zwykle zajmują 2 strony lub nawet rozdział książki, w sposób wyartykułowany w sytuacji podczas rozmowy kwalifikacyjnej. Nie mogę tego zrobić bez wcześniejszego ich przesłuchania
Chris S

1
Staraj się nie prosić ludzi o zdefiniowanie terminów. Skończysz z kierunkami CS, którzy musieli zapamiętać je na testy, ale przegapić ludzi, którzy faktycznie wiedzą, jak programować. Pamiętam, jak kiedyś zapytano mnie, czym jest „deferencing”. Nie miałem pierwszej wskazówki, mimo że robiłem to wtedy 30 razy dziennie.
Jason Kester

94

To może nie być to, co chcesz usłyszeć, ale zalecałbym nie skupianie się na wąskich technologiach, ale na ogólnych umiejętnościach programowania i rozwiązywania problemów. Solidni programiści mogą szybko nauczyć się wszystkiego, co chcesz.

Ja na przykład nie jestem facetem Compact Framework, więc mogę nie zdać twojego wywiadu, jeśli pójdziesz w tym kierunku. Ale gdybym musiał go użyć, mógłbym przeprowadzić badania i wskoczyć od razu.

Książka Joela, Smart and Gets Things Done , zawiera świetne porady dotyczące zatrudniania deweloperów, a także duże, soczyste sekcje dotyczące rodzajów pytań, które należy zadać. Gorąco polecam.


Może częścią procesu rekrutacji powinien być problem w Cardspace lub coś, na co nigdy nie patrzyli !!
Jennifer,

Może, ale jest problem badań, więc myślę, że to może być niesprawiedliwe. Bardziej interesuje mnie to, jak myślą przez problemy, a może widzę, jak kodują coś abstrakcyjnego, abym mógł dowiedzieć się, czy mówią w natywny sposób, czy nie.
Brian MacKay,

Gdybym mógł wybrać około dwóch osób, które mają ogólne umiejętności programowania i rozwiązywania problemów, z powodów praktycznych MUSZĘ wybrać osobę o lepszej wiedzy i doświadczeniu .NET.
splattne

Wiedza na temat .NET z pewnością, ale jeśli chodzi o węższe technologie, myślę, że możesz iść z programistą z umiejętnościami rozwiązywania problemów.
Jennifer,

5
Tak, wszyscy musimy znać mnóstwo „wąskich technologii”. Ale dla każdego, kogo znamy, istnieje grupa, której nie znamy (zwykle dlatego, że ich nie potrzebowaliśmy). Mówię, że nie chcesz przegapić świetnego programisty, który nie zna SharePoint, ponieważ wkrótce będzie on najlepszym facetem SharePoint.
Brian MacKay

66

Myślę, że gdybym wywiadów kogoś, kto miał doświadczenie LINQ, bym ewentualnie po prostu poprosić ich, aby wyjaśnić LINQ. Jeśli potrafią wyjaśnić odroczenie wykonania, streaming, interfejsy IEnumerable / IEnumerator, foreach, bloki iteratora, drzewa wyrażeń (w każdym razie punktów bonusowych), prawdopodobnie prawdopodobnie poradzą sobie z resztą. (Trzeba przyznać, że mogą być programistami „ok”, a jeszcze nie „uzyskać” LINQ - naprawdę myślę o przypadku, w którym twierdzili, że znają wystarczającą liczbę LINQ, aby było to uczciwe pytanie.)

W przeszłości zadałem kilka pytań już wymienionych i kilka innych:

  • Różnica między typami odniesienia i wartościami
  • Przekaż przez odniesienie vs przekazanie przez wartość
  • IDisposable i finalizatory
  • Ciągi znaków, niezmienność, kodowanie znaków
  • Zmiennoprzecinkowy
  • Delegaci
  • Generics
  • Typy zerowalne

1
Tak, chciałem zobaczyć tego rodzaju odpowiedź. Dobry kandydat na przyjęcie. Czy ktoś jest lepszy?
splattne

5
@splattne: nie bądź głupi, to jest odpowiedź Jona Skeeta, więc po prostu ją zaakceptuj. To jest nieuniknione.
Steven A. Lowe

3
Właśnie miałem powiedzieć ... wt ... nie kwestionujesz Skeeta!
Saif Khan

1
To jest znacznie lepsza odpowiedź niż zaakceptowana. Pomaga ci zrozumieć, czy ktoś ma głęboką wiedzę w zakresie rzekomej wiedzy specjalistycznej, a także sonduje znajomość funkcji językowych o dość szerokiej gamie.
Mark Brittingham

1
Ta odpowiedź przewyższa „zaprojektowanie własnej Listy połączonej”, „parsowanie HTML za pomocą regexp” lub „Ile wiesz o Asemblerze, GAC itp.”, Ponieważ dotyczy narzędzi i koncepcji, które chciałbyś faktycznie używam podczas programowania. Niezbędna jest także dogłębna znajomość LINQ. Widziałem wiele przykładów na tej stronie, gdzie ludzie próbują wprowadzić własną wersję Union Distinct i Concat do kolekcji, ponieważ nie rozumieją LINQ.
Evan Plaice,

42

Jestem z facetami, którzy szukają umiejętności rozwiązywania problemów, a nie rzeczy, które można wyszukać i zapamiętać z 101 wywiadów .NET Qs i As ”.

Aby przytoczyć się jako przykład, staram się „znać” rzeczy, których muszę używać z dnia na dzień. Zazwyczaj zapominam (a później muszę ponownie szukać) rzeczy, których rzadko używam.

Gdybyś chciał porozmawiać ze mną w wywiadzie, byłoby to bardzo łatwe.

Niemniej jednak zaprojektowałem i zakodowałem znaczną część infrastruktury dla systemu, który wykorzystuje identyczne warstwy obiektów biznesowych i danych dla swoich wcieleń WinForm i ASP.NET, a nasza baza kodów jest wystarczająco solidna i nadaje się do wielokrotnego użytku, abyśmy mogli wspierać i rozwijać 20+ odmiennie skonfigurowane wersje strony internetowej, a także rosnąca liczba (obecnie 5) aplikacji WinForms ...

... z dwuosobowym zespołem programistów.

Kiedyś pracowałem w zespole jako lider technologiczny, a moja praca polegała na rekrutacji i rozmowach kwalifikacyjnych. Moim najbardziej spektakularnym błędem było zatrudnienie faceta, który wiedziałby więcej o technologii, której używamy, niż cała reszta razem wzięta, łącznie ze mną, a ja uważałem się za eksperta. Wiedział wszystko ...

... oprócz tego, jak napisać kod, który albo spełnia wymagania, albo może być zrozumiały dla każdego oprócz niego. Kiedy w końcu przekonałem premiera, by nie przedłużał umowy, każdą napisaną przez niego rzecz trzeba było przepisać.

Mądrze uporządkuj swoje wywiady ...


1
To naprawdę interesujące spostrzeżenie. Mieliśmy odwrotną sytuację: niewielka grupa programistów, którzy wiedzieli mniej niż inni, ale przekonali zarząd, że wiedzą więcej. Zaproponowali oni klasę abstrakcji danych, która moim zdaniem była niemożliwa (zostałem skrytykowany za to, że nie byłem „graczem zespołowym”).
Mark Brittingham

- kontynuowano - po 4 miesiącach „skunksowych prac” zaprezentowali zespołowi .... swoje dokumenty transferowe do innej wydziału - i ŻADNY kod. Reszta zespołu musiała zbierać części.
Mark Brittingham

1
Podsumowując: bardzo podoba mi się twoja obserwacja, że ​​konkretna znajomość konstrukcji kodujących nie jest gwarancją zdolności do tworzenia działającego oprogramowania, które spełnia potrzeby klientów.
Mark Brittingham

34

Kim jest Jon Skeet?


11
Lub lepiej: Czy jesteś Jon Skeet? ;-)
splattne

to jest właściwie dobre pytanie dla pozycji C #. Biorąc pod uwagę, że Jon Skeet jest teraz właścicielem przeszukiwania stosów / google związanych z C #. Jeśli nie wiesz, kim on jest, jesteś Jon Skeet lub nie programujesz w C #.
lubos hasko

2
Bez urazy dla Jona Skeeta - ale myślę, że Rick Strahl częściej pojawia się z odpowiedziami na problemy, które
napotykam

1
@ [Andrew Theken]: Zagram w procentach na tym ;-) Google dla „Rick Strahl” daje 38 500 odsłon, „jon skeet” daje 144 000. Ponadto Rick Strahl nie publikuje w SO AFAIK.
Steven A. Lowe

1
obaj są świetni w tym, co robią ... nasz zysk.
GR7

33

Dobre pytania, o które mi zadano

  • Jak myślisz, co jest dobrego w .NET?
  • Jak myślisz, co jest złego w .NET?

Ciekawie byłoby zobaczyć, co wymyśli kandydat, a na pewno dowiesz się sporo o tym, jak on / ona używa frameworka.


18

Zawsze sam szukałem umiejętności miękkich - nie zamierzałem używać słów. Tak dobry projekt OO, rozwój oparty na testach, dobre wielojęzyczne zaplecze językowe i ogólna ogólna inteligencja (i, jak sądzę, załatwianie spraw!).

Inteligentny programista nie powinien mieć problemów z nauczeniem się poszczególnych technologii, które powinieneś znać, nawet jeśli nigdy wcześniej na nie nie patrzyły - więc nie martwiłbym się zbytnio o konkretne pytania dotyczące WCF / Compact Framework i tym podobnych.

Chciałbym, żeby napisali kod - najlepszy sposób, aby dowiedzieć się, co wiedzą i jak działają. Każdy może zapamiętać odpowiedź na pytanie „Jaka jest różnica między typem odniesienia a typem wartości?”


2
Spot on. Zadawanie rutynowych pytań wymaga kłopotów. Firma, dla której pracuję, zadaje stare pytanie od techie, ale głównie jest to: mam te problemy, oto biała tablica, pokaż mi, jak je rozwiążesz. Przerażające, ale skuteczne.
Chris Brooks,

4
... ale jeśli nie rozwiążesz ich zgodnie z oczekiwaniami ankietera, nie powiedzie się.
gbjbaanb

1
@gbjbaanb czasami. Ale w takim przypadku i tak możesz nie chcieć tam pracować. Pamiętaj, że przeprowadzasz również wywiad z firmą. Znałem kilka firm, które nie zdały egzaminu!
Tony Ennis,

13

Szczerze?

„Co to jest .NET?”

Jeśli mogą dać ci jasną odpowiedź na temat tego, czym jest .NET, a czym nie jest, w jaki sposób jest używany, z jakich elementów składa się itp. Jeśli mogą cię przekonać, że wiedzą, co to jest. wiem to całkiem dobrze.

Faktem jest, że wiele osób tak naprawdę nie wie, czym jest .NET. Nawet ci, którzy piszą do tego programy.


11

Naprawdę brak. Prawdopodobnie istnieją bardzo proste pytania, na które najmądrzejsi ludzie na świecie nie znają odpowiedzi. Nie dlatego, że są twarde, ale po prostu dlatego, że po prostu ich nie spotkały. Powinieneś patrzeć na cały pakiet i umiejętności programisty, a nie na to, czy potrafią odpowiedzieć na dowolne pytanie.

Jeśli pytanie jest wystarczająco łatwe, aby na nie odpowiedzieć w krótkim lub dwóch zdaniach, łatwo jest po prostu powiedzieć komuś, kto nie wie. Powinieneś szukać ich zrozumienia pojęć i możliwości rozumowania, a nie ich umiejętności odpowiadania na pytania „każdy programista .NET powinien być w stanie odpowiedzieć”.


10

Poznaj różnicę między typem odniesienia a typem wartości.

Wiedz, że zdarzenia są przechowywane jako twarde odniesienia (tj. Pamiętaj, aby wyrejestrować zdarzenia lub aplikacja wyciek pamięci).

Ciągi są niezmienne.



4

Sugeruję, aby pytać o regularnie czytane blogi oraz o osobiste projekty programistyczne, nad którymi pracowali, ponieważ wykaże to chęć do nauki i pasję do programowania.


3

Oto kilka, których użyłem do filtrowania programistów ubiegających się o pracę jako programistów C #:

Jaka jest różnica między typem odniesienia a typem wartości?

Wyjaśnij interfejs IDisposable, którego wymaga konstrukcja języka C # i sposób jego implementacji.

Który wyjątek rzucilibyśmy, gdyby wartość null została przekazana jako argument do metody, która ma kontrakt, który nie zezwala na wartości null dla tego parametru?


Mój kod zwykle generuje wyjątek NullReferenceException.
Joshua

5
@Joshua, ArgumentNullException nie powiodło się.
Nicolas Dorier,

3

„Która z ASP: jakie formanty kiedykolwiek używałbyś w produkcji i dlaczego?”

Dzięki temu szybko dowiesz się, czy Twój obiekt kiedykolwiek zbudował i utrzymywał duży projekt na tyle długo, aby zostać spalonym przez DataGrids i LinkButtons, czy też nadal jest w fazie przeciągania / upuszczania „naucz się w ciągu 21 dni”.

(odpowiedź brzmi: asp: Repeater, asp: PlaceHolder, asp: Literal i asp: Content)



2

To jest trochę zmienne pytanie, i tak naprawdę nie powinno być w stanie odpowiedzieć całkowicie teraz, ale na które powinieneś być w stanie odpowiedzieć, gdy jest to właściwe:

„Co oferuje platforma .NET, aby wykonać zadanie X?”

Lub dokładniej:

„Czy środowisko .NET zawiera obiekt, który obsługuje X?”

Na przykład ostatnio spędziłem kilka godzin, opracowując obiekt zoptymalizowany do przechowywania tablicy booleanów i działania na nim, na przykład wykonując kolekcjonerskie NOT, OR, XOR, AND, ustawiając wszystkie wartości itp. To nie było t aż do momentu, gdy skończę pisać wszystkie testy jednostkowe i dostosowuję je w celu uzyskania najlepszej możliwej wydajności, zdałem sobie sprawę, że mój obiekt „BoolArray” już istnieje w środowisku .NET pod nazwą „BitArray”.

Odpowiedź na to pytanie może być trudna, ponieważ wielokrotnie najlepsza odpowiedź na temat tego, jakiego obiektu / pomocnika użyć, jest tym, którego nie znasz lub nie rozumiesz w pełni. Jak wspaniały byłby świat .NET, gdyby wszyscy wiedzieli nawet o prostym StringBuilder, podstawowym narzędziu, które może zwiększyć znaczące wydajności.


2

Sugeruję, aby niektóre pytania koncentrowały się na zrozumieniu pojęć programistycznych z wykorzystaniem dotnet podobnych

Jaka jest różnica między środowiskiem zarządzanym a niezarządzanym? GC plusy i minusy JIT plusy i minusy Jeśli potrzebujemy opracować aplikację X, czy możemy używać dotnet? Dlaczego? (zidentyfikuje to, jak widzi dotnet)

Proponuję również napisać małe metody i poprosić go, aby przepisał je z lepszą wydajnością przy użyciu lepszych klas dotnet lub standardowych metod. Napisz także niepoprawne metody (pod względem dowolnej) logiki lub cokolwiek innego i poproś go o ich poprawienie.


2

Oprócz niektórych z wcześniej wymienionych pytań jestem fanem następujących:

  • Kim jest delegat?
  • Jaka jest domena aplikacji?
  • Kiedy użyjesz słowa kluczowego blokady?
  • Czy standardowe standardowe biblioteki klas ogólnych są bezpieczne dla wątków?
  • Co to jest metoda rozszerzenia?
  • Jaka jest różnica między XmlDocument a XmlReader?
  • Jak czytasz w ustawieniach konfiguracji z pliku konfiguracyjnego aplikacji?

2

Jest to interesujące i istnieje ryzyko, że zostanie to odrzucone za głosowanie, ponieważ jestem urodzony głuchy. Zadanie takiego pytania wymagałoby większego wysiłku w osobistym przekazaniu moich myśli.

Mówiąc wprost, naprawdę nie przeczytałbym zbyt wiele typowych pytań, ponieważ paradygmat leżący u podstaw tego pytania brzmi: „ Jak dobrze potrafisz wyrazić swoje myśli i zrozumienie? ”, tego naprawdę szuka ankieter. Komunikowanie się jest zawsze moją największą słabością ze względu na to, jaki jestem, i bardzo łatwo mogę się sfrustrować.

Byłoby idealnie mieć wiedzę i być typem znającym się na rzeczy, ale niestety są pewne rzeczy, których nie wiem, ale nie bać się, jeśli tak naprawdę nie znasz odpowiedzi i przyznasz ją, zamiast blefować przez to. Gdyby osoba przeprowadzająca wywiad zadała mi pytanie takie jak jedno z powyższych, którego nie byłbym pewien, ani źle zrozumiałe / błędnie interpretowane pytanie, powiedziałbym to z góry, co może być osobiście kłopotliwe, ale nauczyłem się sobie z tym radzić.

Zdziwiłbyś się, ilu tak naprawdę gofruje i blefuje, w którym pod koniec dnia łapie ich metaforycznie mówiąc „spodnie”.

Moje 2 centy, Pozdrawiam, Tom.


2

Trochę więcej:

  1. Częściowe klasy. A jego ograniczenia?
  2. Zapieczętowane klasy
  3. Jak można dokonać lokalizacji w .NET?
  4. Łączność z bazą danych
  5. Różne pliki konfiguracyjne
  6. Delegaci a wydarzenia
  7. Niezarządzany dostęp do biblioteki dll
  8. Refleksje
  9. Klasy ogólne
  10. Najpopularniejsze w .NET 3.5
  11. Użyte ramy testowania jednostkowego.

2

Nie zadawałbym tych pytań „wiem coś z podręcznika”, ale raczej zadawałam drobne rzeczy:

  • Co robi pętla foreach w zwykłym języku C #? (Oczekiwanie, że napisze pętlę iteratora).
  • Co to jest singleton?
  • Pozwól mu przeanalizować ciąg znaków do Datetime (oczekując, że użyje TryParse zamiast try / catch)
  • Wdróż wzorce singleton, strategii i poleceń
  • Niech refaktoryzuje fragment kodu do testowania. Oczekiwanie, że wyodrębni usługi zewnętrzne z dala od Testowanego urządzenia i wdroży swój własny testowy podwójny poziom usługi (nie dostarczając ramek próbnych)

Nie są w 100% pewni, w zależności od osoby, o którą mogę ich zapytać:

  • pozwól mu chronić metodę przed zerowym wejściem (spodziewając się, że użyje wielu zwrotów w celu zmniejszenia zagnieżdżenia)
  • jak działa inicjalizator obiektu (Oczekiwanie, że on / ona napisze bezpieczne przypisanie wątku)

Zapytałbym go również, jak nauczył się swoich rzeczy i co czyta (jakie blogi, książki).


1

Trochę więcej:

Jakie są ograniczenia zbierania śmieci.

Wiedzieć o finalizatorach i IDisposable.

Bądź świadomy puli wątków i kiedy z niej korzystać.

Jeśli robisz aplikacje GUI - pamiętaj, że GUI Windows jest jednowątkowy.

Użyj foreach (widzę, że wiele osób robi MoveNext itp.)


1
Nie wiedziałem, więc sprawdziłem ograniczenia związane z odśmiecaniem .
MSpeed

1

Myślę, że nie powinny to być tylko pytania, znam kilku facetów, którzy są genialni, kiedy z nimi rozmawiasz, ale kiedy dojdą do rzeczy, są zbyt perfekcjonistami, powiedziałbym, że nie potrafią źle napisać zadania.

Byłem kiedyś na rozmowie kwalifikacyjnej i podobało mi się podejście, w którym pierwszy pracodawca dał mi kwestionariusz techniczny do wypełnienia przez 30 minut. Jeśli ktoś odniesie sukces, zostanie wezwany na 1-godzinny wywiad obejmujący pytania dotyczące osądu osobowości i poszukiwania postaci oraz żargonu technicznego.

Następnie poproszono mnie o opracowanie trzy stronicowej aplikacji internetowej w ciągu 6 godzin. Ograniczenia nałożone w aplikacji sprytnie obejmowały główny aspekt rozwoju aplikacji, taki jak mały ERD, Layerd Design, spójność interfejsu użytkownika, kontrolują określone problemy, takie jak używanie przycisków radiowych w GridView oraz pobieranie i wyświetlanie typów obrazów z DB na stronie internetowej, rozwój jednego algorytmu, bezpieczeństwo, szyfrowanie, mieszanie, reprezentacja danych i manipulacja.

Następnie następnego dnia odbyła się 30-minutowa dyskusja na temat opracowanej aplikacji obejmującej obszary wąskiego gardła w zakresie wydajności oraz ulepszenia w zakresie projektowania i stosowanych algorytmów. I 1-godzinny opcjonalny test w celu ulepszenia algorytmu opracowanego w poprzednim kroku dla określonych warunków.

Zajęło to sporo czasu, ale w ten sposób możesz upewnić się, że osoba, którą zatrudniasz, zna przynajmniej te koncepcje, które są niezbędne dla dobrego programisty.


0

Wolałbym dać mu problem i poprosić go o rozwiązanie go za pomocą funkcji .net, które znasz i dlaczego Twoim zdaniem jest to najlepsze rozwiązanie.

To złamie prawie wszystkie możliwości kandydata w zakresie umiejętności technicznych, analitycznych i rozwiązywania problemów, a także jego podejścia do rozwiązywania problemu.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.