Pytania do wywiadu: WPF Developer [zamknięte]


182

Co powinien wiedzieć każdy programista WPF?

Poziom wejścia

  • Silne tło .NET 2.0 i chęć do nauki!
  • Wyjaśnić właściwości zależności?
  • Jaki jest styl
  • Co to jest szablon?
  • Wiążący
  • Różnice między klasami podstawowymi: Visual, UIElement, FrameworkElement, Control
  • Drzewo wizualne a logiczne?
  • Powiadomienie o zmianie właściwości (INotifyPropertyChange i ObservableCollection)
  • ResourceDictionary - Dodane przez a7an
  • UserControls - Dodane przez a7an
  • różnica między strategiami routingu bąbelkowego i tunelowego - dodane przez Carlo
  • Dlaczego Microsoft wprowadził kolejny język znaczników?
  • XAML

Średni poziom

  • Przekierowane zdarzenia i polecenia
  • Konwertery - dodał Artur Carvalho
  • Wyjaśnić 2-przebiegowy układ układu WPF?
  • Jak wdrożyć panel?
  • Interoperacyjność (WPF / WinForms)
  • Mieszanka / Cydr - Dodane przez a7an
  • Animacje i scenorysy
  • Wdrożenie ClickOnce
  • Skinning / Themeing
  • Kontrola niestandardowa
  • W jaki sposób wątki robocze mogą aktualizować interfejs użytkownika?
  • DataTemplate vs HierarchicalDataTemplate
  • ItemsControl vs ItemsPresenter vs ContentControl vs ContentPresenter
  • Różne rodzaje wyzwalaczy

Senior

  • Przykład dołączonego zachowania?
  • Co to jest PRISM, CAL i CAG?
  • W jaki sposób wątki robocze mogą aktualizować interfejs użytkownika?
  • WPF 3D - Dodane przez a7an
  • Różnice między Silverlight 2 a WPF
  • MVVM / MVP - Dodane przez a7an
  • Strojenie wydajności WPF
  • Pixel Shaders
  • Cel zamrażania

Jakieś inne „podstępne” pytania?

Czy spodziewasz się, że programista WPF zna mieszankę?


13
Nie zgadzam się na „Strong .NET 2.0 tło” .. Właściwie WPF robi wiele rzeczy innych niż .NET 2.0, i wiedząc mniej rzeczywiście pozwala opanować WPF szybciej ...
Arcturus

28
Co powiesz na linki prowadzące do każdego z tych tematów!
Binoj Antony,

16
Myślę, że jest to dość wysoki pasek dla „poziomu wejścia”. Założę się, że jeśli stanowisko zostanie opisane jako „poziom podstawowy”, nie zyskasz wielu (żadnych) osób, które mogłyby spełnić Twój standard. Z pewnością warto wiedzieć, ale nie to, co większość ludzi nazywa „poziomem podstawowym”.
Beska

1
Nie nazwałbym „celem zamrażania” czymś wyższym - a jeśli zamierzasz rozmawiać o wątkach na średnim poziomie, to właśnie tam należą zamrażarki. MVVM / MVP również nie jest szczególnie skomplikowany ani tajemny.
Eamon Nerbonne

4
Myślę, że te listy powinny być podzielone na dwie części, jedną dla strony projektu graficznego / interfejsu użytkownika i drugą dla strony projektu technicznego. Projektant interfejsu powinien prawdopodobnie wiedzieć, jak używać mieszania wyrażeń, ale nie musi wiele wiedzieć o technicznych szczegółach tworzenia kopii zapasowych, takich jak kodowanie za możliwą do kontrolowania kontrolą użytkownika. Programista musi wiedzieć, jak utworzyć projektowalną kontrolkę, ale nie musi używać mieszania wyrażeń (projektant xaml w VS powinien wystarczyć, dopóki projektant interfejsu użytkownika nie sprawi, że będzie ładny).
Brian Reichle,

Odpowiedzi:


41

Dziwi mnie, że nikt jeszcze nie wspomniał o podstawowej wiedzy o XAML. Wiedza o tym, czym jest XAML i możliwość wykonania podstawowej edycji przy użyciu XAML zamiast graficznego narzędzia do projektowania. Programiści średniego poziomu powinni mieć możliwość podrzucania prototypów formularzy / grafik za pomocą narzędzia takiego jak XAMLPad.


