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?


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.


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.


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.


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.


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.


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.


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.


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

7
  • Apa hubungan antara utas dan Dispatcher?
  • Apa tujuan Freezables?
  • Apa perbedaan antara properti dan Properti Ketergantungan? Mengapa menggunakan satu atau yang lain?

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


4

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


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


2

Mid atau mungkin Senior

  • Skinning / Themeing
  • Kontrol Kustom

2
  • DataTemplate vs HierarchicalDataTemplate
  • ItemsControl vs ItemsPresenter vs ContentControl vs ContentPresenter
  • Berbagai jenis Pemicu
  • Cara melakukan Animasi melalui StoryBoards


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.


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.



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.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.