ฉันจะออกแบบระบบโดยพลการในการสัมภาษณ์ได้อย่างไร [ปิด]


36

คำถามทั่วไปในการสัมภาษณ์ทางเทคนิคคือการออกแบบระบบเฉพาะซึ่งโดยปกติจะเป็นผลิตภัณฑ์ที่มีอยู่ของ บริษัท ตัวอย่างเช่น "ออกแบบ Google เอกสาร"

คำตอบที่คาดหวังสำหรับคำถามดังกล่าวคืออะไร? ฉันหมายถึงระบบดังกล่าวมีการออกแบบที่ซับซ้อนซึ่งอยู่นอกเหนือขอบเขตของการสัมภาษณ์ใด ๆ ผู้สัมภาษณ์คาดหวังอะไรในช่วงเวลาสั้น ๆ


4
+1 เพื่อนของฉันเพิ่งถูกถามเมื่อวันก่อน ฉันพูดในสิ่งเดียวกัน ฉันพยายามถามคำถามสัมภาษณ์ปลายเปิด ถามผู้สัมภาษณ์เกี่ยวกับโครงการและวิธีการออกแบบของพวกเขา วิธีนี้พวกเขาสามารถบอกฉันเกี่ยวกับสิ่งที่พวกเขารู้และทำไปแล้ว แทนที่จะสะดุดกับการออกแบบกระดานไวท์บอร์ดที่สงสัยว่าจะเริ่มต้นที่ความต้องการหรือทำข้อสันนิษฐานเพราะช่วงเวลาที่ชัดเจน ...
P.Brian.Mackey

6
หากเป็นผลิตภัณฑ์ที่มีอยู่ฉันจะยิงกลับมาด้วย "คุณพบอะไรที่บกพร่องในการออกแบบปัจจุบันของคุณ?"
Blrfl

5
"ดี .. ขั้นตอนที่ 1 จะติดต่อทนายความเพื่อดูว่าเราละเมิดเครื่องหมายการค้าหรือลิขสิทธิ์ใด ๆ หรือไม่"
Steven Evers

12
"ใจถ้าฉันเห็นเอกสารข้อกำหนด?"
Joel Etherton

4
"ไม่เคยใช้มันคุณสมบัติหลัก ๆ ของมันคืออะไร"
Steven A. Lowe

คำตอบ:


22

เข้าใจว่าสมองของคุณมองปัญหานี้อย่างไร ต่อไปนี้เป็นจุดเริ่มต้นบางประการที่ฉันสามารถดูได้ว่าจะลองใช้การสนทนานี้ได้อย่างไร:

  • จากบนลงล่าง - มองลงมาจากระดับสูงมากสร้างการออกแบบและออกแบบเนื้อให้ดีขึ้นเนื่องจากส่วนประกอบต่าง ๆ ได้ถูกสร้างขึ้นมาและนี่คือส่วนประกอบที่ผมเห็น

  • จากล่างขึ้นบน - มองจากพื้นดินขึ้นไปนี่คือบิตและชิ้นเดียวที่สามารถสร้างเพื่อพยายามรวมเข้าด้วยกัน ....

  • การชี้แจงความต้องการ - ถามคำถามเกี่ยวกับขนาดขนาดงบประมาณและทีมงานที่คาดการณ์ไว้สำหรับการออกแบบนี้ คุณสามารถลองใช้รหัสบุคคลเป็นโปรแกรมประมวลผลคำที่ง่ายมากหรือคุณอาจวางแผนที่จะใช้เงินหลายร้อยล้านดอลลาร์เพื่อสร้างระบบการจัดการเอกสารที่ดีที่สุดที่คุณเชื่อว่าเป็นวิธีที่คุณใช้ Google Doc นอกจากนี้ที่นี่ยังมีความสามารถในการถามบางสิ่งเช่น "คุณหมายถึงอะไรโดย Google Doc? คุณต้องการทำซ้ำฟังก์ชันการทำงานมากแค่ไหน" คำถามเช่นกัน

กุญแจสำคัญคือคุณสามารถสื่อสารความคิดและแนวทางในการแก้ปัญหาแบบนี้ได้ดีเพียงใดเนื่องจากคุณอาจได้รับแนวทางผู้ใช้ที่คุณถามว่า "Psst คุณสามารถทำสิ่งนี้ได้ใน 2 สัปดาห์หรือไม่" ที่อาจเกิดขึ้นจริง ดังนั้นวิธีการที่คุณจะให้คำตอบที่มีความสำคัญมากกว่าสิ่งที่เป็นคำตอบ


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

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


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