34

Osobiście usadziłbym je przed standardową maszyną deweloperską i poprosiłbym ich o wykonanie jakiegoś zadania. Bez pytań, po prostu zobacz, jak wygląda ich kod po kilku godzinach (lub dłużej, jeśli zadanie jest dłuższe).

Miałem zerową awaryjność przy podejmowaniu decyzji o zatrudnieniu w oparciu o wyniki rzeczywistego testu programistycznego.

Zadanie nie musi być zbyt trudne. W przeszłości korzystałem z prostej wiadomości z aplikacji dnia, która była przechowywana w bazie danych lub pliku XML i z prostym interfejsem użytkownika. Upewnij się, że poprosisz ich, aby dobrze go ustrukturyzowali (ponieważ zadanie jest wystarczająco małe, aby można je było wykonać w jednej klasie, gdyby czuli się nierozerwalnie).

Z powyższych pytań powiedziałbym, że nie można zorientować się, czy są naprawdę dobre, czy nie. Potencjalny kandydat może po prostu je przeczytać i stworzyć puszkowane odpowiedzi, które brzmią świetnie. Wszystko to pokazuje, że kandydat może rozmawiać, ale ważne w samej pracy jest to, czy może chodzić.


4
Całkowicie się zgadzam, zmuszam ludzi do robienia rzeczy, a nie tylko do mówienia o tym. @Colin, po twojej pomocy w pisowni (pytania dotyczące aplikacji do autodiagnostyki) właśnie musiałem cię głosować w 4-cyfrowym królestwie ... Nawiasem mówiąc, jest tam typ: doen zamiast zrobić. :)
raoulsson,

argh, literówka,
miałem na

Częściowo się z tobą zgadzam, ale jego czas pochłania proces, nawet ustny pytający zajmuje więcej czasu. Oczywiście w ten sposób można wybrać odpowiedniego kandydata.
Mohanavel

1
Więc z jaką częścią się nie zgadzasz?
Colin Mackay,

1
Uważam również, że nierealistyczne jest zakładanie, że „każdy programista WPF powinien znać” powyższe pytania. Są bardziej jak ogólne punkty rozmowy; nie trudne warunki wstępne.
Eamon Nerbonne

23

Umieściłem bindowanie i konwertery na poziomie podstawowym, ponieważ tak spędzasz dużo czasu w WPF.


19

Moim zdaniem całkiem dobra lista.
Jednak nie zadawałbym trudnych pytań podczas wywiadu. Wywiad sam w sobie daje wystarczający stres, podstępne pytanie może dezorientować nawet wysoko wykwalifikowanych pracowników.


9
Zgadzam się ... celem wywiadu jest ocena ... nie potknięcia się o niego.
cplotts,

Nie zgadzam się z tym, IMO programista musi poradzić sobie z trudnymi sprawami, znacznie gorzej niż wywiady. Trudne jest więc pytanie, jak programista rozwiązuje problem pod wpływem stresu. Proste „nie wiem” przechodzi długą drogę.
Artur Carvalho,

15

Osobiście umieściłem „Jak wątki robocze mogą aktualizować interfejs użytkownika” bezpośrednio pod poziomem podstawowym. Średni poziom, jeśli naprawdę potrzebujesz. Jeśli programista na poziomie podstawowym może zrozumieć różnicę między drzewem logicznym a drzewem wizualnym, powinien zrozumieć, jak zaktualizować interfejs użytkownika z wątku w tle.

W mojej organizacji dużo pracujemy nad WPF bez Blend. Nie szczególnie lubię Blend, więc jestem trochę stronniczy, ale myślę, że umiejętności Blend powinny być przyjemne.


9

Deweloper WPF powinien mieć silną wiedzę na temat oddzielania XAML od kodu i być w stanie szczegółowo omówić, gdzie ta linia ma zostać narysowana.

