คำถามสัมภาษณ์: ผู้พัฒนา WPF [ปิด]


182

นักพัฒนา WPF ทุกคนควรรู้อะไร

ระดับเริ่มต้น

  • พื้นหลังที่แข็งแกร่ง. NET 2.0 และยินดีที่จะเรียนรู้!
  • อธิบายคุณสมบัติการพึ่งพา?
  • สไตล์อะไร
  • แม่แบบคืออะไร
  • ผูกพัน
  • ความแตกต่างระหว่างคลาสพื้นฐาน: Visual, UIElement, FrameworkElement, Control
  • Visual เทียบกับต้นไม้ตรรกะ?
  • การแจ้งเตือนการเปลี่ยนแปลงคุณสมบัติ (INotifyPropertyChange และ ObservableCollection)
  • ResourceDictionary - เพิ่มโดย a7an
  • UserControls - เพิ่มโดย a7an
  • ความแตกต่างระหว่างกลยุทธ์การกำหนดเส้นทางฟองและอุโมงค์ - เพิ่มโดย Carlo
  • เหตุใด Microsoft จึงแนะนำภาษามาร์กอัปอีกภาษาหนึ่ง
  • XAML

ระดับกลาง

  • เหตุการณ์และคำสั่งเส้นทาง
  • ตัวแปลง - เพิ่มโดย Artur Carvalho
  • อธิบายกลไกเลย์เอาต์แบบ 2 รอบของ WPF ได้หรือไม่?
  • วิธีการติดตั้งพาเนล
  • การทำงานร่วมกัน (WPF / WinForms)
  • Blend / Cider - เพิ่มโดย a7an
  • ภาพเคลื่อนไหวและสตอรีบอร์ด
  • ClickOnce Deployment
  • ที่น่าสนใจ / Themeing
  • การควบคุมที่กำหนดเอง
  • เธรดผู้ปฏิบัติงานสามารถอัพเดต UI ได้อย่างไร?
  • DataTemplate กับ HierarchicalDataTemplate
  • ItemsControl กับรายการ ItemsPresenter กับ ContentControl กับ ContentPresenter
  • ทริกเกอร์ประเภทต่าง ๆ

ระดับอาวุโส

  • ตัวอย่างของพฤติกรรมที่แนบมา?
  • PRISM, CAL & CAG คืออะไร
  • เธรดผู้ปฏิบัติงานสามารถอัพเดต UI ได้อย่างไร?
  • WPF 3D - เพิ่มโดย a7an
  • ความแตกต่างระหว่าง Silverlight 2 และ WPF
  • MVVM / MVP - เพิ่มโดย a7an
  • การปรับแต่งประสิทธิภาพ WPF
  • Pixel Shaders
  • วัตถุประสงค์ของ Freezables

คำถาม"หลอกลวง"อื่น ๆ ที่จะถาม?

คุณคาดหวังว่านักพัฒนา WPF ของคุณจะรู้ว่าการผสมผสาน?


13
ฉันไม่เห็นด้วยกับ "Strong. NET Background 2.0" .. จริง ๆ แล้ว WPF ทำสิ่งต่าง ๆ มากมายนอกเหนือจาก. NET 2.0 และการรู้น้อยลงจะช่วยให้คุณควบคุม WPF ได้เร็วขึ้นจริงๆ ...
Arcturus

28
ลิงก์เกี่ยวกับการชี้ไปที่แต่ละหัวข้อเหล่านี้เช่นกัน!
Binoj Antony

16
ฉันคิดว่านี่เป็นแถบที่ค่อนข้างสูงสำหรับ "ระดับรายการ" ฉันจะเดิมพันว่าหากตำแหน่งงานมีการอธิบายว่า "ระดับรายการ" คุณจะไม่ได้รับคนจำนวนมากที่สามารถทำได้ตามมาตรฐานของคุณ สิ่งที่ดีที่ควรรู้แน่นอน แต่ไม่ใช่สิ่งที่คนส่วนใหญ่เรียกว่า "ระดับรายการ"
Beska

1
ฉันจะไม่เรียก "วัตถุประสงค์ของ freezables" สิ่งที่อาวุโส - และถ้าคุณจะพูดคุยเกี่ยวกับการทำเกลียวในระดับกลางนั่นคือที่ freezables MVVM / MVP นั้นไม่ซับซ้อนโดยเฉพาะอย่างยิ่งหรืออาร์เคน
Eamon Nerbonne