2
+1 ถ้าฉันทำได้: "กุญแจสำคัญคือคุณสื่อสารความคิดของคุณได้ดีแค่ไหน" ... น่าเสียดายที่ฉันเชื่อว่าผู้สัมภาษณ์และผู้สมัครส่วนใหญ่มีความบกพร่องในด้านนี้
Anon

2
"เป็นการดีกว่าที่จะถามผู้สัมภาษณ์เกี่ยวกับโครงการที่พวกเขาคุ้นเคยวิธีนี้คุณจะเห็นว่าจิตใจของพวกเขาทำงานอย่างไรในระหว่างกระบวนการทำงานจริงของพวกเขา" ที่จริงทั้งหมดที่จะทำคือทดสอบการระลึกถึงงานออกแบบที่พวกเขาได้ทำไปแล้ว ผู้สัมภาษณ์ส่วนใหญ่มองว่าพวกเขาจะโจมตีปัญหาใหม่ ๆ ได้อย่างไร
DJClayworth

16

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

  • รวบรวมข้อกำหนดเพื่อตอบคำถาม (เช่นขอบเขต)
  • แบ่งปัญหาออกเป็นส่วนที่จัดการได้มากขึ้น อาจระบุอินเทอร์เฟซหรือวัตถุที่อาจจำเป็นหรือแบ่งตรรกะเป็น front-end, back-end, DB และอื่น ๆ
  • แสดงให้เห็นถึงความคุ้นเคยกับโครงสร้างและแนวคิดที่อยู่เบื้องหลังระบบประเภทนั้นเช่นเว็บแอปในกรณีของ Google เอกสาร
  • แสดงสิ่งที่คุณมักจะมุ่งเน้นเมื่อนำเสนอด้วยปัญหาการออกแบบ (การออกแบบวัตถุตาราง SQL รูปแบบการออกแบบ?)
  • แสดงให้เจ้านายเห็นตัวอย่างว่ามันจะเป็นอย่างไรในการพัฒนาระบบใหม่กับคุณที่ซึ่งเจ้านายเดินเข้ามาพร้อมสเป็คแล้วบอกว่า "จะสร้างอะไรได้บ้าง?"

คำถามนี้เป็นเพียงรุ่นที่สูงกว่าของ "อธิบายลำดับชั้นวัตถุที่คุณจะใช้สำหรับเรื่องนี้.." "อธิบายอินเทอร์เฟซที่คุณต้องการออกแบบสำหรับสิ่งนี้ ... " "ออกแบบชุดตารางฐานข้อมูลเชิงสัมพันธ์สำหรับข้อมูลนี้..." และอื่น ๆ ที่จะมอบให้กับผู้พัฒนาระดับกลางถึงระดับกลาง ในผู้พัฒนาระดับล่างผู้สัมภาษณ์อาจประเมินศักยภาพระยะยาวของบุคคลเพื่อการเติบโตใน บริษัท หรือเพียงแค่เห็นสิ่งที่พวกเขาทำเมื่อเผชิญกับปัญหาใหญ่ที่อาจทำให้ท่วมท้น


2
ดังนั้นคำตอบที่คาดหวังสำหรับคำถามคือไดอะแกรม UML บางอย่างทำให้ง่ายขึ้นอย่างน้อย?
Shamim Hafiz

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

11

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

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

อีกครั้งประเด็นก็คือไม่ต้องแก้ปัญหาเหล่านั้น แต่เพื่อระบุพวกเขาพูดคุยกับพวกเขาระดมสมองสักเล็กน้อยเกี่ยวกับวิธีการจัดการกับพวกเขา ฯลฯ


9

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

เท่าที่ฉันคาดหวังคำตอบแบบใดก็ตามยกตัวอย่างเช่นการออกแบบระบบเพื่อดาวน์โหลดเฟิร์มแวร์ใหม่จากเซิร์ฟเวอร์ผ่านการ์ดฝังตัว 20 อันในสำนักงานกลางเพื่ออัพเกรดกล่องรับสัญญาณ 5,000 ชุดในสนามพร้อมกัน สมมติว่ามีความจุสำรองเพียงเล็กน้อยบนลิงก์ระหว่างเซิร์ฟเวอร์และการ์ดบรรทัด

คำตอบที่ไม่ดี:

อืมฉันอาจจะใช้อีเธอร์เน็ตหรืออะไรทำนองนั้น

