Pertanyaan wawancara: Pengembang WPF [ditutup]

182

Apa yang harus diketahui oleh setiap pengembang WPF?

Level Masuk

  • Kuat .NET 2.0 Latar Belakang & mau belajar!
  • Jelaskan sifat ketergantungan?
  • Apa itu style?
  • Apa itu template?
  • Mengikat
  • Perbedaan antara kelas dasar: Visual, UIElement, FrameworkElement, Control
  • Pohon Visual vs Logikal?
  • Pemberitahuan Perubahan Properti (INotifyPropertyChange dan ObservableCollection)
  • ResourceDictionary - Ditambahkan oleh a7an
  • UserControls - Ditambahkan oleh a7an
  • perbedaan antara strategi perutean gelembung dan terowongan - ditambahkan oleh Carlo
  • Mengapa Microsoft memperkenalkan bahasa markup lain?
  • XAML

Tingkat menengah

  • Acara & Perintah yang Dirutekan
  • Konverter - Ditambahkan oleh Artur Carvalho
  • Jelaskan mesin tata letak 2 arah WPF?
  • Bagaimana cara mengimplementasikan panel?
  • Interoperabilitas (WPF / WinForms)
  • Blend / Cider - Ditambahkan oleh a7an
  • Animasi dan Storyboard
  • Penerapan ClickOnce
  • Skinning / Themeing
  • Kontrol Kustom
  • Bagaimana utas pekerja dapat memperbarui UI?
  • DataTemplate vs HierarchicalDataTemplate
  • ItemsControl vs ItemsPresenter vs ContentControl vs ContentPresenter
  • Berbagai jenis Pemicu

Senior

  • Contoh perilaku terlampir?
  • Apa itu PRISM, CAL & CAG?
  • Bagaimana utas pekerja dapat memperbarui UI?
  • WPF 3D - Ditambahkan oleh a7an
  • Perbedaan antara Silverlight 2 dan WPF
  • MVVM / MVP - Ditambahkan oleh a7an
  • Penyesuaian kinerja WPF
  • Pixel Shaders
  • Tujuan Freezables

Ada pertanyaan "trik" lain untuk ditanyakan?

Apakah Anda berharap pengembang WPF Anda tahu campuran?

rudigrobler
sumber
13
Saya tidak setuju pada "Kuat. NET 2.0 Latar Belakang" .. Sebenarnya WPF melakukan banyak hal yang berbeda dari. NET 2.0, dan mengetahui lebih sedikit sebenarnya memungkinkan Anda menguasai WPF lebih cepat ...
Arcturus
28
Bagaimana dengan beberapa tautan yang menunjuk ke masing-masing topik ini juga!
Binoj Antony
16
Saya pikir ini adalah bar yang cukup tinggi untuk "entry level". Saya berani bertaruh bahwa jika posisi pekerjaan digambarkan sebagai "level awal", Anda tidak akan mendapatkan banyak (siapa saja) orang yang dapat memenuhi standar Anda. Hal-hal yang baik untuk diketahui, tentu saja, tetapi bukan apa yang oleh kebanyakan orang disebut "entry level."
Beska
1
Saya tidak akan menyebut "tujuan freezables" sesuatu yang senior - dan jika Anda akan berbicara tentang threading di tingkat menengah, di situlah freezables berada. MVVM / MVP juga tidak terlalu kompleks atau misterius.
Eamon Nerbonne
4
Saya pikir daftar ini harus dibagi dua, satu untuk sisi desain grafis / UI dan satu untuk sisi desain teknis. Perancang UI mungkin harus tahu cara menggunakan campuran ekspresi tetapi tidak perlu tahu banyak tentang detail teknis dukungan seperti pengkodean di belakang kontrol pengguna yang dirancang. Programmer perlu tahu cara membuat kontrol yang dirancang tetapi tidak perlu menggunakan campuran ekspresi (desainer xaml di VS harus cukup sampai desainer UI dapat membuatnya cantik).
Brian Reichle

Jawaban:

41

Saya terkejut belum ada yang menyebutkan pengetahuan dasar tentang XAML. Mengetahui apa itu XAML, dan kemampuan untuk melakukan beberapa pengeditan dasar menggunakan XAML daripada alat desain grafis. Pengembang tingkat menengah harus dapat merobohkan prototipe formulir / grafik menggunakan alat seperti XAMLPad.

Mark Heath
sumber
34

Secara pribadi saya akan duduk di depan mesin pengembang standar dan meminta mereka untuk menyelesaikan beberapa tugas. Tidak ada pertanyaan, lihat saja seperti apa kode mereka setelah beberapa jam (atau lebih jika tugasnya lebih lama).