4
ฉันคิดว่ารายการเหล่านี้ควรแบ่งออกเป็นสองรายการสำหรับด้านการออกแบบกราฟิก / UI และอีกรายการสำหรับด้านการออกแบบทางเทคนิค ผู้ออกแบบ UI น่าจะรู้วิธีใช้การผสมผสานของนิพจน์ แต่ไม่จำเป็นต้องรู้รายละเอียดด้านเทคนิคการสำรองข้อมูลมากนักเช่นการเข้ารหัสที่อยู่เบื้องหลังการควบคุมผู้ใช้ที่ออกแบบ โปรแกรมเมอร์จำเป็นต้องรู้วิธีการสร้างตัวควบคุมที่ออกแบบได้ แต่ไม่จำเป็นต้องใช้การผสมผสานนิพจน์ (ตัวออกแบบ xaml ใน VS ควรเพียงพอจนกระทั่งตัวออกแบบ UI สามารถทำให้สวยได้)
Brian Reichle

คำตอบ:


41

ฉันประหลาดใจที่ไม่มีใครพูดถึงความรู้พื้นฐานของ XAML เลย รู้ว่า XAML คืออะไรและความสามารถในการแก้ไขพื้นฐานบางอย่างโดยใช้ XAML ไม่ใช่เครื่องมือออกแบบกราฟิก นักพัฒนาระดับกลางควรสามารถสร้างต้นแบบ / กราฟิกต้นแบบโดยใช้เครื่องมือเช่น XAMLPad


34

โดยส่วนตัวฉันจะนั่งลงต่อหน้าผู้พัฒนาเครื่องสร้างมาตรฐานและขอให้พวกเขาทำภารกิจให้เสร็จ ไม่มีคำถามแค่ดูว่ารหัสของพวกเขาเป็นอย่างไรหลังจากผ่านไปสองสามชั่วโมง (หรือมากกว่านั้นถ้างานนั้นยาวกว่า)

ฉันมีอัตราความล้มเหลวเป็นศูนย์ในการทำ descision การจ้างงานตามผลของการทดสอบการเขียนโปรแกรมในชีวิตจริง

งานไม่จำเป็นต้องยากเกินไป ฉันเคยใช้ข้อความง่ายๆของแอปพลิเคชั่นวันในอดีตกับข้อความที่ถูกเก็บไว้ในฐานข้อมูลหรือไฟล์ XML และส่วนต่อประสานผู้ใช้ที่เรียบง่าย ตรวจสอบให้แน่ใจว่าคุณขอให้พวกเขาจัดโครงสร้างให้ดี (เนื่องจากงานมีขนาดเล็กพอที่จะทำได้ในชั้นเดียวถ้าพวกเขารู้สึกว่าเอียง)

จากคำถามข้างต้นฉันจะบอกว่าคุณไม่สามารถรับความคิดที่ดีว่าเป็นคำถามที่ดีหรือไม่ ผู้ที่อาจเป็นเทียนจริง ๆ สามารถอ่านและสร้างคำตอบกระป๋องที่ให้เสียงที่ยอดเยี่ยม แสดงทั้งหมดนี้คือผู้สมัครสามารถพูดคุย - พูดคุย แต่สิ่งที่สำคัญในงานของตัวเองคือถ้าพวกเขาสามารถเดิน - เดิน - เดิน


4
ฉันเห็นด้วยอย่างยิ่งทำให้ผู้คนทำสิ่งต่าง ๆ ไม่ใช่แค่พูดถึงเรื่องนี้ @ Colin หลังจากที่คุณช่วยสะกดคำ (คำถามแอพวินิจฉัยตัวเอง) ฉันต้อง upvote คุณถึงขอบเขต 4 หลัก .... โดยวิธีการที่มีประเภท: doen แทนที่จะทำ :)
raoulsson

โอ๊ะ, typo ฉันหมาย, ตลก :)
raoulsson

ฉันเห็นด้วยกับคุณบางส่วน แต่ใช้เวลาในการดำเนินการแม้แต่ผู้ถามด้วยปากก็ใช้เวลามากกว่านี้ แน่นอนวิธีนี้นำไปสู่การเลือกผู้สมัครที่เหมาะสม
Mohanavel

1
ดังนั้นส่วนไหนที่คุณไม่เห็นด้วย?
โคลินแม็คเคย์

1
ฉันยังคิดว่ามันไม่สมจริงที่จะสมมติว่า "นักพัฒนา WPF ทุกคนควรรู้" คำถามข้างต้น พวกเขาเป็นเหมือนจุดพูดคุยทั่วไป สิ่งที่จำเป็นต้องมีไม่ยาก
Eamon Nerbonne

23

ฉันจะวางการเชื่อมโยงและผู้แปลงที่ระดับรายการเนื่องจากเป็นวิธีที่คุณใช้เวลามากใน WPF