Możliwość skonfigurowania modelu w wybranym przez nią języku, a następnie użycie XAML do wyświetlania widoków tego modelu poprzez powiązanie danych, szablony danych, szablony sterujące, style, wyzwalacze, konwertery wartości i UserControls to dość podstawowe zadanie dla średnich -poziomowy programista. (Chociaż należy przyznać niewielką swobodę, jeśli poprosimy kogoś o stworzenie czegoś takiego jak szablon kontrolny „z serca”).

Naprawdę, jest dużo w WPF, a gdyby nie fora MSDN i szczegółowe książki na ten temat, byłoby po prostu „po prostu to podnieść”. Z tego powodu oceniłbym wytrwałość i zdolność uczenia się od innych jako najwyższy wymóg na każdym poziomie.

Dla początkującego programisty WPF nie spodziewałbym się żadnej wiedzy o WPF per se, ale wymagałbym znajomości zasad obiektowych, oddzielenia interfejsu użytkownika od logiki biznesowej i wygody z podobnym modelem zdarzeń. Doświadczenie w układaniu elementów interfejsu użytkownika w stylu podobnym do WPF (z kontenerami DockPanel itp.) To plus.

Edycja: Ponadto, co powiedział Colin Mackay.


8

A co z doświadczeniem w programowaniu / grafice GUI w ogóle i znajomości cs? Jeśli jest to praca na pełny etat, nie ma znaczenia IMHO, czy facet musi spędzić kilka pierwszych miesięcy na nauce WPF, czy ma (lub ona) silne doświadczenie.


7

Poziom wejścia

  • Zmiana właściwości NOtification (INotifyPropertyChange i ObservableCollection)
  • ResourceDictionary
  • UserControls

Średni poziom

  • Mieszanka / Cydr
  • animacje i storyboardy
  • Wdrożenie ClickOnce

Senior

  • WPF 3D
  • Różnice między Silverlight 2 a WPF
  • MVVM / MVP
  • Strojenie wydajności WPF
  • Pixel Shaders

7
  • Jaki jest związek między wątkami a dyspozytorami?
  • Jaki jest cel Freezables?
  • Jaka jest różnica między właściwościami a właściwościami zależności? Po co korzystać z tego czy innego?

5
  • Konwertery (proste i wiele).
  • Interoperacyjność

Myślę, że wolałbym programistę, który zna Blend . Potrafiłby łatwo komunikować się z projektantem, a także robić podstawowe rzeczy projektanta szybciej niż pisanie w xaml.

Lista jest interesująca, być może linki do tematów mogłyby pomóc.

Twoje zdrowie


4

Kolejną naprawdę podstawową rzeczą byłaby różnica między strategiami routingu bąbelkowego i tunelowego.


3

Poziom wejścia

  • Znajomość projektowania UX
  • Wiedza na temat wiązania deklaratywnego dla obiektów biznesowych
  • Użycie polecenia

Senior

  • Optymalizacja zasobów i dostrajanie wydajności
  • Modułowość i skalowalność
  • Asynchronizuj model programowania


2

Średni, a może starszy

  • Skinning / Themeing
  • Kontrola niestandardowa

2
  • DataTemplate vs HierarchicalDataTemplate
  • ItemsControl vs ItemsPresenter vs ContentControl vs ContentPresenter
  • Różne rodzaje wyzwalaczy
  • Jak robić animacje za pomocą StoryBoards


1

Rozszerzyłbym wdrożenie ClickOnce ogólnie o WPF, ponieważ dobrze jest znać ograniczenia i osobliwości każdego modelu (ClickOnce, XBAP, tylko przeglądarka). Umieszczenie go na średnim poziomie wydaje się jednak sprawiedliwe.


1

style zapewniają mechanizm do zastosowania motywu w aplikacji i zastąpienia tego motywu w tych konkretnych przypadkach, w których chcesz. Style są zdefiniowane jak zasoby; w rzeczywistości są one zdefiniowane w tej samej sekcji pliku XAML, w której zdefiniowane są zasoby.



1

Wiedza o testowaniu jednostkowym i jego wpływie na sposób korzystania z WPF jest podstawową umiejętnością, którą postawiłbym na poziomie podstawowym. Ludzie mogą poznać szczegóły, ale jeśli nie myśleli o podstawach projektowania oprogramowania, masz problem.

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.