Saya memiliki tingkat kegagalan nol dalam membuat keputusan perekrutan berdasarkan hasil tes pemrograman kehidupan nyata yang sebenarnya.

Tugas itu tidak harus terlalu sulit. Saya telah menggunakan pesan sederhana dari aplikasi hari ini di masa lalu dengan pesan yang disimpan dalam database atau file XML dan antarmuka pengguna yang sederhana. Pastikan Anda meminta mereka untuk menyusunnya dengan baik (karena tugasnya cukup kecil sehingga semuanya dapat dilakukan dalam satu kelas jika mereka merasa dikerjakan).

Dari pertanyaan-pertanyaan di atas saya katakan Anda tidak bisa mendapatkan ide yang bagus apakah itu benar-benar bagus atau tidak. Kandidat potensial sebenarnya hanya bisa membaca ini dan membuat jawaban kalengan yang terdengar hebat. Semua ini menunjukkan bahwa kandidat dapat berbicara-the-talk, tetapi yang penting dalam pekerjaan itu sendiri adalah jika mereka dapat berjalan-jalan.

Colin Mackay
sumber
4
Saya sepenuhnya setuju, membuat orang melakukan sesuatu, bukan hanya membicarakannya. @Colin, setelah bantuan Anda dalam pengejaan (pertanyaan aplikasi diagnostik mandiri), saya hanya perlu mengubah Anda ke ranah 4 digit .... Ngomong-ngomong, ada jenis di sana: doen bukannya selesai. :)
raoulsson
argh, typo, i berarti, lucu :)
raoulsson
Saya sebagian setuju dengan Anda, tetapi prosesnya menghabiskan waktu, bahkan penanya oral membutuhkan lebih banyak waktu. Tentu saja, cara ini mengarah untuk memilih kandidat yang tepat.
Mohanavel
1
Jadi, bagian apa yang tidak Anda setujui?
Colin Mackay
1
Saya juga berpikir itu tidak realistis untuk mengasumsikan "setiap pengembang WPF harus tahu" pertanyaan di atas. Mereka lebih seperti poin pembicaraan umum; prasyarat tidak sulit.
Eamon Nerbonne
23

Saya meletakkan binding dan konverter di level awal, karena itu adalah cara Anda menghabiskan banyak waktu di WPF.

Robert Jeppesen
sumber
19

Daftar yang cukup bagus menurut saya.
Namun saya tidak akan mengajukan pertanyaan rumit saat wawancara. Wawancara memberikan stres yang cukup, pertanyaan tipuan dapat membingungkan bahkan orang yang sangat terampil.

aku
sumber
9
Saya setuju ... inti dari wawancara adalah untuk menilai ... untuk tidak membuat orang lain tersandung.
cplotts
Saya tidak setuju dengan ini, IMO seorang programmer harus menangani hal-hal sulit, jauh lebih buruk daripada wawancara. Jadi pertanyaan sulit adalah baik untuk melihat bagaimana programmer memecahkan masalah di bawah tekanan. Sebuah "Saya tidak tahu" yang sederhana berjalan jauh.
Artur Carvalho
15

Secara pribadi, saya meletakkan 'Bagaimana caranya utas pekerja memperbarui hak UI' di bawah entry-level. Tingkat menengah, jika Anda benar-benar perlu. Jika seorang programmer tingkat pemula dapat memahami perbedaan antara pohon logis dan pohon visual, mereka harus memahami cara memperbarui UI dari utas latar belakang.

Di organisasi saya, kami melakukan banyak pengembangan WPF tanpa Blend. Saya tidak terlalu menyukai Blend, jadi saya agak bias, tapi skill Blend harusnya bagus, saya pikir.

rampok
sumber
9

Pengembang WPF harus memiliki pemahaman yang kuat untuk memisahkan XAML dari kode-belakang, dan dapat berdiskusi panjang lebar di mana garis itu akan ditarik.

Mampu mengatur model dalam bahasa pilihannya, dan kemudian menggunakan XAML untuk menampilkan tampilan pada model itu melalui pengikatan data, templat data, templat kontrol, gaya, pemicu, konverter nilai, dan UserControls adalah tugas yang cukup mendasar untuk pertengahan -tingkat programmer. (Meskipun sejumlah kecil kelonggaran harus diberikan jika meminta seseorang untuk membuat sesuatu seperti templat kontrol "dari hati.")

Sungguh, ada banyak di WPF, dan jika bukan karena forum MSDN dan buku-buku yang mendalam tentang masalah ini, itu akan menjadi tugas yang cukup untuk "ambil saja." Untuk alasan itu, saya akan menilai ketekunan dan kemampuan untuk belajar dari orang lain sebagai persyaratan utama untuk tingkat apa pun.