19

รายการที่ดีงามในความคิดของฉัน
อย่างไรก็ตามฉันจะไม่ถามคำถามยุ่งยากในการสัมภาษณ์ การสัมภาษณ์ให้ความเครียดพอตัวคำถามเคล็ดลับสามารถสร้างความสับสนแม้แต่คนที่มีทักษะสูง


9
ฉันเห็นด้วย ... ประเด็นของการสัมภาษณ์คือการประเมิน ... ไม่ให้ไปพบเพื่อน
cplotts

ฉันไม่เห็นด้วยกับสิ่งนี้ IMO โปรแกรมเมอร์ต้องจัดการกับสิ่งที่ยากยิ่งกว่าการสัมภาษณ์ ดังนั้นคำถามที่ยุ่งยากก็คือการดูว่าโปรแกรมเมอร์แก้ปัญหาภายใต้ความเครียดได้อย่างไร "ฉันไม่รู้" ง่าย ๆ ไปไกล
Artur Carvalho

15

โดยส่วนตัวแล้วฉันจะใส่ 'วิธีผู้ปฏิบัติงานสามารถอัปเดต UI' ได้อย่างไรภายใต้รายการระดับ ระดับกลางถ้าคุณต้องการจริงๆ หากโปรแกรมเมอร์ระดับเริ่มต้นสามารถเข้าใจถึงความแตกต่างระหว่างทรีแบบลอจิคัลกับทรีแบบวิชวลพวกเขาควรเข้าใจวิธีการอัพเดต UI จากเธรดพื้นหลัง

ที่องค์กรของฉันเราทำการพัฒนา WPF โดยไม่ใช้ Blend ฉันไม่ชอบ Blend เป็นพิเศษดังนั้นฉันจึงค่อนข้างลำเอียง แต่ทักษะการผสมผสานควรเป็นสิ่งที่ดีสำหรับฉัน


9

ผู้พัฒนา WPF ควรมีความเข้าใจอย่างแน่นหนาในการแยก XAML ออกจากโค้ดที่อยู่เบื้องหลังและสามารถพูดคุยได้ในระยะเวลาที่ต้องลากเส้นนั้น

ความสามารถในการตั้งค่ารูปแบบในภาษาที่เธอเลือกจากนั้นใช้ XAML เพื่อแสดงมุมมองในรูปแบบดังกล่าวผ่านการเชื่อมโยงข้อมูลเทมเพลตข้อมูลการควบคุมเทมเพลตสไตล์ทริกเกอร์ตัวแปลงค่าและ UserControls เป็นงานพื้นฐานที่ค่อนข้างดีสำหรับกลาง โปรแกรมเมอร์ระดับ (แม้ว่าจะต้องมีการเพิ่มระยะทางเล็กน้อยหากขอให้บางคนสร้างบางอย่างเช่นเทมเพลตควบคุม "จากใจ")

จริงๆแล้วมีWPF อยู่มากมายและถ้ามันไม่ได้มาจากฟอรัม MSDN และหนังสือเชิงลึกเกี่ยวกับเรื่องนี้มันก็ค่อนข้างจะเป็นหน้าที่ของ "เพียงแค่หยิบมันขึ้นมา" ด้วยเหตุนี้ฉันจะให้คะแนนความเพียรและความสามารถในการเรียนรู้จากผู้อื่นว่าเป็นข้อกำหนดขั้นสูงสุดสำหรับทุกระดับ

สำหรับโปรแกรมเมอร์ WPF ระดับเริ่มต้นฉันจะไม่คาดหวังความรู้ใด ๆ เกี่ยวกับ WPF ต่อ se แต่ฉันต้องการความรู้เกี่ยวกับหลักการเชิงวัตถุการแยก UI จากตรรกะทางธุรกิจและความสะดวกสบายด้วยรูปแบบเหตุการณ์ที่คล้ายกัน ประสบการณ์การจัดวางองค์ประกอบ UI ในสไตล์ที่คล้ายกับ WPF (พร้อมคอนเทนเนอร์ DockPanel และอื่น ๆ ) เป็นข้อดี

แก้ไข: นอกจากนี้สิ่งที่โคลินแมคเคย์พูด


8

ประสบการณ์การเขียนโปรแกรม / กราฟิก GUI โดยทั่วไปและความรู้ cs คืออะไร ถ้าเป็นงานเต็มเวลาก็ไม่สำคัญว่า IMHO จะต้องใช้เวลาสองสามเดือนแรกกับการเรียนรู้ WPF ถ้าเขา (หรือเธอ) มีภูมิหลังที่แข็งแกร่ง


7

