"आप इस वेबसाइट / ऐप का निर्माण कैसे करेंगे" के लिए सामान्य विचार प्रक्रिया साक्षात्कार प्रश्न [बंद]


14

मैंने साक्षात्कार के सवालों का एक गुच्छा एकत्र किया है, जैसे "बताएं कि आप एक फोटो एल्बम एप्लिकेशन को कैसे डिज़ाइन करेंगे", "यह वर्णन करें कि आप इस विशेष वेबसाइट के इस विशेष फीचर को कैसे डिज़ाइन करेंगे" (जैसे फेसबुक पर पसंद करता है, अमेज़ॅन पर सिफारिश, शॉपिंग कार्ट, गेम ब्लैक जैक की)। फिर, अगर इस बात के लाखों लोग हैं, तो क्या होगा? तुम क्या बदलोगे?

ऐसा लगता है कि यह या तो डेटाबेस स्कीमा या वर्ग परिभाषाओं (या दोनों?) का एक गुच्छा की उम्मीद कर रहा है। मैंने स्कूल में डेटाबेस के बारे में सीखा है, लेकिन मैंने वास्तव में पहले कभी भी एक आवेदन नहीं लिया है और यह जानने में परेशानी हो रही है कि कहां से शुरू करना है, क्या डिजाइन के साथ मैं "अच्छा" हूं और इसे बदलने योग्य बनाने के लिए मैं क्या बदल सकता हूं।

क्या इन प्रणालियों को डिजाइन करते समय एक सामान्य दृष्टिकोण या विचार प्रक्रिया है? और सामान्य मुद्दे / समस्याएं जो डिजाइन में बहुत ऊपर आती हैं जो मुझे बचने की कोशिश करनी चाहिए? क्या कोई इनमें से एक के माध्यम से शायद (या अधिमानतः सभी के माध्यम से) चल सकता है, और इनमें से प्रत्येक की व्याख्या कर सकता है:

1) आप किस तरह की संस्थाओं की जरूरत के साथ आते हैं? 2) आप कैसे तय करते हैं कि किन रिश्तों में सब कुछ होगा? 3) आप अपने डिजाइन में प्रदर्शन अनुकूलन कैसे शामिल करते हैं? 4) क्या मैं कक्षाओं या डेटाबेस का उपयोग कर रहा हूं? क्या इससे कोई फर्क पड़ता है (यानी मेरे पास एक वर्ग होगा जो वास्तव में डेटाबेस तालिका में अनुवाद नहीं किया जा सकता है, उदाहरण के लिए?)

मुख्य कारण मैं पूछ रहा हूं क्योंकि मैं "क्रैकिंग द क्रोडिंग साक्षात्कार" के माध्यम से जा रहा था और मेरे उत्तर लेखक से बिल्कुल अलग थे - मेरे पास बहुत अलग विचार थे कि कौन सी कक्षाएं महत्वपूर्ण थीं।

MY ATTEMPT: फोटो शेयरिंग ऐप के साथ, मेरे पास कक्षाएं / टेबल होंगी: फोटो और उपयोगकर्ता सुनिश्चित करने के लिए।

फिर, मुझे लगता है कि यदि हम एक स्कीमा बनाने की कोशिश कर रहे हैं, तो फोटो और उपयोगकर्ता को जोड़ने वाली एक तालिका होगी यदि हम मान लें कि फोटो में प्रत्येक व्यक्ति फोटो से जुड़ा हुआ है (क्या यह तालिका आवश्यक है? यदि नहीं, तो क्या यह अभी भी सामान्य अभ्यास है? कई रिश्तों के लिए एक अलग तालिका है या नहीं?)।

लेकिन अगर हम एक वस्तु उन्मुख दृष्टिकोण लेने की कोशिश कर रहे हैं, तो शायद हमारे पास एक एल्बम होगा जिसे एल्बम कहा जाता है जो सभी काम करता है और दो अन्य तालिकाओं / कक्षाओं से सभी जानकारी है। यह एक बात है जो मैंने किताब में देखी है- कक्षाओं का एक समूह है और फिर एक वर्ग जो मूल रूप से सभी जानकारी रखता है और अन्य वर्गों को जोड़ता है- क्या यह आम है? उदाहरण के लिए, ऊपर मेरे उदाहरणों में, ऐसा लगता है कि यह लागू होगा?

