तकनीकी साक्षात्कार में OO डिजाइन संबंधित प्रश्न [बंद]


14

मैं हाल ही में कुछ साक्षात्कारों में भाग ले रहा हूं और कंपनियों द्वारा कुछ समय से अधिक "डिजाइन [[मॉडल सम्मिलित करें]" सवालों के जवाब देने के लिए कहा गया है।

  1. क्या आजकल उद्योग में यह सामान्य है? मैं सॉफ्टवेयर की दुनिया में दो दशकों से अधिक समय से हूं और साक्षात्कार के अपने हिस्से में भाग लिया है, लेकिन मैं साक्षात्कार में इस पैटर्न को केवल हाल ही में देख रहा हूं।
  2. मुझे लगता है कि प्रश्न बहुत खुला है। उदाहरण के लिए: मुझे "एक पार्किंग का डिजाइन" करने के लिए एक वर्ग आरेख बनाने के लिए कहा गया था। मुझे यकीन नहीं है कि साक्षात्कारकर्ता किस स्तर की अपेक्षा कर रहा है। यह एक ऑनलाइन परीक्षा में था जहां मुझे एक विज़िओ आरेख संलग्न करने की उम्मीद थी, इसलिए मैं उनसे नहीं पूछ सकता था कि उनकी अपेक्षाएं क्या थीं।
  3. क्या आप अपनी साक्षात्कार प्रक्रिया में इस तरह के प्रश्नों का उपयोग करते हैं? क्या वे केवल वर्ग आरेख से संबंधित हैं या आप अनुक्रम, फ़्लोचार्ट और ईआरडी (स्थिति की प्रकृति के आधार पर संभोग) भी पूछते हैं, क्या वे आपकी भर्ती प्रक्रिया में प्रभावी हैं?

* केविन की प्रतिक्रिया के लिए संपादित करें *

उदाहरण के लिए: एक पूर्ण प्रश्न "पार्किंग पार्किंग प्रबंधन प्रणाली को डिज़ाइन किया जा सकता है जिसका उपयोग रिक्त स्थान खोजने के लिए किया जा सकता है"

मैं 2 वर्गों के साथ किया जा सकता है, ParkingLotऔर Slotया मैं जोड़ने के लिए जा सकते हैं IVehicleऔर Vehicleऔर Carऔर Motorcycleवर्गों। मैं रेखा कहां खींचूं?

public class ParkingLot
{
   IVehicle Vehicle {set; get;}

   List<Slot> GetEmptySlots() { };
}

public class Vehicle : IVehicle
{
  Slot SlotNum {set; get;}
}

public class Slot
{
  int Row {set; get;}
  int Column {set; get; }
}

" जो कुछ भी डिजाइन करें " समस्याएं दशकों तक वापस आती हैं।
Blrfl

हमेशा पूछें - क्या आप इस समस्या के लिए एक विशिष्ट, सरल उत्तर चाहते हैं? या आप जेनेरिक समस्या का अधिक मजबूत जवाब चाहते हैं?
क्रिस कूडमोर

जवाबों:


10
  1. कुछ हद तक, हाँ। कोई भी एक समाधान के माध्यम से अपने तरीके से वाक्य रचना या कॉपी / पेस्ट कर सकता है। हम ऐसे लोगों को काम पर रखना चाहते हैं जो समस्याओं को हल कर सकते हैं।

  2. वे अपेक्षा करते हैं कि आप डिजाइन को पर्याप्त रूप से दस्तावेजित करेंगे कि वे इसे समझ सकें (और इससे अधिक नहीं)।

  3. मैं लोगों से पूछता हूं कि वे XYZ समस्या को कैसे हल करेंगे, हाँ। आमतौर पर वे सिर्फ मौखिक रूप से इसका वर्णन करते हैं। मैं देखना चाहता हूं कि क्या वे आवश्यकताओं को स्पष्ट करने के लिए प्रश्न पूछते हैं। मैं देखना चाहता हूं कि वे अन्य प्रोग्रामरों के साथ कैसे संवाद करते हैं। मैं देखना चाहता हूं कि क्या वे अपने पैरों पर सोच सकते हैं।

यह मेरे लिए मददगार रहा है। मुझे कोड बंदर नहीं चाहिए, मुझे सॉफ्टवेयर इंजीनियर चाहिए।