ระดับเริ่มต้น

  • การแจ้งเตือนการเปลี่ยนแปลงคุณสมบัติ (INotifyPropertyChange และ ObservableCollection)
  • ResourceDictionary
  • UserControls

ระดับกลาง

  • ผสมผสาน / ไซเดอร์
  • ภาพเคลื่อนไหวและสตอรีบอร์ด
  • ClickOnce Deployment

ระดับอาวุโส

  • WPF 3D
  • ความแตกต่างระหว่าง Silverlight 2 และ WPF
  • MVVM / MVP
  • การปรับแต่งประสิทธิภาพ WPF
  • Pixel Shaders

7
  • ความสัมพันธ์ระหว่างเธรดและโปรแกรมเลือกจ่ายงานคืออะไร
  • Freezables มีวัตถุประสงค์อะไร?
  • ความแตกต่างระหว่างคุณสมบัติและคุณสมบัติการพึ่งพาคืออะไร? เหตุใดจึงต้องใช้อย่างใดอย่างหนึ่ง

5
  • ตัวแปลง (แบบง่ายและแบบหลายจุด)
  • การทำงานร่วมกัน

ฉันคิดว่าฉันต้องการนักพัฒนาที่จะรู้จักBlendเบลนด์เขา / เธอสามารถสื่อสารกับนักออกแบบได้อย่างง่ายดายและยังสามารถทำสิ่งพื้นฐานของนักออกแบบได้เร็วกว่าการเขียนเป็น xaml

รายการน่าสนใจบางทีลิงก์ไปยังหัวข้อจะช่วย

ไชโย


4

อีกสิ่งที่พื้นฐานจริงๆคือความแตกต่างระหว่างกลยุทธ์การกำหนดเส้นทางฟองและอุโมงค์


3

ระดับเริ่มต้น

  • มีความรู้ในการออกแบบ UX
  • ความรู้ในการประกาศผูกพันสำหรับวัตถุทางธุรกิจ
  • การใช้คำสั่ง

ระดับอาวุโส

  • การปรับแต่งทรัพยากรและการปรับแต่งประสิทธิภาพ
  • Modularity & Scalability
  • ปรับรูปแบบการเขียนโปรแกรมให้ตรงกัน


2

กลางหรืออาจอาวุโส

  • ที่น่าสนใจ / Themeing
  • การควบคุมที่กำหนดเอง

2
  • DataTemplate กับ HierarchicalDataTemplate
  • ItemsControl กับรายการ ItemsPresenter กับ ContentControl กับ ContentPresenter
  • ทริกเกอร์ประเภทต่าง ๆ
  • วิธีการทำแอนิเมชั่นผ่านกระดานเรื่องราว

1

ฉันคิดว่าวงจรชีวิตของแอปพลิเคชั่น WPF - ตั้งแต่การสร้างไปจนถึงการรันไทม์ควรรวมอยู่ในคำถามระดับเริ่มต้น โดยไม่ทราบว่ามันยากที่จะเชื่อว่าเป็นจริง dev WPF


ฉันไม่รู้ว่าคุณหมายถึงอะไรที่นี่
cplotts

ฉันคิดว่าเขาหมายถึงสิ่งนี้: msdn.microsoft.com/en-us/library/ms754221.aspx
HappyNomad

1

ฉันจะขยายการปรับใช้ ClickOnce ด้วย WPF Deployment โดยทั่วไปเนื่องจากเป็นการดีที่จะทราบข้อ จำกัด และลักษณะเฉพาะของแต่ละรุ่น (ClickOnce, XBAP เบราว์เซอร์เท่านั้น) วางไว้ที่ระดับกลางดูเหมือนว่ายุติธรรม


1

สไตล์ให้กลไกสำหรับคุณที่จะใช้ชุดรูปแบบทั่วทั้งแอปพลิเคชันและเพื่อแทนที่ธีมนั้นในอินสแตนซ์เฉพาะเหล่านั้นที่คุณต้องการ กำหนดลักษณะเช่นทรัพยากร ในความเป็นจริงพวกเขาจะถูกกำหนดภายในส่วนเดียวกันของไฟล์ XAML ของคุณซึ่งมีการกำหนดทรัพยากร



1

รู้เกี่ยวกับการทดสอบหน่วยและผลกระทบที่มีต่อวิธีการใช้ WPF เป็นทักษะพื้นฐานที่ฉันจะใส่ในระดับรายการ ผู้คนสามารถเรียนรู้รายละเอียด แต่ถ้าพวกเขาไม่ได้คิดเกี่ยวกับพื้นฐานของการออกแบบซอฟต์แวร์แสดงว่าคุณมีปัญหา

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.