2011-01-28 17 views
8

मैं सिर्फ दो साक्षात्कार प्रश्न है जिसके लिए मैं किसी भी संतोषजनक answers.The सवालसी साक्षात्कार प्रश्न

  1. कितने स्तर हैं गहरी शामिल कर सकते हैं फ़ाइलों नेस्ट किया खोजने में असमर्थ था देखा है?
  2. किसी प्रकार का कास्ट कब उपयोग नहीं किया जाना चाहिए?

क्या कोई मुझे जवाब बता सकता है?

अग्रिम धन्यवाद।

+2

कोई अपराध नहीं, लेकिन ये बहुत अच्छे साक्षात्कार के प्रश्न नहीं हैं। वे आपके पैरों पर विचार करने या उपन्यास समस्याओं को हल करने की आपकी क्षमता के बारे में कुछ भी नहीं दिखाते हैं। मैं किसी भी कंपनी के बारे में आपको एक साक्षात्कार में पूछने पर संदेह करता हूं; ऐसा लगता है कि वे एक इंजीनियर में सही चीजों की तलाश में हैं। – templatetypedef

+0

IMHO सोचने वाले प्रश्नों के साथ मिश्रित है, यह उन लोगों को ढूंढने के लिए उपयोगी होगा जो वास्तव में भाषा को गहराई से जानते हैं और कई मुद्दों पर चर्चा के लिए एक अच्छा प्रारंभिक बिंदु है। – Flexo

+0

@Ashot - पथ की लंबाई अधिकतम स्वीकार्य # निहित घोंसले के लिए कोई सीधा लिंक नहीं है। हालांकि यह कार्यान्वयन परिभाषित किया गया है, लगभग हमेशा प्रत्येक फ़ाइल को अलग-अलग खोला जाता है (जब तक वे अधिकतर सापेक्ष पथ नहीं होते हैं, जो असंभव प्रतीत होते हैं), नामों को संयोजित नहीं किया जाता है और पथ की लंबाई बढ़ती नहीं है। पूर्णांक पदोन्नति नियमों के कारण हस्ताक्षर में आकस्मिक परिवर्तनों को रोकने के लिए – Flexo

उत्तर

1
  1. के रूप में अन्य जवाब ने कहा है कार्यान्वयन परिभाषित किया गया है, लेकिन वहाँ स्पष्ट रूप से समस्याओं (विशेष रूप से निर्माण समय के साथ) है कि बड़ी श्रृंखला से बाहर निकलने की संभावना है। यह एक "code smell" हो सकता है जो खराब encapsulation का संकेत भी देता है।

  2. स्पष्ट उत्तर "जब इसकी आवश्यकता नहीं है", यानी स्वचालित, उदा। डबल करने के लिए तैरना, लंबे समय तक int (जब उचित [*])। मुझे यह भी लगता है कि यह लगभग निश्चित रूप से शून्य से कास्टिंग करने के बारे में पूछ रहा है * e.g. with malloc (comp.lang.c FAQ item)।

[*] टिप्पणी

+0

int से लंबे समय तक मामलों में टाइपकास्ट की आवश्यकता हो सकती है। – Lundin