मैं आवश्यकताओं को स्पष्ट करने के लिए प्रश्न पूछने में सक्षम नहीं था क्योंकि मुझे यह ऑनलाइन परीक्षा के भाग के रूप में पूछा गया था। मैं समझता हूं कि उनके संचार कौशल को देखते हुए आंशिक रूप से इस तरह के सवाल के पीछे मकसद हो सकता है। लेकिन क्या यह वास्तव में उनके विश्लेषणात्मक और डिजाइन कौशल को समझने में मदद करता है?
निक

1
@ नाइक - दुन्नो। ऑनलाइन परीक्षण पहली जगह में संदिग्ध लाभ के हैं। व्यक्ति में, यह कौशल डिजाइन करने के लिए कुछ अंतर्दृष्टि प्रदान करता है।
तेलस्टिन

6

मुझे ये सवाल मूर्खतापूर्ण लगते हैं। सही उत्तर है "उपयोग के मामले क्या हैं?" उपयोग के मामले के बिना, किसी भी डिजाइन की आवश्यकता नहीं है। उदाहरण के लिए, यहां पार्किंग के सवाल का पूरी तरह से उचित जवाब है:

class ParkingLot {
 boolean isFull();
 void carEntered();
 void carExited();
}

यह एक स्पष्ट उपयोग के मामले को संतुष्ट करता है।


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

2
मैं सुझाव दे रहा हूं कि कुछ भी डिजाइन करने से पहले मैं साक्षात्कारकर्ता के साथ उपयोग के मामलों पर सहमत हो जाऊंगा।
केविन क्लाइन

1
यह एक मूर्खतापूर्ण सवाल नहीं है। इसके विपरीत, यह पता लगाने में मदद करता है कि कोई उम्मीदवार अस्पष्ट आवश्यकताओं को स्पष्ट करने में सक्षम है या नहीं। यह एक आवश्यक कौशल है।
कैमरून स्किनर

1
यह मूर्खतापूर्ण नहीं है अगर साक्षात्कारकर्ता जानता है कि कुछ भी डिजाइन शुरू करने के लिए पर्याप्त जानकारी नहीं है।
केविन क्लाइन

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

5

आप वास्तव में अपने संपादन में इस सवाल का एक उपयोग प्रदर्शित करते हैं, जहां आप एक व्यावहारिक मॉडल को डिजाइन करने में विफल रहते हैं।

public class ParkingLot
{
   IVehicle Vehicle {set; get;}

   List<Slot> GetEmptySlots() { };
}

public class Vehicle : IVehicle
{
  Slot SlotNum {set; get;}
}

public class Slot
{
  int Row {set; get;}
  int Column {set; get; }
}

var parkingLot = new ParkingLot();
var v1 = new Vehicle();
v1.Slot = parkingLot.GetEmptySlots()[0];
parkingLot.Vehicle = v1; // WHAT!??

आप ऐसी रचनाओं Carऔर Motorcycleवर्गों का भी उल्लेख करते हैं, जो बिना किसी विचार के बहुत मायने नहीं रखते। आपके डिज़ाइन को उपवर्गित होने से कोई लाभ नहीं होने वाला है Vehicle। यदि आप Motorcycleबिना किसी व्यवहारगत मतभेद के परिचय देते हैं Vehicle, तो मैं इसे विफल मानूंगा।

यदि आपने एकल Vehicleसमस्या का समाधान नहीं किया है, तो हम एक लाइव साक्षात्कार में बहुत कुछ करेंगे। यदि आपने इसे ठीक कर दिया है (संभवत: इसे एक बनाकर List<IVehicle>), तो मैं इसे आपके डिजाइन के विकास को देखने के लिए एक शुरुआती बिंदु के रूप में उपयोग करूंगा। एक कारण है कि आवश्यकताएं बुनियादी हैं, और कोई भी परिभाषित उपयोग के मामले नहीं हैं - यह दुनिया के काम करने के तरीके से बहुत अधिक है।

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