Untuk programmer WPF entry-level, saya tidak akan mengharapkan pengetahuan WPF per se, tapi saya akan menuntut pengetahuan tentang prinsip-prinsip berorientasi objek, pemisahan UI dari logika bisnis, dan kenyamanan dengan model acara yang serupa. Pengalaman menata elemen UI dalam gaya yang mirip dengan WPF (dengan wadah DockPanel, dll.) Merupakan nilai tambah.

Sunting: Juga, apa yang dikatakan Colin Mackay.

exclsr
sumber
8

Bagaimana dengan pengalaman pemrograman / grafis GUI secara umum dan pengetahuan cs? Jika itu untuk pekerjaan penuh waktu, tidak masalah IMHO jika pria itu harus menghabiskan beberapa bulan pertama beberapa waktu dengan belajar WPF, jika dia (atau dia) memiliki latar belakang yang kuat.

Nils
sumber
7

Level Masuk

  • Perubahan Properti NOtification (INotifyPropertyChange dan ObservableCollection)
  • ResourceDictionary
  • UserControls

Tingkat Menengah

  • Blend / Cider
  • animasi dan storyboard
  • Penerapan ClickOnce

Senior

  • WPF 3D
  • Perbedaan antara Silverlight 2 dan WPF
  • MVVM / MVP
  • Penyesuaian kinerja WPF
  • Pixel Shaders
Alan Le
sumber
7
  • Apa hubungan antara utas dan Dispatcher?
  • Apa tujuan Freezables?
  • Apa perbedaan antara properti dan Properti Ketergantungan? Mengapa menggunakan satu atau yang lain?
rcabr
sumber
5
  • Konverter (sederhana dan multi).
  • Interoperabilitas.

Saya pikir saya lebih suka dev yang akan tahu Blend . Dia dapat berkomunikasi dengan mudah dengan desainer dan juga melakukan beberapa hal dasar desainer lebih cepat daripada hanya menulis di xaml.

Daftarnya menarik, mungkin tautan ke topik akan membantu.

Bersulang

Artur Carvalho
sumber
4

Hal lain yang sangat mendasar adalah perbedaan antara strategi routing bubble dan tunnel.

Carlo
sumber
3

Level Masuk

  • Pengetahuan dalam Desain UX
  • Pengetahuan dalam Binding Deklaratif untuk objek bisnis
  • Perintah penggunaan

Senior

  • Optimalisasi sumber daya & Penyesuaian kinerja
  • Modularitas & Skalabilitas
  • Asynchronize Programming Model
Guru
sumber
2

Menengah atau mungkin Senior: WinForms dan WPF InterOp.

Nidonocu
sumber
2

Mid atau mungkin Senior

  • Skinning / Themeing
  • Kontrol Kustom
cplotts
sumber
2
  • DataTemplate vs HierarchicalDataTemplate
  • ItemsControl vs ItemsPresenter vs ContentControl vs ContentPresenter
  • Berbagai jenis Pemicu
  • Cara melakukan Animasi melalui StoryBoards
kenwarner
sumber
1

Saya pikir siklus hidup aplikasi WPF - dari penciptaan hingga runtime harus dimasukkan dalam tingkat pertanyaan Pemula. Tanpa menyadarinya, sulit untuk percaya bahwa itu adalah dev WPF yang asli.

krishna
sumber
Saya tidak tahu apa yang Anda maksud di sini.
cplotts
Saya pikir maksudnya begini: msdn.microsoft.com/en-us/library/ms754221.aspx
HappyNomad
1

Saya akan memperluas penyebaran ClickOnce dengan WPF Deployment secara umum, karena ada baiknya mengetahui keterbatasan dan kekhasan masing-masing model (ClickOnce, XBAP, hanya browser). Menempatkannya di tingkat menengah tampaknya adil.

Ruben Steins
sumber
1

gaya menyediakan mekanisme bagi Anda untuk menerapkan tema di seluruh aplikasi dan untuk menimpa tema itu dalam contoh spesifik di mana Anda ingin. Gaya didefinisikan seperti sumber daya; pada kenyataannya, mereka didefinisikan dalam bagian yang sama dari file XAML Anda di mana sumber daya didefinisikan.

Ashwini
sumber
1

Mengetahui tentang pengujian unit dan efeknya pada bagaimana Anda menggunakan WPF adalah keterampilan dasar yang akan saya letakkan di Entry Level. Orang-orang dapat mempelajari detailnya, tetapi jika mereka belum memikirkan dasar-dasar desain perangkat lunak maka Anda memiliki masalah.

Ian Ringrose
sumber