ฉันได้รวบรวมคำถามสัมภาษณ์มากมายเช่น "อธิบายว่าคุณจะออกแบบแอพพลิเคชั่นอัลบั้มรูปได้อย่างไร", "อธิบายว่าคุณจะออกแบบคุณสมบัติเฉพาะของเว็บไซต์นี้ได้อย่างไร" (เช่นกดไลค์บน Facebook แนะนำใน Amazon ตะกร้าสินค้าเกม แจ็คสีดำ) ถ้าเป็นเช่นนั้นจะเกิดอะไรขึ้น คุณจะเปลี่ยนอะไร
ดูเหมือนว่าสิ่งนี้คาดหวังว่าสคีมาฐานข้อมูลหรือคำจำกัดความของคลาส (หรือทั้งสองอย่าง?) ฉันได้เรียนรู้เกี่ยวกับฐานข้อมูลในโรงเรียนแล้ว แต่ฉันไม่เคยออกแบบแอปพลิเคชันมาก่อนและมีปัญหาในการรู้ว่าจะเริ่มจากที่ใดการออกแบบที่ฉันออกแบบมานั้นมี "ดี" และสิ่งที่ฉันสามารถเปลี่ยนได้
มีวิธีการทั่วไปหรือกระบวนการคิดเมื่อออกแบบระบบเหล่านี้หรือไม่? และปัญหา / ปัญหาทั่วไปที่ดูเหมือนจะเกิดขึ้นมากในการออกแบบที่ฉันควรพยายามหลีกเลี่ยง? ใครบางคนอาจจะแนะนำให้ฉันผ่านหนึ่ง (หรือมากกว่าทั้งหมดในขณะที่เปรียบเทียบความต้องการของแต่ละคน) และอธิบาย:
1) คุณคิดอย่างไรกับเอนทิตีที่ต้องการ? 2) คุณตัดสินใจได้อย่างไรว่าความสัมพันธ์ทุกอย่างจะมีอะไรบ้าง 3) คุณรวมการปรับปรุงประสิทธิภาพไว้ในการออกแบบของคุณอย่างไร 4) ฉันจะใช้คลาสหรือฐานข้อมูลหรือไม่ มันสร้างความแตกต่าง (เช่นฉันจะมีคลาสที่ไม่สามารถแปลเป็นตารางฐานข้อมูลจริง ๆ ได้หรือไม่)
เหตุผลหลักที่ฉันถามคือเพราะฉันกำลังผ่าน "แคร็กสัมภาษณ์การเข้ารหัส" และคำตอบของฉันแตกต่างอย่างสิ้นเชิงจากผู้เขียน - ฉันมีความคิดแตกต่างกันมากในสิ่งที่ชั้นเรียนมีความสำคัญ
ความตั้งใจของฉัน: ด้วยแอพแชร์รูปภาพฉันจะมีคลาส / ตาราง: รูปภาพและผู้ใช้อย่างแน่นอน
จากนั้นฉันคิดว่าถ้าเรากำลังพยายามสร้างสคีมาจะมีตารางที่เชื่อมโยงภาพถ่ายและผู้ใช้ถ้าเราสมมติว่าแต่ละคนในรูปภาพนั้นเชื่อมโยงกับรูปภาพ (ตารางนี้จำเป็นหรือไม่ถ้าไม่ใช่มันยังคงเป็นเรื่องธรรมดา มีตารางแยกต่างหากสำหรับความสัมพันธ์แบบกลุ่มต่อกลุ่มหรือไม่?
แต่ถ้าเราพยายามใช้วิธีการแบบเชิงวัตถุบางทีเราอาจจะมีคลาสที่เรียกว่าอัลบั้มซึ่งทำงานทั้งหมดและมีข้อมูลทั้งหมดจากตาราง / คลาสอื่น ๆ นี่คือสิ่งหนึ่งที่ฉันสังเกตเห็นในหนังสือ - มีหลายชั้นเรียนจากนั้นชั้นหนึ่งซึ่งโดยทั่วไปมีข้อมูลทั้งหมดและเชื่อมต่อชั้นเรียนอื่น - นี่เป็นเรื่องธรรมดาใช่ไหม ตัวอย่างเช่นในตัวอย่างด้านบนสิ่งนี้ดูเหมือนว่าจะมีผลใช้หรือไม่
ฉันแค่หวังให้กฎ / แนวทางทั่วไปปฏิบัติตามเพราะตอนนี้ฉันไม่รู้ว่าจะบอกได้อย่างไรว่าสถาปัตยกรรมที่ดีสำหรับระบบขนาดใหญ่นั้นมีลักษณะอย่างไร