मैं बस कुछ सामान्य नियमों / दिशानिर्देशों का पालन करने की उम्मीद कर रहा हूं क्योंकि अभी मुझे पता नहीं है कि कैसे बताएं कि एक बड़ी प्रणाली के लिए एक अच्छा आर्किटेक्चर कैसा दिखता है।


1
मान लीजिए कि आप एक फोटो एल्बम को एक शौक परियोजना के रूप में कोड कर रहे थे। पूछने के बजाय "क्या मैं सही रास्ते पर हूँ?" (ठीक है, निश्चित रूप से, क्योंकि सभी आवश्यकताओं को पूरा करने के लिए ट्रैक पर हैं, किसी तरह), आप शायद पूछेंगे "ऐसा लगता है कि डिजाइन का यह पहलू चीजों को अनावश्यक रूप से अजीब बनाता है, क्या हम सब कुछ सरल बनाने के लिए चारों ओर चीजें बदल सकते हैं?" " लेकिन आप कैसे जानते हैं कि डिजाइन के कुछ अनजाने पहलू हैं? उपयोग-मामलों और सबसे खराब मामलों जैसे सोचा प्रयोगों के माध्यम से काम करके। इसके अलावा: "यह लॉगिन आवश्यकता काफी सामान्य है, क्या हम इसे खुद को सुदृढ़ करने के बजाय एक पुस्तकालय पा सकते हैं?"
इवगेनी सर्गेव

जवाबों:


19

इस तरह के प्रश्नों का बिंदु यह आकलन करना है कि क्या आपके पास सॉफ्टवेयर एप्लिकेशन लिखने में वास्तविक दुनिया के कौशल हैं। आपने कुछ सिद्धांत सीखे हैं, लेकिन सैद्धांतिक ज्ञान केवल इतना आगे जा सकता है। सॉफ्टवेयर विकास को सही मायने में समझने का एकमात्र तरीका यह है।

इसका कोई शॉर्टकट नहीं है, क्योंकि "क्या संस्थाओं की आवश्यकता है?" जैसे सवालों के कोई जवाब नहीं हैं। इसके बजाय, आपको विभिन्न उपकरणों और प्रतिमानों के अपने अनुभव को लागू करना होगा, और वे कैसे एक साथ काम करेंगे, हाथ में समस्या के व्यावहारिक समाधान के साथ आने के लिए।

एक प्रश्न जैसे "क्या मैं कक्षाओं या डेटाबेस का उपयोग कर रहा हूं?" सुझाव देता है कि आपके पास बुनियादी ज्ञान की कमी है कि चीजें क्या हैं और कैसे काम करती हैं। कक्षाएं आपके कोड को व्यवस्थित करने के लिए एक प्रतिमान हैं; डेटाबेस डेटा भंडारण की एक विधि है। वे दो अंतर्निहित असंबंधित अवधारणाएं हैं (हालांकि वे एक साथ काम कर सकते हैं)। यह या तो / या प्रश्न नहीं है।

मेरा मतलब कठोर नहीं है, लेकिन मुझे लगता है कि इस तरह के नौकरी के साक्षात्कार में सफल होने के लिए आपको अपने कोडिंग अनुभव को विकसित करने की आवश्यकता है। आपके पास निश्चित रूप से क्षमता है - फोटो शेयरिंग ऐप की आपकी चर्चा में कुछ सही विचार हैं और सही दिशा में आगे बढ़ रहे हैं। लेकिन आपको यह सीखने की जरूरत है कि यह पहले से कैसे काम करता है। अपने साक्षात्कार के लिए तैयार करने का सबसे अच्छा तरीका वास्तव में शुरू से अंत तक एक एप्लिकेशन बनाना है। एक फोटो शेयरिंग ऐप एक उचित आकार की परियोजना होगी, या आप कुछ और चुन सकते हैं। आपके ज्ञान का वास्तव में विस्तार होगा क्योंकि आप देखते हैं कि सभी भाग एक साथ काम करने के लिए कैसे काम कर सकते हैं।


8

ऐसा लगता है कि यह या तो एक डेटाबेस स्कीमा या वर्ग परिभाषाओं (या दोनों का एक गुच्छा) की उम्मीद कर रहा है?