11
  1. किसी भी सीमा कार्यान्वयन परिभाषित किया गया है, लेकिन मानक कम से कम 15 की आवश्यकता है देखें, कुछ और के रूप में 5.2.4.1

  2. एक ही स्थिति देखें: जब यह गलत है, और जब यह अनावश्यक है। सबसे प्रसिद्ध उदाहरण शायद यह है कि आपको malloc से वापसी मूल्य नहीं डालना चाहिए। यह व्यर्थ है [*] और यह कभी-कभार बग छुपा सकता है (#शामिल करें)। एक और उदाहरण यह है कि यदि आप यादृच्छिक रूप से तितर-बितर प्रकारों के बीच बिखरे हुए हैं, तो अंततः आप एक संकुचित कास्ट या हस्ताक्षरित और हस्ताक्षरित मानों के बीच तुलना करने के लिए एक कंपाइलर चेतावनी दबाएंगे, जिसे आपने ध्यान देना चाहिए था। इस तरह की चेतावनियों को दबाने के लिए तब तक नहीं रखा जाना चाहिए जब तक आप सुनिश्चित न हों कि कोड सही है।

[*] मैं क्योंकि मैं जैसी चीजों के बारे में था, सोचने के लिए एक बिंदु था इस्तेमाल किया:

foo *p = something; 
... some time later ... 
p = (foo*) malloc(n * sizeof(foo)); 

डाली एक बग के खिलाफ कुछ संरक्षण प्रदान करता है - sizeof में गलत प्रकार का उपयोग । दृश्यमान रूप से मैं देख सकता हूं कि कास्ट sizeof से मेल खाता है, और संकलक जांचता है कि परिवर्तनीय कलाकारों से मेल खाता है, इसलिए मेरे पास सुरक्षा है।

अब मैं लिखना:

p = malloc(n * sizeof(*p)); 

मैं, सुरक्षा के लिए एक जांच की जरूरत नहीं है क्योंकि मैं निश्चित रूप से पी के प्रकार के लिए सही आकार की स्मृति आवंटित किया है। खैर, यह मानते हुए कि गुणा बहना नहीं है।

+0

यदि आप शामिल करना भूल जाते हैं तो मानक-अनुपालन संकलक मॉलोक को पहचान नहीं पाएगा। आपको केवल मानक सी कंपाइलर्स का उपयोग करना चाहिए। – Lundin

+0

मॉलोक कास्ट के लिए, यह कैसे सुरक्षा हो सकता है जब न तो कंपाइलर और न ही स्थिर जांच उपकरण बग पकड़ लेगा? मेरे लिए यह आपकी मानसिकता रखने के लिए जोखिम भरा प्रतीत होता है, क्योंकि आप टाइपकास्ट में प्रकार से मेल खाने के लिए दुर्घटना से आकार (foo *) लिखेंगे। यह * नहीं * कारण है कि malloc से पहले टाइपकास्ट हैं, और वे पूरी तरह से व्यर्थ नहीं हैं। * वास्तविक * कारण सी और सी ++ के बीच संगतता है, जहां पूर्व भाषा निहित * से अंतर्निहित कास्ट करती है जबकि उत्तरार्द्ध नहीं करता है। – Lundin

+0

@ लंदन: एक सी 99 कंपाइलर 'malloc' को पहचान नहीं पाएगा, एक C89 संकलक होगा। कुछ समय पहले मैं यह कर रहा था, और जैसा कि मैंने कहा है कि मैं यह अच्छा अभ्यास नहीं कर रहा हूं। यह इस अर्थ में सुरक्षा प्रदान करता है कि 'बार * पी; ...; पी = (foo *) malloc (n * sizeof (foo)); 'संकलित करने में विफल रहता है। सी और सी ++ के बीच संगतता एक बहुत ही खराब कारण है, भले ही यह वास्तविक है, क्योंकि यह सी कोड को सी ++ के रूप में संकलित करने में परेशानी मांग रहा है। यदि आप इसे सी ++ प्रोग्राम में उपयोग करना चाहते हैं तो इसे सी के रूप में संकलित करें और इसे C++ से लिंक करें, सी और सी ++ के चौराहे वाली एक कल्पना वाली भाषा में लिखने की कोशिश न करें। –

1
  1. क्या बुरा साक्षात्कार सवाल है! आप नहीं जानते कि यह आपके बारे में कुछ अच्छा कहता है। जो लोग मानक में उन्हें देखे बिना चीजों को जानते हैं उन्हें सबसे अच्छे रूप में वर्णित किया जाता है :)

2।

  • इसे प्राथमिक रूप से कॉन्स या अस्थिर क्वालीफायर को हटाने के लिए उपयोग नहीं किया जाना चाहिए।
  • ज्यादातर मामलों में इसे विभिन्न प्रकारों पर इंगित पॉइंटर्स के बीच कास्ट करने के लिए उपयोग नहीं किया जाना चाहिए।
  • इसे विभिन्न प्रकार के फ़ंक्शन पॉइंटर्स के बीच डालने के लिए उपयोग नहीं किया जाना चाहिए।
+0

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

+0

@ स्टेव - यह काफी खुला है, जो बहुत सी चर्चाओं की अनुमति देगा और "मुझे पता है कि यह एक मुद्दा है, मुझे पता है कि इसे कैसे देखना है" एक अच्छे उम्मीदवार से जवाब शायद एक अच्छे साक्षात्कारकर्ता द्वारा निकाला जा सकता है। – Flexo

+0

@Steve मैं अब और फिर सी प्रोग्रामिंग साक्षात्कार आयोजित करता हूं। और अनुभव के आधार पर, मुझे लगता है कि सवाल खराब है, क्योंकि क्या उन्हें पता है कि यह एक मुद्दा है या नहीं, आपको वही जवाब मिल जाएगा "मुझे नहीं पता, मैं इसे देख लूंगा"। और आप यह नहीं बता सकते कि उम्मीदवार वास्तव में इसे देखकर कितना अच्छा होगा। एक बेहतर सवाल यह होगा: क्या नेस्टेड फाइलों के साथ कोई जोखिम है? फिर भी, यह सवाल हल्के हित में है और साक्षात्कार पर सीमित समय पर पूछने के लिए कई बेहतर लोग हैं। – Lundin

0

इस पर कोई सीमा नहीं है कि इसे घोंसला कैसे किया जा सकता है, लेकिन आपका कंपाइलर स्टैक स्पेस से बाहर हो सकता है ... तो यह संकलक-निर्भर है!

संबंधित मुद्दे