मैं पार्किंग समस्या के बारे में आपकी विचार प्रक्रिया पर भी विचार करूंगा ताकि आपकी समस्या का समझदारी से विश्लेषण करने की आपकी सामान्य क्षमता का संकेत हो। यदि आपको मुझसे बेसिक उपयोग के मामलों के लिए पूछना है और / या ऑडबॉल के साथ आना है (जैसे कि पार्किंग पर 2 विशेष के लिए), तो मुझे दृढ़ता से चिंता होने लगती है कि आपने वास्तव में पहले कभी पार्किंग का उपयोग नहीं किया है और हम थोड़ा कठिन कुछ जटिल पर संवाद करने के लिए समय जा रहा है।


3

मैं इनसे पूछता था - जब हमने कोड जनरेशन के लिए क्लास डायग्राम बनाए थे। मैं अभी भी मौके पर नहीं, बल्कि नियमित रूप से करता हूं। मुझे सवाल पसंद है क्योंकि यह मुझे उस व्यक्ति को सोचने देता है।

इसे समाप्त करने का इरादा है। ठीक है। एक सही उत्तर नहीं है। मेरे दिमाग में इसका जवाब नहीं है; मैं देखना चाहता हूं कि यह कहां जाता है। मुझे लगता है कि यह व्यक्ति में पूछने के लिए एक बेहतर सवाल है, "उत्तर में ईमेल नहीं।" यह संचार, मान्यताओं और बातचीत के बारे में है; सिर्फ एक जवाब नहीं!


"मुझे यह प्रश्न पसंद है क्योंकि यह मुझे व्यक्ति को सोचने देता है" -> जब आप व्यक्ति की सोच कौशल का मूल्यांकन कर रहे हैं तो आप वास्तव में क्या देखते हैं? क्या यह गति है जिस पर वे समस्या को हल करते हैं? क्या यह अंतिम समाधान है? क्या वे वर्ग, इंटरफेस बनाने में कितने गहरे जाते हैं? क्या यह है कि वे कैसे ओओपी अवधारणाओं (विरासत, बहुरूपता आदि) को जानते हैं?
निक

क्या वे व्यवस्थित हैं? क्या वे सोचते हैं कि क्या गलत हो सकता है? क्या वे विकल्प के बारे में सोचते हैं? क्या वे विषम प्रश्न पर जल्दी हार मान लेते हैं? (मैं आमतौर पर एक टेलीफोन की तरह कुछ के लिए पूछता हूं, न कि एक वस्तु जिसे ज्यादातर लोगों ने पहले डिजाइन किया है?)। मैं गति की तलाश नहीं करता (जब तक कि कोई कुछ भी कहना शुरू करने से पहले 15 मिनट तक नहीं लेता!)
ज्यां बोयार्स्की

3
  1. मैंने इस प्रकार के साक्षात्कार कम से कम 12 साल पहले देखे हैं। यह वह दृष्टिकोण है जिसका मैंने पिछले 6 वर्षों से उपयोग किया है। अनुभव बताता है कि यह नौकरी के लिए 20 प्रश्नों की तुलना में बेहतर उम्मीदवारों का चयन करता है और उन्हें 20 दृष्टिकोणों में से एक अंक देता है।

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

  3. मुझे साक्षात्कार में नौकरी के लिए आवश्यक कौशल का प्रदर्शन करने के लिए सभी संभावित कर्मचारियों की आवश्यकता है। प्रोग्रामर के लिए, उन्हें कुछ कोड लागू करने की आवश्यकता होगी, और इसके लिए उनके डिजाइन के बारे में बात करेंगे। यह खराब किराए को रोकने के लिए बहुत प्रभावी है, लेकिन साक्षात्कार में 90% विफलता दर के लिए तैयार रहें।


जब तक मैं विशिष्ट जानकारी के लिए साक्षात्कारकर्ता से बुद्धिमानी से पूछ सकता हूं, तब तक प्रश्न को समाप्त करना ठीक है। जब मुझे यह ऑनलाइन करने के लिए कहा गया, तो मैं केवल इतना कर सकता था कि समाधान का अनुमान लगाया जाए। क्या आप आम तौर पर डिजाइन के सवाल पूछते हैं जब आप एक साक्षात्कार का सामना कर रहे हैं?
निक

मैं दोनों करते हैं। एक तकनीकी प्रोग्रामिंग चुनौती, जिसे वे एक साक्षात्कार में आमंत्रित करने से पहले ईमेल के माध्यम से प्रस्तुत करते हैं, साथ ही साथ विभिन्न अभ्यासों का सामना करते हैं।
माइकल शॉ