मुझे लगता है कि आप यहां विवरणों पर भी ध्यान केंद्रित कर रहे हैं। उस प्रश्न के साथ, भर्तीकर्ता आपको लिखी जाने वाली सभी कक्षाओं के पूर्ण विवरण की उम्मीद नहीं कर रहा है (अन्यथा वे आपको इसे कोड करने के लिए कहेंगे, इसके बारे में बात नहीं करेंगे)।

आपका जवाब पहले बड़ी तस्वीर के बारे में होना चाहिए - वास्तुकला, स्तरों, परतों, यहां तक ​​कि परियोजना जीवन चक्र और विकास प्रक्रिया जिसे आप जगह में डालेंगे। आवश्यकताओं और पर्यावरण के बारे में सवाल पूछने में संकोच न करें, जो आपके जवाब को समायोजित करने के लिए एप्लिकेशन को चलाने के लिए माना जाता है। जैसा कि dan1111 ने बताया, एक सही एप्लीकेशन डिज़ाइन के लिए कोई सामान्य नुस्खा नहीं है। सभी डिजाइन संदर्भ पर निर्भर हैं।

केवल अगर रिक्रूटर वास्तव में विशिष्ट प्रश्न पूछना शुरू करता है, तो आपको हुड के तहत किन वर्गों, संस्थाओं या डेटाबेस तालिकाओं का उपयोग करना चाहिए, इसके बारे में विवरण में जाना चाहिए।

इसके अलावा, यदि आपके पास थोड़ा अनुभव है, तो यह कहना केवल सामान्य है "मैं आपको अब तक उपयोग किए गए एप्लिकेशन डिज़ाइन के प्रकार का उपयोग करके एक समाधान दिखाऊंगा। मुझे अब तक इसका पता है और अन्य दृष्टिकोण जो मैं आपका वर्णन कर सकता हूं।" बड़े में, लेकिन वास्तव में उन्हें कभी लागू नहीं किया है। मैं दूसरों की खोज और आवेदन करने के लिए भी तैयार हूं।

यह स्वीकार करने में कुछ भी गलत नहीं है कि आपके टूलबॉक्स में केवल इतने सारे उपकरण हैं कि आपका अनुभव आपको अनुमति देता है - वास्तव में, यह एक पूर्वाभासित उत्तर देने से बेहतर है, जिसका आपको कोई सुराग नहीं है कि यह अभ्यास में कैसे काम करता है।


2

मुझे लगा कि मैं आपके पहले प्रश्न पर एक त्वरित टिप्पणी करूंगा:

1) आप किस तरह की संस्थाओं की जरूरत के साथ आते हैं?

एक नई परियोजना के लिए पहली बात यह है कि या तो एक सफेद बोर्ड या कागज के बड़े खाली टुकड़े पर, उस विशेष परियोजना के बारे में सभी भौतिक और वैचारिक चीजों को लिखें, जिनके बारे में मैं और मेरी टीम सोच सकती है। यह एक मंथन सत्र है।

संज्ञाएं वस्तुओं की होती हैं, क्रियाओं का उपयोग मामलों या विधियों से होता है।

भौतिक: फोटो (स्पष्ट!), प्रदर्शन प्रकार, प्रणाली, फोटो फ़ाइल, फ़ाइल प्रारूप, उपयोगकर्ता, दिनांक ....
वैचारिक: जोड़ें, हटाएँ, सहेजें / स्टोर, पुनः प्राप्त करें, सॉर्ट करें, संशोधित करें, देखें / प्रदर्शन फोटो ....

संज्ञा और क्रिया के बीच संबंध बनाएं। उपयोगकर्ता जोड़ता फोटो। (खैर! वहाँ एक उपयोग मामला है!)

मैं यूएमएल और डिज़ाइन पैटर्न को देखने का सुझाव भी दूंगा और सामान्य ओओडी में उनका उपयोग कैसे किया जा सकता है। (सूचना - मैंने ऊपर कहीं भी किसी भाषा या डेटाबेस का उल्लेख नहीं किया है। किसी भाषा को न चुनें और फिर अपना OOD करें। अपने OOD को इस तरह से करें कि डिज़ाइन किसी OOL द्वारा कार्यान्वित किया जा सके।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.