คำตอบที่ดี:

เราพูดถึงภาพขนาดใหญ่แค่ไหน? [ประมาณ 7 MB.] คุณต้องการให้แน่ใจว่าบริการจะไม่ได้รับผลกระทบระหว่างการดาวน์โหลด คุณต้องการแฟลชเสริมหรือ RAM เพื่อจัดเก็บภาพสองภาพในคราวเดียว คุณอาจต้องการที่จะแคชภาพบนการ์ดบรรทัดของคุณเพื่อหลีกเลี่ยงการดาวน์โหลดภาพเดียวกันซ้ำแล้วซ้ำอีกจากเซิร์ฟเวอร์ การ์ดแบบฝังของคุณอาจมีซีพียูที่ จำกัด ดังนั้นคุณอาจจำเป็นต้องจัดลำดับการดาวน์โหลดเพื่อให้มีความจุเพียงพอสำหรับการให้บริการ คุณต้องการวิธีการตรวจสอบภาพที่ดีและถอยกลับไปเป็นเวอร์ชั่นเก่าถ้ามันไม่ทำงาน คุณต้องลองใหม่สองสามครั้งแล้วรายงานข้อผิดพลาดกับมนุษย์หากการอัพเกรดล้มเหลว หากคุณมีกล่องเซ็ตท็อปยี่ห้อต่าง ๆ คุณต้องมีวิธีในการระบุรูปภาพที่คุณต้องการส่ง

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


1
คุณทำงานที่ไหนและต้องการพนักงานใหม่ : D
Maggie

1
ในขณะที่ตัวอย่างทั้งหมดสำหรับสิ่งที่คุณเรียกว่า "คำตอบที่ดี" อาจเกี่ยวข้อง คำถามคือ "ออกแบบระบบที่ .... " พิจารณาว่านี่เป็นสถานการณ์การสัมภาษณ์ดังนั้นใครจะคาดหวังว่าจะตอบได้เพียง 5 ถึง 10 นาทีเท่านั้นสิ่งที่คุณระบุส่วนใหญ่ดูเหมือนจะอยู่ในวัชพืชสำหรับวิธีการสัมภาษณ์ คำตอบที่ดีในคำตอบที่ดีของคุณอยู่ที่ไหน เมื่อบุคคลนั้นมีวิธีแก้ปัญหา "สุขสันต์วัน" พวกเขาก็สามารถเริ่มพิจารณา "what-ifs" ที่คุณอ้างถึงใน "คำตอบที่ดี" ของคุณ แต่ตอนนั้นฉันคิดว่าเวลาหมดแล้ว
Dunk

5

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

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

พิจารณาปัญหาของ Google เอกสาร:

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

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

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

t-


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

2

ฉันสงสัยว่าสิ่งที่ผู้สัมภาษณ์ต้องการได้ยินคือ:

Google Doc เป็นเว็บอินเตอร์เฟสสำหรับโปรแกรมประมวลผลคำ พิมพ์เอกสารผู้ใช้และจัดเก็บและผู้ใช้สามารถเรียกคืนได้ในคอมพิวเตอร์เครื่องเดียวกันหรือเครื่องอื่น

คุณต้องการหารือเรื่องอะไรเพิ่มเติม

จากนั้นลูกบอลอยู่ในศาลของผู้สัมภาษณ์ หากเธอต้องการรายละเอียดเพิ่มเติมเธอสามารถถามได้ สิ่งที่ผู้สัมภาษณ์กำลังมองหาคือคุณสามารถดูปัญหาหรือผลิตภัณฑ์และแยกการออกแบบได้หรือไม่?


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

-1 @Gilbert Le Blanc - เวลา "ทางลาด" ที่กำหนดโดยกฎหมายของ Brook ใน The Mythical Man Month ทำให้คำถามนี้โง่ที่สุด หากเรารู้ว่าใช้เวลาประมาณ 6 เดือนในการเรียนรู้เพื่อเพิ่มมูลค่าให้กับโครงการซอฟต์แวร์สิ่งที่สามารถคาดหวังได้ว่า "การสกัดการออกแบบ" ในเวลาเพียง 6 ชั่วโมง? en.wikipedia.org/wiki/Brooks%27s_law
P.Brian.Mackey