इन खुली चुनौतियों का एक भी सही उत्तर नहीं है, और कुछ भी गलत है। उनका लक्ष्य ऐसे लोगों की पहचान करना है जिनके पास अच्छी विचार प्रक्रियाएं हैं, समझदार निर्णय लेते हैं और यह आकलन करने के लिए कि उन्हें नौकरी के कर्तव्यों को निभाने के लिए कितने समर्थन की आवश्यकता होगी।
माइकल शॉ

2

एक छोटी प्रणाली को डिजाइन करना वास्तव में एक साक्षात्कार में पूछने के लिए एक बहुत ही प्रासंगिक अभ्यास है। यह एक डोमेन समस्या के लिए एक अच्छा सॉफ्टवेयर समाधान के साथ आने पर अपने कौशल दिखाता है।

हालाँकि, मुझे यह अजीब लग रहा है कि मैं कक्षा के आरेख को ऑनलाइन पोस्ट करने के लिए कहता हूं, जिसमें कोई मानव बातचीत नहीं है:

  • वे आवश्यक याद करेंगे - आरेख के पीछे तर्क और क्या आप इस तरह चीजों को डिजाइन करने के लिए नेतृत्व किया।
  • आवेदक को बहुत दूर जाने से रोकने के लिए कोई "पैरापेट" नहीं है। यदि आप आरेख में एक अंतिम कार्यान्वयन को दर्शाते हैं, तो आपके पास संभवतः दर्जनों कक्षाएं और एक अपठनीय स्कीमा होगा।
  • एक यूएमएल वर्ग आरेख बनाने में सक्षम होना वास्तव में एक आवश्यक कौशल नहीं है, यह दूसरों के बीच सिर्फ एक ओओ अंकन है। ठोस डिजाइन बनाने की क्षमता है।

एक लाइव साक्षात्कार में, आदर्श कदम मैं एक उम्मीदवार से अपेक्षा करूंगा:

  • रिक्रूटर के साथ समस्या के बारे में बात करें और एक बुनियादी समाधान को मौखिक रूप से व्यक्त करना शुरू करें, सवाल पूछें और रिक्रूटर के रूप में समायोजित करने से कुछ सटीक आवश्यकताएं मिलती हैं।
  • खड़े हो जाओ और सिस्टम के एक समग्र दृष्टिकोण को स्केच करें और कैसे घटक एक साथ बातचीत कर सकते हैं। यूएमएल की सबसे शुद्ध शैली हो सकती है, बस बक्से और सर्कल हो सकते हैं।
  • घटकों / वर्गों में से एक के लिए एक परीक्षण लिखें, या तो उच्च स्तरीय स्वीकृति परीक्षण या इकाई परीक्षण।
  • संबंधित कार्यान्वयन लिखना शुरू करें।

उम्मीद है कि कुछ बिंदु पर भर्तीकर्ता ने उम्मीदवार के कौशल के बारे में पर्याप्त जानकारी एकत्र की होगी और इसे एक दिन कॉल करेगा। लक्ष्य एक पूर्ण कार्य समाधान को लागू करना नहीं है (जब तक कि यह भेष साक्षात्कार में इन अवैतनिक सेवा में से एक नहीं है)।


0

OOP प्रश्न खुले-समाप्त होते हैं। कोई सही या गलत उत्तर नहीं है, लेकिन कुछ सिद्धांत हैं जिन्हें साक्षात्कारकर्ता देखने की उम्मीद करते हैं (जैसे कि एक कंस्ट्रक्टर का उपयोग वैरिएबल्स को शुरू करने के लिए, आपके तरीकों को छोटा रखते हुए, एन्कैप्सुलेशन / रचना / बहुरूपता / इनहेरिटेंस का उपयोग करते समय लागू होता है, आदि)।

साक्षात्कार में हमेशा डेटा संरचना, OOP और डेटाबेस से संबंधित प्रश्नों की अपेक्षा करते हैं, वे बहुत सामान्य हैं। "क्रैकिंग कोडिंग इंटरव्यू" और "प्रोग्रामिंग इंटरव्यू उजागर" जैसी किताबें आपको तैयार करने में मदद कर सकती हैं।


-1

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


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