Skip to content

Latest commit

 

History

History
1951 lines (1649 loc) · 236 KB

File metadata and controls

1951 lines (1649 loc) · 236 KB

कोडिंग इंटरव्यू यूनिवर्सिटी

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

मैंने कई महीनों तक प्रतिदिन लगभग 8-12 घंटे अध्ययन किया। यह मेरी कहानी है: [मैंने एक Google साक्षात्कार के लिए 8 महीने तक पूर्णकालिक अध्ययन क्यों किया](https://medium.freecodecamp.org/why-i-studied-full-time-for-8-months-for-a -google-साक्षात्कार-cc662ce9bb13)

कृपया ध्यान दें: आपको मेरे जितना अध्ययन करने की आवश्यकता नहीं होगी। मैंने उन चीजों पर बहुत समय बर्बाद किया जो मुझे जानने की जरूरत नहीं थी। उसके बारे में अधिक जानकारी नीचे। मैं आपका कीमती समय बर्बाद किए बिना वहां पहुंचने में आपकी मदद करूंगा।

यहां सूचीबद्ध आइटम आपको किसी भी सॉफ्टवेयर कंपनी में तकनीकी साक्षात्कार के लिए अच्छी तरह से तैयार करेंगे, दिग्गजों सहित: अमेज़ॅन, फेसबुक, गूगल और माइक्रोसॉफ्ट।

आपको शुभकामनाएं!

अनुवाद:
अनुवाद जारी है: - [עברית](jwasham#82) - [Arabic](jwasham#98) - [Arabic](jwasham#98) - [Turkish](jwasham#90) - [French](jwasham#89) - [Українська](jwasham#106) - [Korean(한국어)](jwasham#118) - [Telugu](jwasham#117) - [Urdu](jwasham#519) - [Thai](jwasham#156) - [Greek](jwasham#166) - [Malayalam](jwasham#239) - [Persian - Farsi](jwasham#186) - [Afrikaans](jwasham#1164)

प्रायोजक बनें और कोडिंग साक्षात्कार विश्वविद्यालय का समर्थन करें!

विशेष धन्यवाद:

Gitpod

क्लाउड के लिए बनाया गया देव वातावरण

GitLab, GitHub, और Bitbucket के साथ मूल रूप से एकीकृत, Gitpod स्वचालित रूप से और आपकी सभी शाखाओं के लिए लगातार देव वातावरण का निर्माण करता है। परिणामस्वरूप टीम के सदस्य प्रत्येक नए कार्य के लिए तुरंत नए देव वातावरण के साथ कोडिंग शुरू कर सकते हैं - चाहे आप कोई नई सुविधा बना रहे हों, बग को ठीक करना चाहते हों, या कोड समीक्षा पर काम करना चाहते हों।


यह क्या है?

 व्हाइटबोर्ड पर कोडिंग - एचबीओ की सिलिकॉन वैली से

एक बड़ी कंपनी के लिए सॉफ्टवेयर इंजीनियर बनने के लिए यह मेरी बहु-महीने की अध्ययन योजना है।

आवश्यक:

  • कोडिंग के साथ थोड़ा अनुभव (चर, लूप, तरीके/कार्य, आदि)
  • धैर्य
  • समय ध्यान दें कि यह सॉफ्टवेयर इंजीनियरिंग के लिए एक अध्ययन योजना है, न कि वेब विकास के लिए। Google, Amazon जैसी बड़ी सॉफ्टवेयर कंपनियां, फेसबुक और माइक्रोसॉफ्ट सॉफ्टवेयर इंजीनियरिंग को वेब डेवलपमेंट से अलग मानते हैं। उदाहरण के लिए, अमेज़ॅन के पास है फ्रंटएंड इंजीनियर्स (FEE) और सॉफ्टवेयर डेवलपमेंट इंजीनियर्स (SDE)। ये 2 अलग-अलग भूमिकाएँ और साक्षात्कार हैं वे समान नहीं होंगे, क्योंकि प्रत्येक की अपनी योग्यताएं हैं। इन कंपनियों को कंप्यूटर विज्ञान के ज्ञान की आवश्यकता होती है सॉफ्टवेयर विकास / इंजीनियरिंग भूमिकाएँ।

विषयसूची

अध्ययन योजना

अध्ययन के विषय

  • [एल्गोरिदमिक जटिलता / बिग-ओ / एसिम्प्टोटिक विश्लेषण] (# एल्गोरिदमिक-जटिलता--बिग-ओ--एसिम्प्टोटिक-विश्लेषण)
  • [डेटा संरचनाएं] (# डेटा-संरचनाएं)
    • सरणी
    • [लिंक की गई सूचियाँ] (# लिंक्ड-सूचियाँ)
    • [स्टैक] (#स्टैक)
    • [कतार] (# कतार)
    • [हैश टेबल] (# हैश-टेबल)
  • [अधिक ज्ञान](# अधिक-ज्ञान)
  • पेड़
  • [छँटाई] (# छँटाई)
    • चयन
    • प्रविष्टि
    • ढेर बनाएं और छांटें
    • जल्दी से सुलझाएं
    • मर्ज़ सॉर्ट
  • ग्राफ
    • निर्देशित
    • अप्रत्यक्ष
    • सहखंडज मैट्रिक्स
    • निकटता सूची
    • ट्रैवर्सल: बीएफएस, डीएफएस
  • [और भी अधिक ज्ञान] (# और भी अधिक-ज्ञान)
    • [पुनरावृत्ति] (# रिकर्सन)
    • [डायनामिक प्रोग्रामिंग] (# डायनामिक-प्रोग्रामिंग)
    • [डिज़ाइन पैटर्न] (# डिज़ाइन-पैटर्न)
    • कॉम्बिनेटोरिक्स (n चुनें k) और प्रायिकता
    • [एनपी, एनपी-पूर्ण और अनुमान एल्गोरिदम] (# एनपी-एनपी-पूर्ण-और-सन्निकटन-एल्गोरिदम)
    • कंप्यूटर प्रोग्राम को कैसे प्रोसेस करते हैं
    • [कैश] (# कैश)
    • [प्रक्रियाएं और धागे] (# प्रक्रियाएं-और-धागे)
    • [परीक्षण] (# परीक्षण)
    • [स्ट्रिंग खोज और जोड़तोड़] (# स्ट्रिंग-खोज--हेरफेर)
    • [कोशिश करता है] (# प्रयास करता है)
    • [फ़्लोटिंग पॉइंट नंबर] (# फ़्लोटिंग-पॉइंट-नंबर)
    • [यूनिकोड] (# यूनिकोड)
    • एंडियननेस
    • [नेटवर्किंग] (# नेटवर्किंग)
  • [अंतिम समीक्षा](#अंतिम समीक्षा)

नौकरी पाना

  • [अपना रिज्यूमे अपडेट करें](#अपडेट-अपना रिज्यूमे)
  • [नौकरी खोजें](# एक नौकरी खोजें)
  • साक्षात्कार प्रक्रिया और सामान्य साक्षात्कार तैयारी
  • [साक्षात्कार आने के समय के बारे में सोचें]
  • [साक्षात्कारकर्ता के लिए प्रश्न हैं](#हैव-प्रश्न-के लिए-साक्षात्कारकर्ता)
  • [वन्स यू हैव गॉट द जॉब] (# वन्स-यूव-गोट-द-जॉब)

***** इस बिंदु के नीचे सब कुछ वैकल्पिक है ----------------**

वैकल्पिक अतिरिक्त विषय और संसाधन


इसका उपयोग क्यों करें?

अगर आप किसी बड़ी कंपनी में सॉफ्टवेयर इंजीनियर के तौर पर काम करना चाहते हैं तो ये बातें आपको जाननी चाहिए।

यदि आप कंप्यूटर विज्ञान में डिग्री प्राप्त करने से चूक गए, जैसे मैंने किया, तो यह आपको पकड़ लेगा और आपके जीवन के चार साल बचाएगा।

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

यह एक लंबी योजना है। आपको महीनों लग सकते हैं। यदि आप पहले से ही इसके बारे में बहुत कुछ जानते हैं तो इसमें आपको बहुत कम समय लगेगा।

इसका उपयोग कैसे करना है

नीचे सब कुछ एक रूपरेखा है, और आपको ऊपर से नीचे तक वस्तुओं से निपटना चाहिए।

मैं गिटहब के विशेष मार्कडाउन स्वाद का उपयोग कर रहा हूं, जिसमें प्रगति को ट्रैक करने के लिए कार्य सूचियां शामिल हैं।

यदि आप git . का उपयोग नहीं करना चाहते हैं

इस पृष्ठ पर, शीर्ष के पास कोड बटन पर क्लिक करें, फिर "ज़िप डाउनलोड करें" पर क्लिक करें। फ़ाइल को अनज़िप करें और आप टेक्स्ट फ़ाइलों के साथ काम कर सकते हैं।

यदि आप एक ऐसे कोड संपादक में खुले हैं जो मार्कडाउन को समझता है, तो आप देखेंगे कि सब कुछ अच्छी तरह से स्वरूपित है।

रेपो को ज़िप फ़ाइल के रूप में कैसे डाउनलोड करें

यदि आप गिट के साथ सहज हैं

एक नई शाखा बनाएँ ताकि आप इस तरह की वस्तुओं की जाँच कर सकें, बस कोष्ठक में एक x डालें: [x]

  1. *** फोर्क द गिटहब रेपो:*** https://github.com/jwasham/coding-interview-university फोर्क बटन पर क्लिक करके।

    फोर्क द गिटहब रेपो

  2. अपने स्थानीय रेपो को क्लोन करें:

    git क्लोन [email protected]:<your_github_username>/coding-interview-university.git
    सीडी कोडिंग-साक्षात्कार-विश्वविद्यालय
    गिट चेकआउट-बी प्रगति
    git रिमोट jwasham जोड़ें https://github.com/jwasham/coding-interview-university
    गिट फ़ेच --all
    
  3. अपने परिवर्तन पूर्ण करने के बाद सभी बक्सों को X से चिह्नित करें:

    गिट जोड़ें।
    गिट प्रतिबद्ध-एम "चिह्नित एक्स"
    git rebase jwasham/main
    गिट पुश --सेट-अपस्ट्रीम मूल प्रगति
    गिट पुश --फोर्स
    

यह महसूस न करें कि आप पर्याप्त स्मार्ट नहीं हैं

वीडियो संसाधनों के बारे में एक नोट

कुछ वीडियो केवल कौरसेरा या एडएक्स कक्षा में नामांकन करके उपलब्ध होते हैं। इन्हें एमओओसी कहा जाता है। कभी-कभी कक्षाएं सत्र में नहीं होती हैं, इसलिए आपको कुछ महीने इंतजार करना पड़ता है, इसलिए आपके पास पहुंच नहीं है।

ऑनलाइन पाठ्यक्रम संसाधनों को मुफ्त और हमेशा उपलब्ध सार्वजनिक स्रोतों से बदलना बहुत अच्छा होगा, जैसे YouTube वीडियो (अधिमानतः विश्वविद्यालय व्याख्यान), ताकि आप लोग इनका कभी भी अध्ययन कर सकें, केवल तब नहीं जब कोई विशिष्ट ऑनलाइन पाठ्यक्रम सत्र में हो।

प्रोग्रामिंग भाषा चुनें

आपके द्वारा किए जाने वाले कोडिंग साक्षात्कार के लिए आपको एक प्रोग्रामिंग भाषा चुननी होगी, लेकिन आपको एक ऐसी भाषा भी ढूंढनी होगी जिसका उपयोग आप कंप्यूटर विज्ञान अवधारणाओं का अध्ययन करने के लिए कर सकें।

अधिमानतः भाषा वही होगी, इसलिए आपको केवल एक में कुशल होने की आवश्यकता है।

इस अध्ययन योजना के लिए

जब मैंने अध्ययन की योजना बनाई, तो मैंने इसमें से अधिकांश के लिए 2 भाषाओं का उपयोग किया: C और Python

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

यह मेरी पसंद है। आप वही करते हैं जो आपको पसंद है, बिल्कुल।

आपको इसकी आवश्यकता नहीं हो सकती है, लेकिन नई भाषा सीखने के लिए यहां कुछ साइटें दी गई हैं:

आपके कोडिंग इंटरव्यू के लिए

आप उस भाषा का उपयोग कर सकते हैं जिसमें आप साक्षात्कार के कोडिंग भाग को करने के लिए सहज हैं, लेकिन बड़ी कंपनियों के लिए, ये ठोस विकल्प हैं:

  • सी++
  • जावा
  • पायथन

आप इनका उपयोग भी कर सकते हैं, लेकिन पहले पढ़ लें। चेतावनी हो सकती है:

आपको भाषा में बहुत सहज होने और जानकार होने की आवश्यकता है।

विकल्पों के बारे में और पढ़ें:

[यहां भाषा-विशिष्ट संसाधन देखें] (प्रोग्रामिंग-भाषा-संसाधन.एमडी)

डेटा संरचनाओं और एल्गोरिदम के लिए पुस्तकें

यह पुस्तक कंप्यूटर विज्ञान के लिए आपकी नींव बनाएगी।

बस एक को चुनें, ऐसी भाषा में जिसमें आप सहज हों। आप बहुत सारी रीडिंग और कोडिंग कर रहे होंगे।

सी

पायथन

जावा

आपकी पंसद:

सी++

आपकी पंसद:

साक्षात्कार तैयारी पुस्तकें

आपको इनमें से एक गुच्छा खरीदने की ज़रूरत नहीं है। ईमानदारी से "कोडिंग साक्षात्कार को क्रैक करना" शायद पर्याप्त है, लेकिन मैंने खुद को और अधिक अभ्यास देने के लिए और अधिक खरीदा। लेकिन मैं हमेशा बहुत ज्यादा करता हूं।

मैंने ये दोनों खरीदे। उन्होंने मुझे काफी अभ्यास दिया।

यदि आपके पास अतिरिक्त समय है:

एक का चयन:

मेरी गलती मत करो

यह सूची कई महीनों में बढ़ी, और हाँ, यह हाथ से निकल गई।

यहां कुछ गलतियां हैं जो मैंने की हैं ताकि आपके पास बेहतर अनुभव हो। और आप महीनों का समय बचाएंगे।

1. आपको यह सब याद नहीं रहेगा

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

कृपया, पढ़ें ताकि आप मेरी गलतियाँ न करें:

रिटेनिंग कंप्यूटर साइंस नॉलेज

2. फ्लैशकार्ड का प्रयोग करें

समस्या को हल करने के लिए, मैंने एक छोटी फ्लैशकार्ड साइट बनाई जहां मैं 2 प्रकार के फ्लैशकार्ड जोड़ सकता था: सामान्य और कोड। प्रत्येक कार्ड में अलग-अलग स्वरूपण होते हैं। मैंने एक मोबाइल-फर्स्ट वेबसाइट बनाई है, इसलिए मैं अपने फोन या टैबलेट पर समीक्षा कर सकता हूं, चाहे मैं कहीं भी रहूं।

मुफ्त में अपना बनाएं:

मैं अपने फ्लैशकार्ड का उपयोग करने की अनुशंसा नहीं करता। बहुत अधिक हैं और उनमें से अधिकांश सामान्य ज्ञान हैं जिनकी आपको आवश्यकता नहीं है।

लेकिन अगर आप मेरी बात नहीं सुनना चाहते हैं, तो आप यहां जाएं:

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

फ्लैशकार्ड पर ध्यान दें: पहली बार जब आप पहचानते हैं कि आपको उत्तर पता है, तो इसे ज्ञात के रूप में चिह्नित न करें। आपको देखना है एक ही कार्ड और वास्तव में इसे जानने से पहले कई बार सही उत्तर दें। दोहराव उस ज्ञान को और गहरा कर देगा आपका दिमाग।

मेरी फ्लैशकार्ड साइट का उपयोग करने का एक विकल्प [अंकी] (http://ankisrs.net/) है, जिसकी मुझे कई बार सिफारिश की गई है। यह आपको याद रखने में मदद करने के लिए एक दोहराव प्रणाली का उपयोग करता है। यह उपयोगकर्ता के अनुकूल है, सभी प्लेटफार्मों पर उपलब्ध है और इसमें क्लाउड सिंक सिस्टम है। आईओएस पर इसकी कीमत 25 डॉलर है लेकिन यह अन्य प्लेटफॉर्म पर मुफ्त है।

Anki प्रारूप में मेरा फ्लैशकार्ड डेटाबेस: https://ankiweb.net/shared/info/25173560 (धन्यवाद @xiewenya)।

कुछ छात्रों ने सफेद स्थान के साथ स्वरूपण मुद्दों का उल्लेख किया है जिन्हें निम्नलिखित करके ठीक किया जा सकता है: डेक खोलें, कार्ड संपादित करें, कार्ड क्लिक करें, "स्टाइलिंग" रेडियो बटन चुनें, सदस्य "व्हाइट-स्पेस: प्री;" जोड़ें। कार्ड वर्ग के लिए।

3. जब आप सीख रहे हों तो साक्षात्कार के प्रश्नों की कोडिंग करें

यह बहुत महत्वपूर्ण है।

जब आप डेटा संरचना और एल्गोरिदम सीख रहे हों, तब साक्षात्कार के प्रश्नों की कोडिंग करना शुरू करें।

आप जो सीख रहे हैं उसे समस्याओं को हल करने के लिए लागू करने की आवश्यकता है, या आप भूल जाएंगे। मैंने यह गलती की।

एक बार जब आप कोई विषय सीख लेते हैं, और उसके साथ कुछ सहज महसूस करते हैं, उदाहरण के लिए, लिंक्ड सूचियां:

  1. [कोडिंग इंटरव्यू बुक्स] (#इंटरव्यू-प्रेप-बुक्स) (या कोडिंग प्रॉब्लम वेबसाइट्स, नीचे सूचीबद्ध) में से एक खोलें
  2. लिंक्ड सूचियों के संबंध में 2 या 3 प्रश्न करें।
  3. अगले सीखने के विषय पर आगे बढ़ें।
  4. बाद में, वापस जाएं और अन्य 2 या 3 लिंक की गई सूची की समस्याएं करें।
  5. अपने द्वारा सीखे गए प्रत्येक नए विषय के साथ ऐसा करें।

समस्याएँ तब करते रहें जब आप यह सब सीख रहे हों, उसके बाद नहीं।

आपको ज्ञान के लिए काम पर नहीं रखा जा रहा है, लेकिन आप ज्ञान को कैसे लागू करते हैं।

इसके लिए कई संसाधन हैं, जो नीचे सूचीबद्ध हैं। बढ़ा चल।

4. फोकस

बहुत सारे विकर्षण हैं जो मूल्यवान समय ले सकते हैं। फोकस और एकाग्रता कठिन है। कुछ संगीत चालू करें गीत के बिना और आप बहुत अच्छी तरह से ध्यान केंद्रित करने में सक्षम होंगे।

जिसे आप कवर नहीं देखेंगे

ये प्रचलित प्रौद्योगिकियां हैं लेकिन इस अध्ययन योजना का हिस्सा नहीं हैं:

  • एसक्यूएल
  • जावास्क्रिप्ट
  • HTML, CSS और अन्य फ्रंट-एंड प्रौद्योगिकियां

दैनिक योजना

यह कोर्स बहुत सारे विषयों पर चलता है। प्रत्येक में शायद आपको कुछ दिन लगेंगे, या शायद एक सप्ताह या उससे भी अधिक समय लगेगा। यह आपके शेड्यूल पर निर्भर करता है।

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

आप मेरा कोड यहाँ देख सकते हैं:

आपको प्रत्येक एल्गोरिदम को याद रखने की आवश्यकता नहीं है। आपको अपना खुद का कार्यान्वयन लिखने में सक्षम होने के लिए इसे पर्याप्त रूप से समझने में सक्षम होना चाहिए।

कोडिंग प्रश्न अभ्यास

यह यहाँ क्यों है? मैं साक्षात्कार के लिए तैयार नहीं हूं।

[फिर वापस जाएं और इसे पढ़ें।](#3-डू-कोडिंग-साक्षात्कार-प्रश्न-जबकि-आप-सीख रहे हैं)

आपको प्रोग्रामिंग समस्याओं का अभ्यास करने की आवश्यकता क्यों है:

  • समस्या की पहचान, और जहां सही डेटा संरचनाएं और एल्गोरिदम फिट होते हैं
  • समस्या के लिए आवश्यकताओं को इकट्ठा करना
  • समस्या के माध्यम से अपने तरीके से बात करना जैसे आप साक्षात्कार में करेंगे
  • व्हाइटबोर्ड या पेपर पर कोडिंग, कंप्यूटर पर नहीं
  • आपके समाधान के लिए समय और स्थान की जटिलता के साथ आ रहा है (नीचे बिग-ओ देखें)
  • अपने समाधानों का परीक्षण

एक साक्षात्कार में व्यवस्थित, संचार समस्या समाधान के लिए एक महान परिचय है। आप इसे प्रोग्रामिंग से प्राप्त करेंगे साक्षात्कार पुस्तकें भी, लेकिन मुझे यह बकाया लगा: एल्गोरिदम डिज़ाइन कैनवास

व्हाइटबोर्ड या पेपर पर कोड लिखें, कंप्यूटर पर नहीं। कुछ नमूना इनपुट के साथ परीक्षण करें। फिर इसे टाइप करें और कंप्यूटर पर इसका परीक्षण करें।

अगर आपके घर में व्हाइटबोर्ड नहीं है, तो किसी आर्ट स्टोर से एक बड़ा ड्राइंग पैड लें। आप सोफे पर बैठकर अभ्यास कर सकते हैं। यह मेरा "सोफा व्हाइटबोर्ड" है। मैंने फोटो में पेन को सिर्फ स्केल के लिए जोड़ा है। यदि आप कलम का उपयोग करते हैं, तो आप चाहते हैं कि आप मिटा सकें। जल्दी गन्दा हो जाता है। मैं पेंसिल और इरेज़र का उपयोग करता हूं।

मेरा सोफ़ा व्हाइटबोर्ड

कोडिंग प्रश्न अभ्यास प्रोग्रामिंग समस्याओं के उत्तर याद रखने के बारे में नहीं है।

कोडिंग समस्याएं

अपनी मुख्य कोडिंग साक्षात्कार पुस्तकें [यहां] (# साक्षात्कार-प्रीप-किताबें) न भूलें।

समस्याओं को सुलझा रहा:

कोडिंग साक्षात्कार प्रश्न वीडियो:

चुनौती साइटें:

आएँ शुरू करें

ठीक है, बहुत हुई बात, आइए जानें!

लेकिन जब आप सीखते हैं तो ऊपर से कोडिंग की समस्याएं करना न भूलें!

एल्गोरिथम जटिलता / बिग-ओ / स्पर्शोन्मुख विश्लेषण

खैर, बस इतना ही काफी है।

जब आप "Cracking the Coding Interview" के माध्यम से जाते हैं, तो इस पर एक अध्याय है, और अंत में देखने के लिए एक प्रश्नोत्तरी है यदि आप विभिन्न एल्गोरिदम की रनटाइम जटिलता की पहचान कर सकते हैं। यह एक सुपर समीक्षा और परीक्षण है।

डेटा संरचनाएं

  • सरणी

    • सरणियों के बारे में:
    • [] एक वेक्टर लागू करें (स्वचालित आकार बदलने के साथ परिवर्तनीय सरणी):
      • [] इंडेक्सिंग का उपयोग करने के बजाय इंडेक्स पर कूदने के लिए एरेज़ और पॉइंटर्स और पॉइंटर मैथ का उपयोग करके कोडिंग का अभ्यास करें।
      • [] आवंटित स्मृति के साथ नया कच्चा डेटा सरणी
        • हुड के नीचे इंट सरणी आवंटित कर सकते हैं, बस इसकी विशेषताओं का उपयोग न करें
          • 16 से शुरू करें, या यदि शुरुआती संख्या अधिक है, तो 2 की शक्ति का उपयोग करें - 16, 32, 64, 128
      • [] आकार () - वस्तुओं की संख्या
      • [] क्षमता () - इसमें रखी जा सकने वाली वस्तुओं की संख्या
      • खाली है()
      • at(index) - दिए गए इंडेक्स पर आइटम लौटाता है, अगर इंडेक्स सीमा से बाहर हो जाता है तो ब्लो अप हो जाता है
      • [] पुश (आइटम)
      • [] सम्मिलित करें (सूचकांक, आइटम) - सूचकांक में आइटम सम्मिलित करता है, उस सूचकांक के मूल्य और अनुगामी तत्वों को दाईं ओर स्थानांतरित करता है
      • [] प्रीपेन्ड (आइटम) - इंडेक्स 0 . पर ऊपर इंसर्ट का उपयोग कर सकते हैं
      • [] पॉप () - अंत से हटा दें, वापसी मूल्य
      • [] हटाएं (सूचकांक) - सूचकांक पर आइटम हटाएं, सभी अनुगामी तत्वों को बाईं ओर स्थानांतरित करें
      • [] हटाएं (आइटम) - मूल्य की तलाश करता है और इसे धारण करने वाले इंडेक्स को हटा देता है (भले ही कई जगहों पर)
      • [] ढूंढें (आइटम) - मूल्य की तलाश करता है और उस मूल्य के साथ पहली अनुक्रमणिका देता है, -1 अगर नहीं मिला
      • [] आकार बदलें (नई_क्षमता) // निजी फ़ंक्शन
        • जब आप क्षमता तक पहुँच जाते हैं, तो आकार को दोगुना करने के लिए आकार बदलें
        • किसी आइटम को पॉप करते समय, यदि आकार क्षमता का 1/4 है, तो आकार बदलकर आधा कर दें
    • समय
      • O(1) अंत में जोड़ने/निकालने के लिए (अधिक स्थान के लिए आवंटन के लिए परिशोधित), अनुक्रमणिका, या अद्यतन
      • ओ (एन) कहीं और डालने/निकालने के लिए
    • अंतरिक्ष
      • स्मृति में सन्निहित, इसलिए निकटता प्रदर्शन में मदद करती है
      • स्थान की आवश्यकता = (सरणी क्षमता, जो> = n है) * वस्तु का आकार, लेकिन भले ही 2n, फिर भी O(n)
  • लिंक्ड सूचियां

    • विवरण:
    • सी कोड (वीडियो) - संपूर्ण वीडियो नहीं, केवल नोड संरचना और स्मृति आवंटन के बारे में अंश
    • [] लिंक्ड लिस्ट बनाम एरेज़:
    • आपको लिंक की गई सूचियों (वीडियो) से क्यों बचना चाहिए
    • [] गोचा: आपको पॉइंटर टू पॉइंटर नॉलेज चाहिए: (जब आप किसी फ़ंक्शन के लिए एक पॉइंटर पास करते हैं जो उस पते को बदल सकता है जहां वह पॉइंटर इंगित करता है) यह पेज सिर्फ पीटीआर से पीटीआर तक को समझने के लिए है। मैं इस सूची ट्रैवर्सल शैली की अनुशंसा नहीं करता। चतुराई के कारण पठनीयता और रखरखाव को नुकसान होता है।
    • [] लागू करें (मैंने टेल पॉइंटर के साथ और बिना किया):
      • [] आकार () - सूची में डेटा तत्वों की संख्या लौटाता है
      • [] खाली () - खाली होने पर बूल सही हो जाता है
      • [] value_at(index) - nवें आइटम का मान लौटाता है (पहले के लिए 0 से शुरू)
      • [] push_front (मान) - सूची के सामने एक आइटम जोड़ता है
      • [] pop_front () - सामने की वस्तु को हटा दें और उसका मूल्य लौटा दें
      • [] push_back(value) - अंत में एक आइटम जोड़ता है
      • [] pop_back () - अंतिम वस्तु को हटाता है और उसका मूल्य लौटाता है
      • [] सामने () - सामने की वस्तु का मूल्य प्राप्त करें
      • [] वापस () - अंतिम वस्तु का मूल्य प्राप्त करें
      • [] सम्मिलित करें (सूचकांक, मूल्य) - सूचकांक में मूल्य डालें, इसलिए उस सूचकांक में वर्तमान आइटम को सूचकांक में नए आइटम द्वारा इंगित किया जाता है
      • [] मिटाएं (इंडेक्स) - दिए गए इंडेक्स पर नोड को हटा दें
      • [] value_n_from_end(n) - सूची के अंत से nवें स्थान पर नोड का मान लौटाता है
      • reverse() - reverses the list
      • remove_value(value) - removes the first item in the list with this value
    • Doubly-linked List
  • ढेर

    • स्टैक (वीडियो)
    • लागू नहीं होगा। सरणी के साथ कार्यान्वित करना तुच्छ है
  • कतार

    • कतार (वीडियो)
    • सर्कुलर बफर/फीफो
    • [] टेल पॉइंटर के साथ लिंक्ड-लिस्ट का उपयोग करके लागू करें:
      • एनक्यू (मान) - पूंछ पर स्थिति पर मूल्य जोड़ता है
      • dequeue () - मान लौटाता है और कम से कम हाल ही में जोड़े गए तत्व (सामने) को हटाता है
      • खाली()
    • [] निश्चित आकार के सरणी का उपयोग करके कार्यान्वित करें:
      • एनक्यू (मान) - उपलब्ध भंडारण के अंत में आइटम जोड़ता है
      • dequeue () - मान लौटाता है और कम से कम हाल ही में जोड़े गए तत्व को हटाता है
      • खाली()
      • भरा हुआ()
    • लागत:
      • लिंक की गई सूची का उपयोग करके एक खराब कार्यान्वयन जहां आप सिर पर कतार लगाते हैं और पूंछ पर dequeue ओ (एन) होगा क्योंकि आपको अगले से अंतिम तत्व की आवश्यकता होगी, जिससे प्रत्येक dequeue एक पूर्ण ट्रैवर्सल हो जाएगा
      • एनक्यू: ओ (1) (परिशोधन, लिंक्ड सूची और सरणी [जांच])
      • dequeue: O(1) (लिंक की गई सूची और सरणी)
      • खाली: ओ (1) (लिंक की गई सूची और सरणी)
  • हैश टेबल

  • ऑनलाइन पाठ्यक्रम: - [ ] कोर हैश टेबल्स (वीडियो) - [ ] डेटा संरचनाएं (वीडियो) - [ ] फोन बुक प्रॉब्लम (वीडियो) - [] वितरित हैश टेबल: - ड्रॉपबॉक्स (वीडियो) में तत्काल अपलोड और संग्रहण अनुकूलन - डिस्ट्रिब्यूटेड हैश टेबल्स (वीडियो)

    • [] रैखिक जांच का उपयोग करके सरणी के साथ कार्यान्वित करें
      • हैश (के, एम) - एम हैश टेबल का आकार है
      • जोड़ें (कुंजी, मान) - यदि कुंजी पहले से मौजूद है, तो मान अपडेट करें
      • मौजूद है (कुंजी)
      • चाबी देना)
      • हटाएं (कुंजी)

अधिक ज्ञान

पेड़

छँटाई

संक्षेप में, यहां 15 सॉर्टिंग एल्गोरिदम का एक दृश्य प्रतिनिधित्व है। यदि आपको इस विषय पर अधिक विवरण की आवश्यकता है, तो [कुछ विषयों पर अतिरिक्त विवरण] (# अतिरिक्त-विवरण-पर-कुछ-विषयों) में "सॉर्टिंग" अनुभाग देखें।

रेखांकन

कंप्यूटर विज्ञान में कई समस्याओं का प्रतिनिधित्व करने के लिए रेखांकन का उपयोग किया जा सकता है, इसलिए यह खंड लंबा है, जैसे पेड़ और छँटाई थी।

Even More Knowledge

बैकट्रैकिंग ब्लूप्रिंट: [जावा](https://leetcode.com/problems/combination-sum/discuss/16502/A-general-approach-to-backtracking-questions-in-Java-(Subsets-Permutations-Combination-Sum-) पलिंड्रोम-विभाजन)) पायथन

-### स्ट्रिंग खोज और जोड़तोड़ - [ ] सेडगेविक - प्रत्यय सरणी (वीडियो) - [ ] सेजविक - सबस्ट्रिंग सर्च (वीडियो) - [ ] 1. सबस्ट्रिंग सर्च का परिचय - [ ] 2. ब्रूट-फोर्स सबस्ट्रिंग सर्च - [ ] 3. नुथ-मॉरिस प्रैट - [ ] 4. बॉयर-मूर - [ ] 5. राबिन-कार्प - [ ] पाठ में खोज पैटर्न (वीडियो)

यदि आपको इस विषय पर अधिक विवरण की आवश्यकता है, तो [कुछ विषयों पर अतिरिक्त विवरण] (# अतिरिक्त-विवरण-पर-कुछ-विषयों) में "स्ट्रिंग मिलान" अनुभाग देखें।

अंतिम समीक्षा

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

अपना रिज्यूमे अपडेट करें

  • किताबों में तैयारी की जानकारी फिर से शुरू करें देखें: "कोडिंग इंटरव्यू क्रैकिंग" और "प्रोग्रामिंग इंटरव्यू एक्सपोज्ड"
  • मुझे नहीं पता कि यह कितना महत्वपूर्ण है (आप अपना खुद का शोध कर सकते हैं) लेकिन यहां आपके रेज़्यूमे को एटीएस के अनुरूप बनाने पर एक लेख है:
  • [गेल मैकडॉवेल (क्रैकिंग द कोडिंग इंटरव्यू के लेखक) द्वारा "दिस इज़ व्हाट ए गुड रिज्यूमे शुड लुक लाइक",
    • लेखक द्वारा नोट: "यह यूएस-केंद्रित रिज्यूमे के लिए है। भारत और अन्य देशों के लिए सीवी की अलग-अलग अपेक्षाएं हैं, हालांकि कई बिंदु समान होंगे।"
  • टेक इंटरव्यू हैंडबुक द्वारा "स्टेप-बाय-स्टेप रेज़्यूमे गाइड"
    • शुरू से अपना रिज्यूमे कैसे सेट करें, इस बारे में विस्तृत गाइड, प्रभावी रिज्यूमे सामग्री लिखें, इसे ऑप्टिमाइज़ करें और अपने रिज्यूमे का परीक्षण करें

एक नौकरी ढूंढो

साक्षात्कार प्रक्रिया और सामान्य साक्षात्कार तैयारी

नकली साक्षात्कार:

इंटरव्यू कब आए, इसके बारे में सोचें

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

  • आपको यह नौकरी क्यों चाहिए?

  • आपने कौन सी कठिन समस्या हल की है?

  • सबसे बड़ी चुनौतियों का सामना करना पड़ा?

  • सबसे अच्छा / सबसे खराब डिजाइन देखा गया?

  • मौजूदा उत्पाद में सुधार के लिए विचार

  • आप एक व्यक्ति के रूप में और एक टीम के हिस्से के रूप में सबसे अच्छा कैसे काम करते हैं?

  • आपका कौन सा कौशल या अनुभव भूमिका में संपत्ति होगा और क्यों?

  • [जॉब एक्स / प्रोजेक्ट वाई] में आपको सबसे ज्यादा क्या पसंद आया?

  • [जॉब एक्स / प्रोजेक्ट वाई] में आपको सबसे बड़ी चुनौती क्या थी?

  • [जॉब एक्स / प्रोजेक्ट वाई] में आपको सबसे कठिन बग क्या था?

  • आपने [जॉब x / प्रोजेक्ट y] में क्या सीखा?

  • [जॉब x / प्रोजेक्ट y] में आपने क्या बेहतर किया होगा?

  • यदि आपको इस प्रकार के साक्षात्कार प्रश्नों के अच्छे उत्तर प्राप्त करने में कठिनाई होती है, तो यहां कुछ उपाय दिए गए हैं:

साक्षात्कारकर्ता के लिए प्रश्न हैं

मेरे कुछ (मैं पहले से ही उत्तर जानता हूं, लेकिन उनकी राय या टीम परिप्रेक्ष्य चाहता हूं):

  • आपकी टीम कितनी बड़ी है?
  • आपका देव चक्र कैसा दिखता है? क्या आप वाटरफॉल/स्प्रिंट/फुर्तीली करते हैं?
  • क्या समय सीमा के लिए दौड़ आम है? या कोई लचीलापन है?
  • आपकी टीम में निर्णय कैसे लिए जाते हैं?
  • आप प्रति सप्ताह कितनी बैठकें करते हैं?
  • क्या आपको लगता है कि आपके काम का माहौल आपको ध्यान केंद्रित करने में मदद करता है?
  • आप किस पर काम कर रहे हैं?
  • आपको इसमें क्या पसंद है?
  • काम का जीवन कैसा है?
  • कार्य/जीवन संतुलन कैसा है?

एक बार आपको नौकरी मिल गई

बधाई हो!

सीखते रहो।

आप वास्तव में कभी नहीं कर रहे हैं।


*********************************************** *********************************************** *
*********************************************** *********************************************** *

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

*********************************************** *********************************************** *
*********************************************** *********************************************** *

अतिरिक्त पुस्तकें

यहां हैं ताकि आप किसी ऐसे विषय पर जा सकें जो आपको रुचिकर लगे।

  • यूनिक्स प्रोग्रामिंग पर्यावरण
    • एक बूढ़ी लेकिन एक गुडी
  • लिनक्स कमांड लाइन: एक पूर्ण परिचय
    • एक आधुनिक विकल्प
  • टीसीपी/आईपी इलस्ट्रेटेड सीरीज
  • हेड फर्स्ट डिज़ाइन पैटर्न
    • डिजाइन पैटर्न के लिए एक सौम्य परिचय
  • डिज़ाइन पैटर्न: पुन: प्रयोज्य ऑब्जेक्ट-ओरिएंट डी सॉफ़्टवेयर के तत्व
    • उर्फ ​​"गैंग ऑफ़ फोर" पुस्तक, या GOF
    • विहित डिजाइन पैटर्न पुस्तक
  • [एल्गोरिदम डिजाइन मैनुअल] (http://www.amazon.com/Algorithm-Design-Manual-Steven-Skiena/dp/1849967202) (स्कीना)
    • समीक्षा और समस्या की पहचान के रूप में
    • एल्गोरिथम कैटलॉग भाग आपको साक्षात्कार में मिलने वाली कठिनाई के दायरे से बाहर है
    • इस पुस्तक के 2 भाग हैं:
      • डेटा संरचनाओं और एल्गोरिदम पर कक्षा की पाठ्यपुस्तक
        • पेशेवरों:
          • एक अच्छी समीक्षा है क्योंकि कोई भी एल्गोरिदम पाठ्यपुस्तक होगी
          • उद्योग और शिक्षा जगत में समस्याओं को सुलझाने के उनके अनुभवों की अच्छी कहानियाँ
          • सी . में कोड उदाहरण
        • दोष:
          • सीएलआरएस जितना घना या अभेद्य हो सकता है, और कुछ मामलों में, सीएलआरएस कुछ विषयों के लिए एक बेहतर विकल्प हो सकता है
          • अध्याय 7, 8, 9 का पालन करने की कोशिश करना दर्दनाक हो सकता है, क्योंकि कुछ वस्तुओं को अच्छी तरह से समझाया नहीं गया है या मेरे पास जितना दिमाग है उससे अधिक दिमाग की आवश्यकता है
          • मुझे गलत मत समझो: मुझे स्कीना, उनकी शिक्षण शैली और तौर-तरीके पसंद हैं, लेकिन मैं स्टोनी ब्रुक सामग्री नहीं हो सकता
      • एल्गोरिथम कैटलॉग:
        • यही असली कारण है कि आप इस किताब को खरीदते हैं।
        • यह पुस्तक एक एल्गोरिथम संदर्भ के रूप में बेहतर है, न कि कुछ ऐसा जिसे आप कवर टू कवर पढ़ते हैं।
    • इसे किंडल पर किराए पर ले सकते हैं
    • उत्तर:
    • इरेटा
  • महान कोड लिखें: खंड 1: मशीन को समझना
    • पुस्तक 2004 में प्रकाशित हुई थी, और कुछ पुरानी है, लेकिन कंप्यूटर को संक्षेप में समझने के लिए यह एक बढ़िया संसाधन है
    • लेखक ने HLA का आविष्कार किया, इसलिए नमक के एक दाने के साथ HLA में उल्लेख और उदाहरण लें। व्यापक रूप से उपयोग नहीं किया जाता है, लेकिन असेंबली कैसा दिखता है इसके अच्छे उदाहरण हैं
    • आपको एक अच्छी नींव देने के लिए ये अध्याय पढ़ने लायक हैं:
      • अध्याय 2 - संख्यात्मक प्रतिनिधित्व
      • अध्याय 3 - बाइनरी अंकगणित और बिट संचालन
      • अध्याय 4 - फ़्लोटिंग-पॉइंट प्रतिनिधित्व
      • अध्याय 5 - चरित्र प्रतिनिधित्व
      • अध्याय 6 - स्मृति संगठन और पहुंच
      • अध्याय 7 - समग्र डेटा प्रकार और मेमोरी ऑब्जेक्ट
      • अध्याय 9 - सीपीयू वास्तुकला
      • अध्याय 10 - निर्देश सेट वास्तुकला
      • अध्याय 11 - स्मृति वास्तुकला और संगठन
  • एल्गोरिदम का परिचय
    • महत्वपूर्ण: इस पुस्तक को पढ़ने का केवल सीमित महत्व होगा। यह पुस्तक एल्गोरिदम और डेटा संरचनाओं की एक बेहतरीन समीक्षा है, लेकिन यह आपको अच्छा कोड लिखना नहीं सिखाएगी। आपको एक अच्छे समाधान को कुशलता से कोड करने में सक्षम होना चाहिए
    • उर्फ ​​सीएलआर, कभी-कभी सीएलआरएस, क्योंकि स्टीन खेल के लिए देर हो चुकी थी
  • [कंप्यूटर आर्किटेक्चर, छठा संस्करण: एक मात्रात्मक दृष्टिकोण] (https://www.amazon.com/dp/0128119055)
    • एक अमीर, अधिक अप-टू-डेट (2017) के लिए, लेकिन लंबे समय तक इलाज

सिस्टम डिज़ाइन, स्केलेबिलिटी, डेटा हैंडलिंग

यदि आपके पास 4+ वर्ष का अनुभव है तो आप सिस्टम डिज़ाइन प्रश्नों की अपेक्षा कर सकते हैं।

अतिरिक्त शिक्षा

मैंने उन्हें एक संपूर्ण सॉफ़्टवेयर इंजीनियर बनने में आपकी सहायता करने के लिए, और कुछ के बारे में जागरूक होने के लिए जोड़ा है प्रौद्योगिकियों और एल्गोरिदम, तो आपके पास एक बड़ा टूलबॉक्स होगा।


कुछ विषयों पर अतिरिक्त विवरण

मैंने इन्हें ऊपर प्रस्तुत किए गए कुछ विचारों को सुदृढ़ करने के लिए जोड़ा, लेकिन उन्हें शामिल नहीं करना चाहता था
ऊपर क्योंकि यह बहुत अधिक है। किसी विषय पर इसे ज़्यादा करना आसान है।
आप इस सदी में काम पर रखना चाहते हैं, है ना?

वीडियो श्रृंखला

वापस बैठो और आनंद लो।

कंप्यूटर विज्ञान पाठ्यक्रम

एल्गोरिदम कार्यान्वयन

कागजात

लाइसेंस

CC-BY-SA-4.0