1
@Shamim Hafiz: ตามคำถามและความคิดเห็นของคุณฉันจะบอกว่าคำถามนี้ไม่เป็นที่นิยมเพราะคุณและคนอื่น ๆ มีช่วงเวลาที่ยากลำบากในการ จำกัด ขอบเขตของคำถาม คำตอบของ JB King นั้นสมบูรณ์กว่าของฉันมาก สัญลักษณ์แสดงหัวข้อของเขาเป็นวิธีที่ถูกต้องทั้งหมดในการ จำกัด ขอบเขตของคำถามแม้ว่าฉันเป็นบางส่วนจากบนลงล่างก่อนจากนั้นจึงต้องการการชี้แจง ในภาษาอังกฤษที่ดีกว่าก่อนอื่นให้ทำการเปรียบเทียบแล้วเน้นความแตกต่าง
Gilbert Le Blanc

4
ถ้าฉันสัมภาษณ์ฉันจะไม่พอใจกับคำตอบนั้น คำตอบที่นี่เพียงแค่บอกฉันว่า Google เอกสารคืออะไรสิ่งที่ฉันรู้อยู่แล้ว
whatsisname

1
@ ไม่มีชื่อ - ฉันคิดว่าผู้สัมภาษณ์ต้องการทราบคำตอบของคำถาม (หรือเบสบอล) ในบริบทของการสัมภาษณ์
Morgan Herlocker

2

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

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

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


1

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


1

สิ่งสำคัญคือคุณจะแก้ปัญหาอย่างไรกับข้อดีของการแก้ปัญหาที่คุณให้และถ้าคุณสามารถรับมือกับปัญหาภาพใหญ่ได้

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


0

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

ซึ่งหมายถึงการอ่านบล็อกบทความhttp://www.infoq.com , Hacker News เป็นต้นแม้แต่ฮาร์ดแวร์ที่มีอยู่ใน Coding Horror

แม้ว่าข้อเท็จจริงที่ว่าคุณจะลืมสิ่งที่คุณได้อ่านส่วนใหญ่ (เนื่องจากข้อมูลเหล่านั้นไม่ได้เชื่อมต่อกับงานของคุณเป็นการส่วนตัว) แต่อาจมีเกร็ดเล็กเกร็ดน้อยบางอย่างซึ่งเป็น "เมล็ดแห่งจินตนาการ" และเศษเล็กเศษน้อยของเมล็ดเหล่านั้น จะงอกเมื่อคุณพบปัญหาที่คล้ายกันในอนาคตไกลอนาคต

ดังนั้นผู้สัมภาษณ์อาจสนใจอ่านนิสัยของคุณ (เป็นส่วนหนึ่งของงานอดิเรกของคุณ) และดูว่าคุณมีนิสัยปกติในการรวบรวมเมล็ดพันธุ์ความคิดจากที่สุ่ม


เอ่อฉันไม่รู้เกี่ยวกับคุณ แต่ฉันมองนักพัฒนาที่ชื่นชอบการออกแบบบนพื้นฐานของข้อเท็จจริงและประสบการณ์มากกว่าสิ่งที่พวกเขาอ่านบนบล็อกหนึ่งครั้ง
Aaronaught

@Anaught: แน่นอนประสบการณ์จริงจากโครงการที่คล้ายกันนั้นมีค่ามากกว่าความคิดที่ได้ยิน แต่เมื่อคุณได้รับมอบหมายให้ทำโครงการในพื้นที่ที่คุณไม่มีประสบการณ์คุณเพียงแค่ยอมแพ้โอกาสหรือไม่? (สมมติว่าคุณแจ้งให้นายจ้างทราบว่าคุณไม่มีประสบการณ์ที่เกี่ยวข้องและนายจ้างไม่เป็นไร) ถ้าคุณตัดสินใจที่จะรับมันคุณจะเริ่มอย่างไร? คุณเริ่มต้นด้วยบทเรียนที่ได้เรียนรู้จากคนอื่น บริษัท อื่น ๆ คุณไม่สามารถเริ่มจากที่ใดก็ได้ บางทีคุณอาจถูก downvoting ฉันเพราะ OP ดูเหมือนว่าจะสัมภาษณ์ตำแหน่งระดับสูง แต่
rwong

(ต่อ) โปรดอย่าประมาทความสำคัญของบทเรียนที่เรียนรู้จากแหล่งอื่น

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

0

จุดที่อยู่เบื้องหลังการถามคำถามแบบนี้คือการได้รับความเข้าใจในใจของคุณ คำถามทั่วไปที่ฉันใช้คือขอให้โปรแกรมเมอร์ออกแบบระบบที่สามารถจำลอง PacMan ได้

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

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

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