मैंने मूल रूप से इसे एक सॉफ्टवेयर इंजीनियर बनने के लिए अध्ययन विषयों की एक छोटी टू-डू सूची के रूप में बनाया था, लेकिन यह उस बड़ी सूची तक बढ़ गया है जिसे आप आज देखते हैं। इस अध्ययन योजना को पढ़ने के बाद, मुझे काम पर रखा गया 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)प्रायोजक बनें और कोडिंग साक्षात्कार विश्वविद्यालय का समर्थन करें!
विशेष धन्यवाद:
क्लाउड के लिए बनाया गया देव वातावरण
एक बड़ी कंपनी के लिए सॉफ्टवेयर इंजीनियर बनने के लिए यह मेरी बहु-महीने की अध्ययन योजना है।
आवश्यक:
- कोडिंग के साथ थोड़ा अनुभव (चर, लूप, तरीके/कार्य, आदि)
- धैर्य
- समय ध्यान दें कि यह सॉफ्टवेयर इंजीनियरिंग के लिए एक अध्ययन योजना है, न कि वेब विकास के लिए। Google, Amazon जैसी बड़ी सॉफ्टवेयर कंपनियां, फेसबुक और माइक्रोसॉफ्ट सॉफ्टवेयर इंजीनियरिंग को वेब डेवलपमेंट से अलग मानते हैं। उदाहरण के लिए, अमेज़ॅन के पास है फ्रंटएंड इंजीनियर्स (FEE) और सॉफ्टवेयर डेवलपमेंट इंजीनियर्स (SDE)। ये 2 अलग-अलग भूमिकाएँ और साक्षात्कार हैं वे समान नहीं होंगे, क्योंकि प्रत्येक की अपनी योग्यताएं हैं। इन कंपनियों को कंप्यूटर विज्ञान के ज्ञान की आवश्यकता होती है सॉफ्टवेयर विकास / इंजीनियरिंग भूमिकाएँ।
- [यह क्या है?](#क्या-क्या है-यह)
- [इसका उपयोग क्यों करें?](# Why-use-it)
- [इसका उपयोग कैसे करें] (# कैसे-कैसे उपयोग करें-इसे)
- यह महसूस न करें कि आप पर्याप्त स्मार्ट नहीं हैं
- [वीडियो संसाधनों के बारे में एक नोट](#a-नोट-के बारे में-वीडियो-संसाधन)
- [एक प्रोग्रामिंग भाषा चुनें] (# प्रोग्रामिंग भाषा चुनें)
- डेटा संरचनाओं और एल्गोरिदम के लिए पुस्तकें
- साक्षात्कार तैयारी पुस्तकें
- [मेरी गलतियाँ न करें] (# मेरी गलतियाँ न करें)
- [जो आप कवर नहीं देखेंगे] (# क्या-आप-नहीं-देख-कवर)
- [दैनिक योजना](#दैनिक योजना)
- [कोडिंग प्रश्न अभ्यास] (# कोडिंग-प्रश्न-अभ्यास)
- [कोडिंग समस्याएं] (# कोडिंग-समस्याएं)
- [एल्गोरिदमिक जटिलता / बिग-ओ / एसिम्प्टोटिक विश्लेषण] (# एल्गोरिदमिक-जटिलता--बिग-ओ--एसिम्प्टोटिक-विश्लेषण)
- [डेटा संरचनाएं] (# डेटा-संरचनाएं)
- सरणी
- [लिंक की गई सूचियाँ] (# लिंक्ड-सूचियाँ)
- [स्टैक] (#स्टैक)
- [कतार] (# कतार)
- [हैश टेबल] (# हैश-टेबल)
- [अधिक ज्ञान](# अधिक-ज्ञान)
- पेड़
- पेड़ - नोट्स और पृष्ठभूमि
- बाइनरी सर्च ट्री: BSTs
- [ढेर/प्राथमिकता कतार/बाइनरी हीप](# हीप--प्राथमिकता-कतार--द्विआधारी-ढेर)
- संतुलित खोज पेड़ (सामान्य अवधारणा, विवरण नहीं)
- ट्रैवर्सल: प्रीऑर्डर, इनऑर्डर, पोस्टऑर्डर, बीएफएस, डीएफएस
- [छँटाई] (# छँटाई)
- चयन
- प्रविष्टि
- ढेर बनाएं और छांटें
- जल्दी से सुलझाएं
- मर्ज़ सॉर्ट
- ग्राफ
- निर्देशित
- अप्रत्यक्ष
- सहखंडज मैट्रिक्स
- निकटता सूची
- ट्रैवर्सल: बीएफएस, डीएफएस
- [और भी अधिक ज्ञान] (# और भी अधिक-ज्ञान)
- [पुनरावृत्ति] (# रिकर्सन)
- [डायनामिक प्रोग्रामिंग] (# डायनामिक-प्रोग्रामिंग)
- [डिज़ाइन पैटर्न] (# डिज़ाइन-पैटर्न)
- कॉम्बिनेटोरिक्स (n चुनें k) और प्रायिकता
- [एनपी, एनपी-पूर्ण और अनुमान एल्गोरिदम] (# एनपी-एनपी-पूर्ण-और-सन्निकटन-एल्गोरिदम)
- कंप्यूटर प्रोग्राम को कैसे प्रोसेस करते हैं
- [कैश] (# कैश)
- [प्रक्रियाएं और धागे] (# प्रक्रियाएं-और-धागे)
- [परीक्षण] (# परीक्षण)
- [स्ट्रिंग खोज और जोड़तोड़] (# स्ट्रिंग-खोज--हेरफेर)
- [कोशिश करता है] (# प्रयास करता है)
- [फ़्लोटिंग पॉइंट नंबर] (# फ़्लोटिंग-पॉइंट-नंबर)
- [यूनिकोड] (# यूनिकोड)
- एंडियननेस
- [नेटवर्किंग] (# नेटवर्किंग)
- [अंतिम समीक्षा](#अंतिम समीक्षा)
- [अपना रिज्यूमे अपडेट करें](#अपडेट-अपना रिज्यूमे)
- [नौकरी खोजें](# एक नौकरी खोजें)
- साक्षात्कार प्रक्रिया और सामान्य साक्षात्कार तैयारी
- [साक्षात्कार आने के समय के बारे में सोचें]
- [साक्षात्कारकर्ता के लिए प्रश्न हैं](#हैव-प्रश्न-के लिए-साक्षात्कारकर्ता)
- [वन्स यू हैव गॉट द जॉब] (# वन्स-यूव-गोट-द-जॉब)
***** इस बिंदु के नीचे सब कुछ वैकल्पिक है ----------------**
- [अतिरिक्त पुस्तकें](#अतिरिक्त पुस्तकें)
- [सिस्टम डिज़ाइन, स्केलेबिलिटी, डेटा हैंडलिंग] (# सिस्टम-डिज़ाइन-स्केलेबिलिटी-डेटा-हैंडलिंग) (यदि आपके पास 4+ वर्ष का अनुभव है)
- अतिरिक्त शिक्षण
- संकलक
- Emacs और vi(m)
- [यूनिक्स कमांड लाइन टूल्स] (# यूनिक्स-कमांड-लाइन-टूल्स)
- सूचना सिद्धांत
- [समता और हैमिंग कोड] (# समता--हैमिंग-कोड-वीडियो)
- [एंट्रॉपी] (#एंट्रॉपी)
- क्रिप्टोग्राफी
- संपीड़न
- कंप्यूटर सुरक्षा
- [कचरा संग्रह] (# कचरा संग्रह)
- [समानांतर प्रोग्रामिंग] (# समानांतर प्रोग्रामिंग)
- मैसेजिंग, सीरियलाइज़ेशन, और क्यूइंग सिस्टम
- ए*
- फास्ट फूरियर ट्रांसफॉर्म
- ब्लूम फ़िल्टर
- हाइपरलॉगलॉग
- इलाके-संवेदनशील हैशिंग
- वैन एम्दे बोस ट्री
- [संवर्धित डेटा संरचनाएं] (# संवर्धित-डेटा-संरचनाएं)
- संतुलित खोज वृक्ष
- एवीएल पेड़
- स्प्ले पेड़
- लाल/काले पेड़
- 2-3 सर्च ट्री
- 2-3-4 पेड़ (उर्फ 2-4 पेड़)
- एन-आर्य (के-आर्य, एम-आर्य) पेड़
- बी-पेड़
- के-डी पेड़
- छोड़ें सूचियां
- [नेटवर्क प्रवाह](# नेटवर्क-प्रवाह)
- [असंबद्ध सेट और संघ खोजें] (# असंबद्ध-सेट--संघ-खोज)
- [तेजी से प्रसंस्करण के लिए गणित](# गणित के लिए तेजी से प्रसंस्करण)
- [ट्रीप] (#treap)
- रैखिक प्रोग्रामिंग
- [ज्यामिति, उत्तल पतवार] (# ज्यामिति-उत्तल-पतवार-वीडियो)
- [असतत गणित] (# असतत-गणित)
- कुछ विषयों पर अतिरिक्त विवरण
- वीडियो श्रृंखला
- कंप्यूटर विज्ञान पाठ्यक्रम
- कागजात
अगर आप किसी बड़ी कंपनी में सॉफ्टवेयर इंजीनियर के तौर पर काम करना चाहते हैं तो ये बातें आपको जाननी चाहिए।
यदि आप कंप्यूटर विज्ञान में डिग्री प्राप्त करने से चूक गए, जैसे मैंने किया, तो यह आपको पकड़ लेगा और आपके जीवन के चार साल बचाएगा।
जब मैंने इस परियोजना को शुरू किया, तो मुझे ढेर से ढेर का पता नहीं था, बिग-ओ को कुछ भी नहीं पता था, या पेड़ों के बारे में कुछ भी नहीं पता था, या कैसे करना है एक ग्राफ पार करें। अगर मुझे एक सॉर्टिंग एल्गोरिदम कोड करना पड़ा, तो मैं आपको बता सकता हूं कि यह भयानक होता। मेरे द्वारा उपयोग की जाने वाली प्रत्येक डेटा संरचना भाषा में बनाई गई थी, और मुझे नहीं पता था कि उन्होंने कैसे काम किया हुड के नीचे बिल्कुल। मुझे कभी भी स्मृति का प्रबंधन नहीं करना पड़ा जब तक कि मैं जो प्रक्रिया चला रहा था वह "आउट ऑफ" मेमोरी" त्रुटि, और फिर मुझे एक समाधान खोजना होगा। मैंने अपने जीवन में कुछ बहुआयामी सरणियों का उपयोग किया और हजारों सहयोगी सरणियाँ, लेकिन मैंने कभी भी खरोंच से डेटा संरचनाएँ नहीं बनाईं।
यह एक लंबी योजना है। आपको महीनों लग सकते हैं। यदि आप पहले से ही इसके बारे में बहुत कुछ जानते हैं तो इसमें आपको बहुत कम समय लगेगा।
नीचे सब कुछ एक रूपरेखा है, और आपको ऊपर से नीचे तक वस्तुओं से निपटना चाहिए।
मैं गिटहब के विशेष मार्कडाउन स्वाद का उपयोग कर रहा हूं, जिसमें प्रगति को ट्रैक करने के लिए कार्य सूचियां शामिल हैं।
इस पृष्ठ पर, शीर्ष के पास कोड बटन पर क्लिक करें, फिर "ज़िप डाउनलोड करें" पर क्लिक करें। फ़ाइल को अनज़िप करें और आप टेक्स्ट फ़ाइलों के साथ काम कर सकते हैं।
यदि आप एक ऐसे कोड संपादक में खुले हैं जो मार्कडाउन को समझता है, तो आप देखेंगे कि सब कुछ अच्छी तरह से स्वरूपित है।
एक नई शाखा बनाएँ ताकि आप इस तरह की वस्तुओं की जाँच कर सकें, बस कोष्ठक में एक x डालें: [x]
-
*** फोर्क द गिटहब रेपो:***
https://github.com/jwasham/coding-interview-university
फोर्क बटन पर क्लिक करके। -
अपने स्थानीय रेपो को क्लोन करें:
git क्लोन [email protected]:<your_github_username>/coding-interview-university.git सीडी कोडिंग-साक्षात्कार-विश्वविद्यालय गिट चेकआउट-बी प्रगति git रिमोट jwasham जोड़ें https://github.com/jwasham/coding-interview-university गिट फ़ेच --all
-
अपने परिवर्तन पूर्ण करने के बाद सभी बक्सों को X से चिह्नित करें:
गिट जोड़ें। गिट प्रतिबद्ध-एम "चिह्नित एक्स" git rebase jwasham/main गिट पुश --सेट-अपस्ट्रीम मूल प्रगति गिट पुश --फोर्स
- सफल सॉफ्टवेयर इंजीनियर होशियार होते हैं, लेकिन बहुतों में असुरक्षा की भावना होती है कि वे पर्याप्त स्मार्ट नहीं हैं।
- निम्नलिखित वीडियो आपको इस असुरक्षा को दूर करने में मदद कर सकते हैं:
कुछ वीडियो केवल कौरसेरा या एडएक्स कक्षा में नामांकन करके उपलब्ध होते हैं। इन्हें एमओओसी कहा जाता है। कभी-कभी कक्षाएं सत्र में नहीं होती हैं, इसलिए आपको कुछ महीने इंतजार करना पड़ता है, इसलिए आपके पास पहुंच नहीं है।
ऑनलाइन पाठ्यक्रम संसाधनों को मुफ्त और हमेशा उपलब्ध सार्वजनिक स्रोतों से बदलना बहुत अच्छा होगा, जैसे YouTube वीडियो (अधिमानतः विश्वविद्यालय व्याख्यान), ताकि आप लोग इनका कभी भी अध्ययन कर सकें, केवल तब नहीं जब कोई विशिष्ट ऑनलाइन पाठ्यक्रम सत्र में हो।
आपके द्वारा किए जाने वाले कोडिंग साक्षात्कार के लिए आपको एक प्रोग्रामिंग भाषा चुननी होगी, लेकिन आपको एक ऐसी भाषा भी ढूंढनी होगी जिसका उपयोग आप कंप्यूटर विज्ञान अवधारणाओं का अध्ययन करने के लिए कर सकें।
अधिमानतः भाषा वही होगी, इसलिए आपको केवल एक में कुशल होने की आवश्यकता है।
जब मैंने अध्ययन की योजना बनाई, तो मैंने इसमें से अधिकांश के लिए 2 भाषाओं का उपयोग किया: C और Python
- सी: बहुत निम्न स्तर। आपको पॉइंटर्स और मेमोरी आवंटन/डीलोकेशन से निपटने की अनुमति देता है, ताकि आप डेटा संरचनाओं को महसूस कर सकें
और आपकी हड्डियों में एल्गोरिदम। पायथन या जावा जैसी उच्च स्तरीय भाषाओं में, ये आपसे छिपी हुई हैं। दिन-प्रतिदिन के काम में, यह बहुत बढ़िया है,
लेकिन जब आप सीख रहे हैं कि ये निम्न-स्तरीय डेटा संरचनाएं कैसे बनाई जाती हैं, तो धातु के करीब महसूस करना बहुत अच्छा होता है।
- सी हर जगह है। जब आप अध्ययन कर रहे हों तो आपको पुस्तकों, व्याख्यानों, वीडियो, हर जगह में उदाहरण दिखाई देंगे।
- द सी प्रोग्रामिंग लैंग्वेज, वॉल्यूम 2
- यह एक छोटी किताब है, लेकिन यह आपको सी भाषा पर एक अच्छी पकड़ देगी और यदि आप इसका थोड़ा अभ्यास करते हैं आप जल्दी से कुशल हो जाएंगे। C को समझने से आपको यह समझने में मदद मिलती है कि प्रोग्राम और मेमोरी कैसे काम करते हैं।
- आपको किताब में बहुत गहराई तक जाने की जरूरत नहीं है (या इसे खत्म भी करें)। बस वहां पहुंचें जहां आप सी में पढ़ने और लिखने में सहज हों।
- पुस्तक में प्रश्नों के उत्तर
- पायथन: आधुनिक और बहुत अभिव्यंजक, मैंने इसे सीखा क्योंकि यह बहुत उपयोगी है और मुझे एक साक्षात्कार में कम कोड लिखने की भी अनुमति देता है।
यह मेरी पसंद है। आप वही करते हैं जो आपको पसंद है, बिल्कुल।
आपको इसकी आवश्यकता नहीं हो सकती है, लेकिन नई भाषा सीखने के लिए यहां कुछ साइटें दी गई हैं:
- व्यायाम
- [कोडवार्स] (http://www.codewars.com)
- कोडिलिटी
- हैकरअर्थ
- [क्षेत्र ऑनलाइन न्यायाधीश (spoj)] (http://www.spoj.com/)
- कोडशेफ
- [कोडफोर्स] (https://codeforces.com/)
- स्केलर विषय
आप उस भाषा का उपयोग कर सकते हैं जिसमें आप साक्षात्कार के कोडिंग भाग को करने के लिए सहज हैं, लेकिन बड़ी कंपनियों के लिए, ये ठोस विकल्प हैं:
- सी++
- जावा
- पायथन
आप इनका उपयोग भी कर सकते हैं, लेकिन पहले पढ़ लें। चेतावनी हो सकती है:
- जावास्क्रिप्ट
- माणिक साक्षात्कार के लिए भाषा चुनने के बारे में मैंने यहां एक लेख लिखा है: कोडिंग इंटरव्यू के लिए एक भाषा चुनें। यह मूल लेख है जिस पर मेरी पोस्ट आधारित थी: [साक्षात्कार के लिए प्रोग्रामिंग भाषा चुनना](https://web.archive.org/web/20210516054124/http://blog.codingforinterviews.com/best-programming-language- नौकरियां/)
आपको भाषा में बहुत सहज होने और जानकार होने की आवश्यकता है।
विकल्पों के बारे में और पढ़ें:
[यहां भाषा-विशिष्ट संसाधन देखें] (प्रोग्रामिंग-भाषा-संसाधन.एमडी)
यह पुस्तक कंप्यूटर विज्ञान के लिए आपकी नींव बनाएगी।
बस एक को चुनें, ऐसी भाषा में जिसमें आप सहज हों। आप बहुत सारी रीडिंग और कोडिंग कर रहे होंगे।
- सी में एल्गोरिदम, भाग 1-5 (बंडल), तीसरा संस्करण
- बुनियादी बातों, डेटा संरचनाएं, छँटाई, खोज, और ग्राफ़ एल्गोरिथम
- पायथन में डेटा संरचनाएं और एल्गोरिदम
- गुडरिक, तमासिया, गोल्डवासेर द्वारा
- मुझे यह किताब पसंद आई। इसने सब कुछ और बहुत कुछ कवर किया।
- पाइथोनिक कोड
- माय ग्लोइंग बुक रिपोर्ट: https://startupnextdoor.com/book-report-data-structures-and-algorithms-in-python/
आपकी पंसद:
- गुडरिक, तमासिया, गोल्डवासेर
- [जावा में डेटा संरचनाएं और एल्गोरिदम] (https://www.amazon.com/Data-Structures-Algorithms-Michael-Goodrich/dp/1118771338/)
- सेडगेविक और वेन:
- [एल्गोरिदम] (https://www.amazon.com/Algorithms-4th-Robert-Sedgewick/dp/032157351X/)
- नि: शुल्क कौरसेरा पाठ्यक्रम जो पुस्तक को कवर करता है (लेखकों द्वारा पढ़ाया जाता है!):
आपकी पंसद:
- गुडरिक, तमासिया और माउंट
- सेडगेविक और वेन
- [सी ++ में एल्गोरिदम, भाग 1-4: बुनियादी बातों, डेटा संरचना, छँटाई, खोज] (https://www.amazon.com/Algorithms-Parts-1-4-Fundamentals-Structure/dp/0201350882/)
- [सी ++ भाग 5 में एल्गोरिदम: ग्राफ़ एल्गोरिदम] (https://www.amazon.com/Algorithms-Part-Graph-3rd-Pt-5/dp/020136183/)
आपको इनमें से एक गुच्छा खरीदने की ज़रूरत नहीं है। ईमानदारी से "कोडिंग साक्षात्कार को क्रैक करना" शायद पर्याप्त है, लेकिन मैंने खुद को और अधिक अभ्यास देने के लिए और अधिक खरीदा। लेकिन मैं हमेशा बहुत ज्यादा करता हूं।
मैंने ये दोनों खरीदे। उन्होंने मुझे काफी अभ्यास दिया।
- प्रोग्रामिंग इंटरव्यू एक्सपोज़्ड: कोडिंग योर वे थ्रू इंटरव्यू, चौथा संस्करण
- सी ++ और जावा में उत्तर
- कोडिंग इंटरव्यू को क्रैक करने के लिए यह एक अच्छा अभ्यास है
- ज्यादा मुश्किल नहीं है। एक साक्षात्कार में आप जो देखेंगे उससे अधिकतर समस्याएं आसान हो सकती हैं (जो मैंने पढ़ा है)
- [कोडिंग साक्षात्कार को क्रैक करना, छठा संस्करण] (http://www.amazon.com/Cracking-Coding-Interview-6th-Programming/dp/0984782850/)
- जावा में उत्तर
एक का चयन:
- प्रोग्रामिंग साक्षात्कार के तत्व (C++ संस्करण)
- पायथन में प्रोग्रामिंग साक्षात्कार के तत्व
- प्रोग्रामिंग साक्षात्कार के तत्व (जावा संस्करण) - सहयोगी परियोजना - पुस्तक में हर समस्या के लिए विधि आधार और परीक्षण मामले
यह सूची कई महीनों में बढ़ी, और हाँ, यह हाथ से निकल गई।
यहां कुछ गलतियां हैं जो मैंने की हैं ताकि आपके पास बेहतर अनुभव हो। और आप महीनों का समय बचाएंगे।
मैंने घंटों वीडियो देखे और प्रचुर मात्रा में नोट्स लिए, और महीनों बाद बहुत कुछ ऐसा था जो मुझे याद नहीं था। मैंने जाने में 3 दिन बिताए अपने नोट्स और फ्लैशकार्ड बनाकर, ताकि मैं समीक्षा कर सकूं। मुझे उस सब ज्ञान की आवश्यकता नहीं थी।
कृपया, पढ़ें ताकि आप मेरी गलतियाँ न करें:
रिटेनिंग कंप्यूटर साइंस नॉलेज।
समस्या को हल करने के लिए, मैंने एक छोटी फ्लैशकार्ड साइट बनाई जहां मैं 2 प्रकार के फ्लैशकार्ड जोड़ सकता था: सामान्य और कोड। प्रत्येक कार्ड में अलग-अलग स्वरूपण होते हैं। मैंने एक मोबाइल-फर्स्ट वेबसाइट बनाई है, इसलिए मैं अपने फोन या टैबलेट पर समीक्षा कर सकता हूं, चाहे मैं कहीं भी रहूं।
मुफ्त में अपना बनाएं:
मैं अपने फ्लैशकार्ड का उपयोग करने की अनुशंसा नहीं करता। बहुत अधिक हैं और उनमें से अधिकांश सामान्य ज्ञान हैं जिनकी आपको आवश्यकता नहीं है।
लेकिन अगर आप मेरी बात नहीं सुनना चाहते हैं, तो आप यहां जाएं:
ध्यान रखें कि मैं पानी में डूब गया था और मेरे पास असेंबली भाषा और पायथन ट्रिविया से लेकर मशीन लर्निंग और सांख्यिकी तक सब कुछ कवर करने वाले कार्ड हैं। जो आवश्यक है उसके लिए यह बहुत अधिक है।
फ्लैशकार्ड पर ध्यान दें: पहली बार जब आप पहचानते हैं कि आपको उत्तर पता है, तो इसे ज्ञात के रूप में चिह्नित न करें। आपको देखना है एक ही कार्ड और वास्तव में इसे जानने से पहले कई बार सही उत्तर दें। दोहराव उस ज्ञान को और गहरा कर देगा आपका दिमाग।
मेरी फ्लैशकार्ड साइट का उपयोग करने का एक विकल्प [अंकी] (http://ankisrs.net/) है, जिसकी मुझे कई बार सिफारिश की गई है। यह आपको याद रखने में मदद करने के लिए एक दोहराव प्रणाली का उपयोग करता है। यह उपयोगकर्ता के अनुकूल है, सभी प्लेटफार्मों पर उपलब्ध है और इसमें क्लाउड सिंक सिस्टम है। आईओएस पर इसकी कीमत 25 डॉलर है लेकिन यह अन्य प्लेटफॉर्म पर मुफ्त है।
Anki प्रारूप में मेरा फ्लैशकार्ड डेटाबेस: https://ankiweb.net/shared/info/25173560 (धन्यवाद @xiewenya)।
कुछ छात्रों ने सफेद स्थान के साथ स्वरूपण मुद्दों का उल्लेख किया है जिन्हें निम्नलिखित करके ठीक किया जा सकता है: डेक खोलें, कार्ड संपादित करें, कार्ड क्लिक करें, "स्टाइलिंग" रेडियो बटन चुनें, सदस्य "व्हाइट-स्पेस: प्री;" जोड़ें। कार्ड वर्ग के लिए।
यह बहुत महत्वपूर्ण है।
जब आप डेटा संरचना और एल्गोरिदम सीख रहे हों, तब साक्षात्कार के प्रश्नों की कोडिंग करना शुरू करें।
आप जो सीख रहे हैं उसे समस्याओं को हल करने के लिए लागू करने की आवश्यकता है, या आप भूल जाएंगे। मैंने यह गलती की।
एक बार जब आप कोई विषय सीख लेते हैं, और उसके साथ कुछ सहज महसूस करते हैं, उदाहरण के लिए, लिंक्ड सूचियां:
- [कोडिंग इंटरव्यू बुक्स] (#इंटरव्यू-प्रेप-बुक्स) (या कोडिंग प्रॉब्लम वेबसाइट्स, नीचे सूचीबद्ध) में से एक खोलें
- लिंक्ड सूचियों के संबंध में 2 या 3 प्रश्न करें।
- अगले सीखने के विषय पर आगे बढ़ें।
- बाद में, वापस जाएं और अन्य 2 या 3 लिंक की गई सूची की समस्याएं करें।
- अपने द्वारा सीखे गए प्रत्येक नए विषय के साथ ऐसा करें।
समस्याएँ तब करते रहें जब आप यह सब सीख रहे हों, उसके बाद नहीं।
आपको ज्ञान के लिए काम पर नहीं रखा जा रहा है, लेकिन आप ज्ञान को कैसे लागू करते हैं।
इसके लिए कई संसाधन हैं, जो नीचे सूचीबद्ध हैं। बढ़ा चल।
बहुत सारे विकर्षण हैं जो मूल्यवान समय ले सकते हैं। फोकस और एकाग्रता कठिन है। कुछ संगीत चालू करें गीत के बिना और आप बहुत अच्छी तरह से ध्यान केंद्रित करने में सक्षम होंगे।
ये प्रचलित प्रौद्योगिकियां हैं लेकिन इस अध्ययन योजना का हिस्सा नहीं हैं:
- एसक्यूएल
- जावास्क्रिप्ट
- HTML, CSS और अन्य फ्रंट-एंड प्रौद्योगिकियां
यह कोर्स बहुत सारे विषयों पर चलता है। प्रत्येक में शायद आपको कुछ दिन लगेंगे, या शायद एक सप्ताह या उससे भी अधिक समय लगेगा। यह आपके शेड्यूल पर निर्भर करता है।
प्रत्येक दिन, सूची में अगला विषय लें, उस विषय के बारे में कुछ वीडियो देखें, और फिर एक कार्यान्वयन लिखें उस डेटा संरचना या एल्गोरिथम की भाषा में जिसे आपने इस पाठ्यक्रम के लिए चुना है।
आप मेरा कोड यहाँ देख सकते हैं:
आपको प्रत्येक एल्गोरिदम को याद रखने की आवश्यकता नहीं है। आपको अपना खुद का कार्यान्वयन लिखने में सक्षम होने के लिए इसे पर्याप्त रूप से समझने में सक्षम होना चाहिए।
यह यहाँ क्यों है? मैं साक्षात्कार के लिए तैयार नहीं हूं।
[फिर वापस जाएं और इसे पढ़ें।](#3-डू-कोडिंग-साक्षात्कार-प्रश्न-जबकि-आप-सीख रहे हैं)
आपको प्रोग्रामिंग समस्याओं का अभ्यास करने की आवश्यकता क्यों है:
- समस्या की पहचान, और जहां सही डेटा संरचनाएं और एल्गोरिदम फिट होते हैं
- समस्या के लिए आवश्यकताओं को इकट्ठा करना
- समस्या के माध्यम से अपने तरीके से बात करना जैसे आप साक्षात्कार में करेंगे
- व्हाइटबोर्ड या पेपर पर कोडिंग, कंप्यूटर पर नहीं
- आपके समाधान के लिए समय और स्थान की जटिलता के साथ आ रहा है (नीचे बिग-ओ देखें)
- अपने समाधानों का परीक्षण
एक साक्षात्कार में व्यवस्थित, संचार समस्या समाधान के लिए एक महान परिचय है। आप इसे प्रोग्रामिंग से प्राप्त करेंगे साक्षात्कार पुस्तकें भी, लेकिन मुझे यह बकाया लगा: एल्गोरिदम डिज़ाइन कैनवास
व्हाइटबोर्ड या पेपर पर कोड लिखें, कंप्यूटर पर नहीं। कुछ नमूना इनपुट के साथ परीक्षण करें। फिर इसे टाइप करें और कंप्यूटर पर इसका परीक्षण करें।
अगर आपके घर में व्हाइटबोर्ड नहीं है, तो किसी आर्ट स्टोर से एक बड़ा ड्राइंग पैड लें। आप सोफे पर बैठकर अभ्यास कर सकते हैं। यह मेरा "सोफा व्हाइटबोर्ड" है। मैंने फोटो में पेन को सिर्फ स्केल के लिए जोड़ा है। यदि आप कलम का उपयोग करते हैं, तो आप चाहते हैं कि आप मिटा सकें। जल्दी गन्दा हो जाता है। मैं पेंसिल और इरेज़र का उपयोग करता हूं।
कोडिंग प्रश्न अभ्यास प्रोग्रामिंग समस्याओं के उत्तर याद रखने के बारे में नहीं है।
अपनी मुख्य कोडिंग साक्षात्कार पुस्तकें [यहां] (# साक्षात्कार-प्रीप-किताबें) न भूलें।
समस्याओं को सुलझा रहा:
कोडिंग साक्षात्कार प्रश्न वीडियो:
- आईडीसर्व (88 वीडियो)
- तुषार रॉय (5 प्लेलिस्ट)
- समस्या समाधान के पूर्वाभ्यास के लिए सुपर
- निक व्हाइट - LeetCode Solutions (187 वीडियो)
- समाधान और कोड की अच्छी व्याख्या
- आप कम समय में कई देख सकते हैं
- फिशरकोडर - लीटकोड सॉल्यूशंस
- नीटकोड - ब्लाइंड 75 लीटकोड सॉल्यूशंस
- समाधान और अजगर कोड की अच्छी व्याख्या
- सभी प्रश्नों की सूची के लिए एक्सेल शीट भी चेकआउट करें
- Github लिंक सभी समाधान कोड के लिए
- नीटकोड 150
चुनौती साइटें:
- [लीटकोड] (https://leetcode.com/)
- मेरी पसंदीदा कोडिंग समस्या साइट। यह आपके द्वारा तैयार किए जा रहे 1-2 महीनों के लिए सदस्यता राशि के लायक है।
- कोड वॉक-थ्रू के लिए ऊपर निक व्हाइट और फिशरकोडर वीडियो देखें।
- हैकररैंक
- टॉपकोडर
- गीक्स फॉर गीक्स
- [इंटरव्यूबिट] (https://www.interviewbit.com/)
- प्रोजेक्ट यूलर
- AlgoExpert
- Google इंजीनियरों द्वारा बनाया गया, यह आपके कौशल को सुधारने के लिए भी एक उत्कृष्ट संसाधन है।
ठीक है, बहुत हुई बात, आइए जानें!
लेकिन जब आप सीखते हैं तो ऊपर से कोडिंग की समस्याएं करना न भूलें!
- यहां लागू करने के लिए कुछ भी नहीं है, आप केवल वीडियो देख रहे हैं और नोट्स ले रहे हैं! वाह!
- यहां बहुत सारे वीडियो हैं। जब तक आप इसे समझ न लें, तब तक पर्याप्त देखें। आप हमेशा वापस आ सकते हैं और समीक्षा कर सकते हैं।
- अगर आप इसके पीछे का सारा गणित नहीं समझते हैं तो चिंता न करें।
- आपको बस यह समझने की जरूरत है कि बिग-ओ के संदर्भ में एल्गोरिथम की जटिलता को कैसे व्यक्त किया जाए।
- हार्वर्ड CS50 - स्पर्शोन्मुख संकेतन (वीडियो)
- बिग ओ नोटेशन (सामान्य त्वरित ट्यूटोरियल) (वीडियो)
- बिग ओ नोटेशन (और ओमेगा और थीटा) - सर्वोत्तम गणितीय व्याख्या (वीडियो)
- स्कीना (वीडियो)
- यूसी बर्कले बिग ओ (वीडियो)
- परिशोधन विश्लेषण (वीडियो)
- [] टॉपकोडर (पुनरावृत्ति संबंध और मास्टर प्रमेय शामिल हैं):
- [चीट शीट] (http://bigocheatsheet.com/)
खैर, बस इतना ही काफी है।
जब आप "Cracking the Coding Interview" के माध्यम से जाते हैं, तो इस पर एक अध्याय है, और अंत में देखने के लिए एक प्रश्नोत्तरी है यदि आप विभिन्न एल्गोरिदम की रनटाइम जटिलता की पहचान कर सकते हैं। यह एक सुपर समीक्षा और परीक्षण है।
-
- सरणियों के बारे में:
- सरणी (वीडियो)
- यूसी बर्कले CS61B - लीनियर और मल्टी-डिम एरेज़ (वीडियो) (15m 32s से देखना शुरू करें)
- डायनामिक एरेज़ (वीडियो)
- जैग्ड ऐरे (वीडियो)
- [] एक वेक्टर लागू करें (स्वचालित आकार बदलने के साथ परिवर्तनीय सरणी):
- [] इंडेक्सिंग का उपयोग करने के बजाय इंडेक्स पर कूदने के लिए एरेज़ और पॉइंटर्स और पॉइंटर मैथ का उपयोग करके कोडिंग का अभ्यास करें।
- [] आवंटित स्मृति के साथ नया कच्चा डेटा सरणी
- हुड के नीचे इंट सरणी आवंटित कर सकते हैं, बस इसकी विशेषताओं का उपयोग न करें
- 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
- Description (video)
- No need to implement
-
- स्टैक (वीडियो)
- लागू नहीं होगा। सरणी के साथ कार्यान्वित करना तुच्छ है
-
- कतार (वीडियो)
- सर्कुलर बफर/फीफो
- [] टेल पॉइंटर के साथ लिंक्ड-लिस्ट का उपयोग करके लागू करें:
- एनक्यू (मान) - पूंछ पर स्थिति पर मूल्य जोड़ता है
- dequeue () - मान लौटाता है और कम से कम हाल ही में जोड़े गए तत्व (सामने) को हटाता है
- खाली()
- [] निश्चित आकार के सरणी का उपयोग करके कार्यान्वित करें:
- एनक्यू (मान) - उपलब्ध भंडारण के अंत में आइटम जोड़ता है
- dequeue () - मान लौटाता है और कम से कम हाल ही में जोड़े गए तत्व को हटाता है
- खाली()
- भरा हुआ()
- लागत:
- लिंक की गई सूची का उपयोग करके एक खराब कार्यान्वयन जहां आप सिर पर कतार लगाते हैं और पूंछ पर dequeue ओ (एन) होगा क्योंकि आपको अगले से अंतिम तत्व की आवश्यकता होगी, जिससे प्रत्येक dequeue एक पूर्ण ट्रैवर्सल हो जाएगा
- एनक्यू: ओ (1) (परिशोधन, लिंक्ड सूची और सरणी [जांच])
- dequeue: O(1) (लिंक की गई सूची और सरणी)
- खाली: ओ (1) (लिंक की गई सूची और सरणी)
-
ऑनलाइन पाठ्यक्रम: - [ ] कोर हैश टेबल्स (वीडियो) - [ ] डेटा संरचनाएं (वीडियो) - [ ] फोन बुक प्रॉब्लम (वीडियो) - [] वितरित हैश टेबल: - ड्रॉपबॉक्स (वीडियो) में तत्काल अपलोड और संग्रहण अनुकूलन - डिस्ट्रिब्यूटेड हैश टेबल्स (वीडियो)
- [] रैखिक जांच का उपयोग करके सरणी के साथ कार्यान्वित करें
- हैश (के, एम) - एम हैश टेबल का आकार है
- जोड़ें (कुंजी, मान) - यदि कुंजी पहले से मौजूद है, तो मान अपडेट करें
- मौजूद है (कुंजी)
- चाबी देना)
- हटाएं (कुंजी)
- [] रैखिक जांच का उपयोग करके सरणी के साथ कार्यान्वित करें
-
- बाइनरी सर्च (वीडियो)
- बाइनरी सर्च (वीडियो)
- [विस्तार] (https://www.topcoder.com/thrive/articles/Binary%20Search)
- खाका
- अमल में लाना:
- द्विआधारी खोज (पूर्णांक के क्रमबद्ध सरणी पर)
- पुनरावर्तन का उपयोग कर द्विआधारी खोज
-
- बिट्स चीट शीट - आपको इनमें से कई के बारे में पता होना चाहिए 2 से 2 की शक्तियां (2^1 से 2^16 और 2^32)
- [] के साथ बिट्स में हेरफेर करने की वास्तव में अच्छी समझ प्राप्त करें: &, |, ^, ~, >>, <<
- प्रैक्टिस ऑपरेशंस
- [] 2s और 1s पूरक
- [] काउंट सेट बिट्स
- एक बाइट में बिट्स गिनने के 4 तरीके (वीडियो)
- काउंट बिट्स
- [32 बिट पूर्णांक में सेट बिट्स की संख्या की गणना कैसे करें](http://stackoverflow.com/questions/109023/how-to-count-the-number-of-set-bits-in-a-32 -बिट-पूर्णांक)
- [] स्वैप मान:
- निरपेक्ष मूल्य:
-
- [श्रृंखला: पेड़ (वीडियो)] (https://www.coursera.org/lecture/data-structs/trees-95qda)
- मूल वृक्ष निर्माण
- ट्रैवर्सल
- हेरफेर एल्गोरिदम
- बीएफएस (चौड़ाई-पहली खोज) और डीएफएस (गहराई-पहली खोज) (वीडियो)
- बीएफएस नोट:
- स्तर आदेश (बीएफएस, कतार का उपयोग करके)
- समय जटिलता: ओ (एन)
- अंतरिक्ष जटिलता: सर्वोत्तम: ओ (1), सबसे खराब: ओ (एन/2) = ओ (एन)
- डीएफएस नोट:
- समय जटिलता: ओ (एन)
- अंतरिक्ष जटिलता: सबसे अच्छा: ओ (लॉग एन) - औसत। पेड़ की ऊंचाई सबसे खराब: ओ (एन)
- क्रम में (डीएफएस: बाएं, स्वयं, दाएं)
- पोस्टऑर्डर (डीएफएस: बाएं, दाएं, स्वयं)
- प्रीऑर्डर (डीएफएस: स्वयं, बाएं, दाएं)
- बीएफएस नोट:
-
- बाइनरी सर्च ट्री रिव्यू (वीडियो)
- परिचय (वीडियो)
- एमआईटी (वीडियो)
- सी/सी++:
- बाइनरी सर्च ट्री - सी/सी++ (वीडियो) में कार्यान्वयन
- बीएसटी कार्यान्वयन - स्टैक और हीप में मेमोरी आवंटन (वीडियो)
- बाइनरी सर्च ट्री (वीडियो) में न्यूनतम और अधिकतम तत्व खोजें
- एक बाइनरी ट्री की ऊंचाई ज्ञात करें (वीडियो)
- बाइनरी ट्री ट्रैवर्सल - चौड़ाई-पहली और गहराई-पहली रणनीतियां (वीडियो)
- बाइनरी ट्री: लेवल ऑर्डर ट्रैवर्सल (वीडियो)
- बाइनरी ट्री ट्रैवर्सल: प्रीऑर्डर, इनऑर्डर, पोस्टऑर्डर (वीडियो)
- जांचें कि बाइनरी ट्री बाइनरी सर्च ट्री है या नहीं (वीडियो)
- बाइनरी सर्च ट्री (वीडियो) से एक नोड हटाएं
- बाइनरी सर्च ट्री (वीडियो) में क्रमागत उत्तराधिकारी
- अमल में लाना:
- [] डालें // ट्री में वैल्यू डालें
- [] get_node_count // संग्रहीत मूल्यों की गणना प्राप्त करें
- print_values // ट्री में मानों को न्यूनतम से अधिकतम तक प्रिंट करता है
- [] डिलीट_ट्री
- [] is_in_tree // अगर पेड़ में दिया गया मान मौजूद है तो सही है
- [] get_height // नोड्स में ऊंचाई लौटाता है (एकल नोड की ऊंचाई 1 है)
- [] get_min // ट्री में संग्रहीत न्यूनतम मान लौटाता है
- [] get_max // पेड़ में संग्रहीत अधिकतम मूल्य लौटाता है
- [] is_binary_search_tree
- delete_value
- [] get_successor // दिए गए मान के बाद ट्री में अगला-उच्चतम मान लौटाता है, -1 यदि कोई नहीं
-
- एक पेड़ के रूप में देखा जाता है, लेकिन आमतौर पर भंडारण में रैखिक होता है (सरणी, लिंक्ड सूची)
- [हीप] (https://en.wikipedia.org/wiki/Heap_(data_struct))
- परिचय (वीडियो)
- बेवकूफ कार्यान्वयन (वीडियो)
- बाइनरी ट्री (वीडियो)
- वृक्ष ऊंचाई टिप्पणी (वीडियो)
- बुनियादी संचालन (वीडियो)
- पूर्ण बाइनरी ट्री (वीडियो)
- स्यूडोकोड (वीडियो)
- हीप सॉर्ट - जंप टू स्टार्ट (वीडियो)
- हीप सॉर्ट (वीडियो)
- ढेर बनाना (वीडियो)
- एमआईटी: हीप्स एंड हीप सॉर्ट (वीडियो)
- सीएस 61बी व्याख्यान 24: प्राथमिकता कतारें (वीडियो)
- रैखिक समय BuildHeap (अधिकतम-ढेर)
- [] अधिकतम ढेर लागू करें:
- डालना
- [] sift_up - डालने के लिए आवश्यक
- [] get_max - अधिकतम आइटम को हटाए बिना लौटाता है
- [] get_size () - संग्रहीत तत्वों की वापसी संख्या
- [] is_empty () - यदि ढेर में कोई तत्व नहीं है, तो सत्य लौटाता है
- [] Extract_max - अधिकतम आइटम लौटाता है, इसे हटाता है
- [] sift_down - Extract_max . के लिए आवश्यक
- [] निकालें (x) - सूचकांक x . पर आइटम हटा देता है
- [] heapify - heap_sort . के लिए आवश्यक तत्वों की एक सरणी से एक ढेर बनाएं
- [] heap_sort () - एक अनसोल्ड एरे लें और इसे अधिकतम हीप या मिन हीप का उपयोग करके इन-प्लेस सॉर्ट किए गए एरे में बदल दें
-
टिप्पणियाँ:
- प्रकार लागू करें और सबसे अच्छा मामला / सबसे खराब स्थिति जानें, प्रत्येक की औसत जटिलता:
- कोई बबल सॉर्ट नहीं - यह भयानक है - O(n^2), सिवाय जब n <= 16
- [] एल्गोरिदम को छांटने में स्थिरता ("क्या क्विकसॉर्ट स्थिर है?")
- लिंक्ड सूचियों पर कौन से एल्गोरिदम का उपयोग किया जा सकता है? सरणी पर कौन सा? दोनों पर कौन सा?
- मैं एक लिंक्ड सूची को सॉर्ट करने की अनुशंसा नहीं करता, लेकिन मर्ज सॉर्ट करने योग्य है।
- लिंक्ड लिस्ट के लिए मर्ज सॉर्ट
- प्रकार लागू करें और सबसे अच्छा मामला / सबसे खराब स्थिति जानें, प्रत्येक की औसत जटिलता:
-
हीपसॉर्ट के लिए, ऊपर हीप डेटा संरचना देखें। ढेर छँटाई महान है, लेकिन स्थिर नहीं है
-
यूसी बरकेले:
-
[] मर्ज सॉर्ट कोड:
- [आउटपुट ऐरे (सी) का उपयोग करना] (http://www.cs.yale.edu/homes/aspnes/classes/223/examples/sorting/mergesort.c)
- [आउटपुट ऐरे (पायथन) का उपयोग करना] (https://github.com/jwasham/practice-python/blob/master/merge_sort/merge_sort.py)
- इन-प्लेस (C++)
-
[] त्वरित सॉर्ट कोड:
- [कार्यान्वयन (सी)] (http://www.cs.yale.edu/homes/aspnes/classes/223/examples/randomization/quick.c)
- [कार्यान्वयन (सी)] (https://github.com/jwasham/practice-c/blob/master/quick_sort/quick_sort.c)
- कार्यान्वयन (पायथन)
-
अमल में लाना:
- [] मर्जसॉर्ट: ओ (एन लॉग एन) औसत और सबसे खराब स्थिति
- [] क्विकसॉर्ट ओ (एन लॉग एन) औसत मामला
- चयन प्रकार और सम्मिलन प्रकार दोनों ओ (एन ^ 2) औसत और सबसे खराब स्थिति हैं
- हीपसॉर्ट के लिए, ऊपर हीप डेटा संरचना देखें
-
[] आवश्यक नहीं है, लेकिन मैंने उनकी सिफारिश की:
संक्षेप में, यहां 15 सॉर्टिंग एल्गोरिदम का एक दृश्य प्रतिनिधित्व है। यदि आपको इस विषय पर अधिक विवरण की आवश्यकता है, तो [कुछ विषयों पर अतिरिक्त विवरण] (# अतिरिक्त-विवरण-पर-कुछ-विषयों) में "सॉर्टिंग" अनुभाग देखें।
कंप्यूटर विज्ञान में कई समस्याओं का प्रतिनिधित्व करने के लिए रेखांकन का उपयोग किया जा सकता है, इसलिए यह खंड लंबा है, जैसे पेड़ और छँटाई थी।
-
टिप्पणियाँ:
- मेमोरी में ग्राफ को दर्शाने के 4 बुनियादी तरीके हैं:
- ऑब्जेक्ट्स और पॉइंटर्स
- सहखंडज मैट्रिक्स
- निकटता सूची
- आसन्न नक्शा
- प्रत्येक प्रतिनिधित्व और उसके पेशेवरों और विपक्षों से खुद को परिचित करें
- बीएफएस और डीएफएस - उनकी कम्प्यूटेशनल जटिलता, उनके व्यापार बंद, और उन्हें वास्तविक कोड में कैसे लागू किया जाए, इसके बारे में जानें
- जब कोई प्रश्न पूछा जाए, तो पहले ग्राफ़-आधारित समाधान देखें, फिर यदि कोई नहीं है तो आगे बढ़ें
- मेमोरी में ग्राफ को दर्शाने के 4 बुनियादी तरीके हैं:
-
[] एमआईटी (वीडियो):
-
[] स्कीएना व्याख्यान - महान परिचय:
- CSE373 2020 - लेक्चर 10 - ग्राफ़ डेटा स्ट्रक्चर (वीडियो)
- CSE373 2020 - व्याख्यान 11 - ग्राफ़ ट्रैवर्सल (वीडियो)
- CSE373 2020 - व्याख्यान 12 - गहराई पहली खोज (वीडियो)
- CSE373 2020 - व्याख्यान 13 - न्यूनतम फैले हुए पेड़ (वीडियो)
- CSE373 2020 - व्याख्यान 14 - न्यूनतम फैले हुए पेड़ (नहीं) (वीडियो)
- CSE373 2020 - लेक्चर 15 - ग्राफ़ एल्गोरिथम (2 नहीं) (वीडियो)
-
[] रेखांकन (समीक्षा और अधिक):
- 6.006 सिंगल-सोर्स शॉर्टेस्ट पाथ प्रॉब्लम (वीडियो)
- 6.006 डिजस्ट्रा (वीडियो)
- 6.006 बेलमैन-फोर्ड (वीडियो)
- 6.006 स्पीड अप दिज्क्स्ट्रा (वीडियो)
- अदुनी: ग्राफ़ एल्गोरिथम I - टोपोलॉजिकल सॉर्टिंग, न्यूनतम स्पैनिंग ट्री, प्राइम का एल्गोरिथम - लेक्चर 6 (वीडियो)
- अदुनी: ग्राफ़ एल्गोरिथम II - डीएफएस, बीएफएस, क्रुस्कल का एल्गोरिदम, संघ डेटा संरचना खोजें - व्याख्यान 7 (वीडियो)
- अदुनी: ग्राफ़ एल्गोरिथम III: सबसे छोटा रास्ता - व्याख्यान 8 (वीडियो)
- अदुनी: ग्राफ़ Alg. IV: ज्यामितीय एल्गोरिदम का परिचय - व्याख्यान 9 (वीडियो)
- सीएस 61बी 2014: भारित ग्राफ (वीडियो)
- लालची एल्गोरिदम: न्यूनतम फैले हुए पेड़ (वीडियो)
- मजबूत रूप से जुड़े घटक कोसाराजू का एल्गोरिथम ग्राफ़ एल्गोरिथम (वीडियो)
-
पूर्ण कौरसेरा कोर्स:
-
मैं लागू करूंगा:
- [] आसन्न सूची के साथ डीएफएस (पुनरावर्ती)
- [] आसन्न सूची के साथ डीएफएस (स्टैक के साथ पुनरावृत्त)
- [] आसन्न मैट्रिक्स के साथ डीएफएस (पुनरावर्ती)
- [] आसन्न मैट्रिक्स के साथ डीएफएस (स्टैक के साथ पुनरावृत्त)
- बीएफएस आसन्न सूची के साथ
- [] आसन्न मैट्रिक्स के साथ बीएफएस
- [] एकल-स्रोत सबसे छोटा पथ (दिज्क्स्ट्रा)
- न्यूनतम फैलाव वाला पेड़
- डीएफएस-आधारित एल्गोरिदम (ऊपर Aduni वीडियो देखें):
- [] साइकिल की जांच करें (टोपोलॉजिकल सॉर्ट के लिए आवश्यक है, क्योंकि हम शुरू करने से पहले साइकिल की जांच करेंगे)
- [] टोपोलॉजिकल सॉर्ट
- [] एक ग्राफ में जुड़े घटकों की गणना करें
- [] दृढ़ता से जुड़े घटकों की सूची बनाएं
- [] द्विदलीय ग्राफ के लिए जाँच करें
-
- स्टैनफोर्ड रिकर्सन और बैकट्रैकिंग पर व्याख्यान:
- इसका उपयोग कब करना उचित है?
- टेल रिकर्सन कैसे बेहतर नहीं है?
- [टेल रिकर्सन क्या है यह इतना बुरा क्यों है?](https://www.quora.com/What-is-tail-recursion- Why-is-it-so-bad)
- टेल रिकर्सन (वीडियो)
- किसी भी पुनरावर्ती समस्या को हल करने के लिए 5 सरल चरण (वीडियो)
बैकट्रैकिंग ब्लूप्रिंट: [जावा](https://leetcode.com/problems/combination-sum/discuss/16502/A-general-approach-to-backtracking-questions-in-Java-(Subsets-Permutations-Combination-Sum-) पलिंड्रोम-विभाजन)) पायथन
-
- आप शायद अपने साक्षात्कार में कोई गतिशील प्रोग्रामिंग समस्या नहीं देखेंगे, लेकिन यह पहचानने में सक्षम होने के लायक है गतिशील प्रोग्रामिंग के लिए एक उम्मीदवार के रूप में समस्या।
- यह विषय काफी कठिन हो सकता है, क्योंकि प्रत्येक डीपी घुलनशील समस्या को एक पुनरावर्ती संबंध के रूप में परिभाषित किया जाना चाहिए, और इसके साथ आना मुश्किल हो सकता है।
- मेरा सुझाव है कि जब तक आपको इसमें शामिल पैटर्न की ठोस समझ न हो, तब तक डीपी समस्याओं के कई उदाहरण देखें।
- [] वीडियो:
- स्किएना: CSE373 2020 - लेक्चर 19 - डायनेमिक प्रोग्रामिंग का परिचय (वीडियो)
- स्किएना: CSE373 2020 - लेक्चर 20 - एडिट डिस्टेंस (वीडियो)
- स्किएना: CSE373 2020 - व्याख्यान 20 - दूरी संपादित करें (जारी) (वीडियो)
- स्किएना: CSE373 2020 - लेक्चर 21 - डायनेमिक प्रोग्रामिंग (वीडियो)
- स्किएना: CSE373 2020 - व्याख्यान 21 - गतिशील प्रोग्रामिंग और समीक्षा (वीडियो)
- साइमनसन: डायनेमिक प्रोग्रामिंग 0 (59:18 बजे शुरू होता है) (वीडियो)
- साइमनसन: डायनेमिक प्रोग्रामिंग I - लेक्चर 11 (वीडियो)
- साइमनसन: डायनेमिक प्रोग्रामिंग II - लेक्चर 12 (वीडियो)
- [] व्यक्तिगत डीपी समस्याओं की सूची (प्रत्येक संक्षिप्त है): डायनेमिक प्रोग्रामिंग (वीडियो)
- येल व्याख्यान नोट्स:
- कौरसेरा:
-
[डीपी एल्गोरिथम (वीडियो) का रनिंग टाइम] (https://www.coursera.org/learn/algorithmic-thinking-2/lecture/nfK2r/running-time-of-the-dp-algorithm) - [ ] डीपी बनाम पुनरावर्ती कार्यान्वयन (वीडियो) - [ ] वैश्विक जोड़ीवार अनुक्रम संरेखण (वीडियो) - [ ] स्थानीय जोड़ीवार अनुक्रम संरेखण (वीडियो)
-
- त्वरित यूएमएल समीक्षा (वीडियो)
- ये पैटर्न सीखें:
- रणनीति
- [] सिंगलटन
- [] एडेप्टर
- [] प्रोटोटाइप
- डेकोरेटर
- [] आगंतुक
- [] कारखाना, अमूर्त कारखाना
- [] मुखौटा
- देखने वाला
- [] प्रॉक्सी
- प्रतिनिधि
- आज्ञा
- राज्य
- स्मृति चिन्ह
- [] पुनरावर्तक
- [] समग्र
- [] फ्लाईवेट
- वीडियो की शृंखला (27 वीडियो)
- पुस्तक: हेड फर्स्ट डिज़ाइन पैटर्न
- मुझे पता है कि विहित पुस्तक "डिज़ाइन पैटर्न: पुन: प्रयोज्य ऑब्जेक्ट-ओरिएंटेड सॉफ़्टवेयर के तत्व" है, लेकिन हेड फर्स्ट ओओ के शुरुआती लोगों के लिए बहुत अच्छा है।
- आसान संदर्भ: 101 डिज़ाइन पैटर्न और डेवलपर्स के लिए सुझाव
-
- गणित कौशल: भाज्य, क्रमचय और संयोजन कैसे खोजें (चुनें) (वीडियो)
- मेक स्कूल: प्रोबेबिलिटी (वीडियो)
- मेक स्कूल: मोर प्रोबेबिलिटी एंड मार्कोव चेन्स (वीडियो)
- खान अकादमी:
- कोर्स लेआउट:
- बस वीडियो - 41 (प्रत्येक सरल हैं और प्रत्येक छोटा है):
-
- एनपी-पूर्ण समस्याओं के सबसे प्रसिद्ध वर्गों के बारे में जानें, जैसे यात्रा विक्रेता और बस्ता समस्या, और जब कोई साक्षात्कारकर्ता आपसे वेश में पूछे तो उन्हें पहचानने में सक्षम हो।
- जानिए एनपी-पूर्ण का क्या मतलब है।
- कम्प्यूटेशनल जटिलता (वीडियो)
- [] साइमनसन:
- [] स्कीना:
- जटिलता: पी, एनपी, एनपी-पूर्णता, कटौती (वीडियो)
- जटिलता: सन्निकटन एल्गोरिदम (वीडियो)
- जटिलता: फिक्स्ड-पैरामीटर एल्गोरिदम (वीडियो)
- पीटर नॉरविग ने ट्रैवलिंग सेल्समैन की समस्या के निकट-इष्टतम समाधानों पर चर्चा की:
- यदि आपके पास सीएलआरएस में पृष्ठ 1048 - 1140 है।
-
- कंप्यूटर साइंस 162 - ऑपरेटिंग सिस्टम (25 वीडियो):
- प्रक्रियाओं और थ्रेड्स के लिए वीडियो देखें 1-11
- ऑपरेटिंग सिस्टम और सिस्टम प्रोग्रामिंग (वीडियो)
- एक प्रक्रिया और एक धागे में क्या अंतर है?
- कवर:
- प्रक्रियाएं, सूत्र, समवर्ती मुद्दे
- प्रक्रियाओं और धागे के बीच अंतर
- प्रक्रियाएं
- धागे
- ताले
- म्यूटेक्स
- सेमाफोरस
- मॉनिटर्स
- वे कैसे काम करते हैं?
- गतिरोध
- लाइवलॉक
- सीपीयू गतिविधि, इंटरप्ट, संदर्भ स्विचिंग
- मल्टीकोर प्रोसेसर के साथ आधुनिक समवर्ती निर्माण
- पेजिंग, सेगमेंटेशन और वर्चुअल मेमोरी (वीडियो)
- व्यवधान (वीडियो)
- प्रक्रिया संसाधन की जरूरत (मेमोरी: कोड, स्टैटिक स्टोरेज, स्टैक, हीप, और फाइल डिस्क्रिप्टर, i/o)
- एक ही प्रक्रिया में अन्य थ्रेड्स के साथ थ्रेड रिसोर्स की जरूरत (ऊपर के शेयर (माइनस स्टैक) लेकिन प्रत्येक का अपना पीसी, स्टैक काउंटर, रजिस्टर और स्टैक होता है)
- फोर्किंग वास्तव में कॉपी ऑन राइट (रीड-ओनली) है जब तक कि नई प्रक्रिया मेमोरी को नहीं लिखती है, तब यह पूरी कॉपी करता है।
- प्रसंग स्विचिंग
- ऑपरेटिंग सिस्टम और अंतर्निहित हार्डवेयर द्वारा संदर्भ स्विचिंग कैसे शुरू की जाती है?
- प्रक्रियाएं, सूत्र, समवर्ती मुद्दे
- सी++ में थ्रेड (श्रृंखला - 10 वीडियो)
- सीएस 377 स्प्रिंग '14: मैसाचुसेट्स विश्वविद्यालय से ऑपरेटिंग सिस्टम
- [] पायथन में संगामिति (वीडियो):
- कंप्यूटर साइंस 162 - ऑपरेटिंग सिस्टम (25 वीडियो):
-
- आच्छादित करना:
- यूनिट परीक्षण कैसे काम करता है
- नकली वस्तुएं क्या हैं
- एकीकरण परीक्षण क्या है
- निर्भरता इंजेक्शन क्या है
- जेम्स बाख के साथ एजाइल सॉफ्टवेयर टेस्टिंग (वीडियो)
- जेम्स बाख द्वारा सॉफ्टवेयर परीक्षण पर खुला व्याख्यान (वीडियो)
- स्टीव फ्रीमैन - टेस्ट-ड्रिवेन डेवलपमेंट (यही हमारा मतलब नहीं था) (वीडियो)
- निर्भरता इंजेक्शन:
- वीडियो
- [परीक्षण के ताओ] (http://jasonpolites.github.io/tao-of-testing/ch3-1.1.html)
- परीक्षा कैसे लिखें
- आच्छादित करना:
-### स्ट्रिंग खोज और जोड़तोड़ - [ ] सेडगेविक - प्रत्यय सरणी (वीडियो) - [ ] सेजविक - सबस्ट्रिंग सर्च (वीडियो) - [ ] 1. सबस्ट्रिंग सर्च का परिचय - [ ] 2. ब्रूट-फोर्स सबस्ट्रिंग सर्च - [ ] 3. नुथ-मॉरिस प्रैट - [ ] 4. बॉयर-मूर - [ ] 5. राबिन-कार्प - [ ] पाठ में खोज पैटर्न (वीडियो)
यदि आपको इस विषय पर अधिक विवरण की आवश्यकता है, तो [कुछ विषयों पर अतिरिक्त विवरण] (# अतिरिक्त-विवरण-पर-कुछ-विषयों) में "स्ट्रिंग मिलान" अनुभाग देखें।
-
- ध्यान दें कि विभिन्न प्रकार के प्रयास हैं। कुछ में उपसर्ग होते हैं, कुछ नहीं, और कुछ बिट्स के बजाय स्ट्रिंग का उपयोग करते हैं पथ को ट्रैक करने के लिए
- मैं कोड के माध्यम से पढ़ता हूं, लेकिन लागू नहीं करूंगा
- सेजविक - ट्राइज़ (3 वीडियो)
- डेटा संरचनाओं और प्रोग्रामिंग तकनीकों पर नोट्स
- लघु पाठ्यक्रम वीडियो:
- द ट्री: ए नेग्लेक्टेड डेटा स्ट्रक्चर
- टॉपकोडर - ट्राईज़ का उपयोग करना
- स्टैनफोर्ड लेक्चर (असली दुनिया में इस्तेमाल का मामला) (वीडियो)
- एमआईटी, उन्नत डेटा संरचनाएं, स्ट्रिंग्स (आधे रास्ते में बहुत अस्पष्ट हो सकती हैं) (वीडियो)
-
- पूर्ण न्यूनतम हर सॉफ्टवेयर डेवलपर बिल्कुल, सकारात्मक रूप से यूनिकोड और कैरेक्टर सेट के बारे में जानना चाहिए
- पाठ के साथ काम करने के लिए हर प्रोग्रामर को क्या बिल्कुल, सकारात्मक रूप से एन्कोडिंग और कैरेक्टर सेट के बारे में जानने की जरूरत है -### अंतहीनता
- [बिग एंड लिटिल एंडियन](https://web.archive.org/web/20180107141940/http://www.cs.umd.edu:80/class/sum2003/cmsc311/Notes/Data/endian. एचटीएमएल)
- बिग एंडियन बनाम लिटिल एंडियन (वीडियो)
- बिग एंड लिटिल एंडियन इनसाइड/आउट (वीडियो)
- कर्नेल देवों के लिए बहुत तकनीकी बात। यदि अधिकांश आपके सिर के ऊपर है तो चिंता न करें।
- पहला हाफ काफी है।
-
- यदि आपके पास नेटवर्किंग का अनुभव है या आप एक विश्वसनीयता इंजीनियर या संचालन इंजीनियर बनना चाहते हैं, तो प्रश्नों की अपेक्षा करें
- अन्यथा, यह जानना अच्छा है
- खान अकादमी
- यूडीपी और टीसीपी: ट्रांसपोर्ट प्रोटोकॉल की तुलना (वीडियो)
- टीसीपी/आईपी और ओएसआई मॉडल की व्याख्या! (वीडियो)
- इंटरनेट पर पैकेट ट्रांसमिशन। नेटवर्किंग और टीसीपी/आईपी ट्यूटोरियल। (वीडियो)
- HTTP (वीडियो)
- एसएसएल और एचटीटीपीएस (वीडियो)
- एसएसएल/टीएलएस (वीडियो)
- HTTP 2.0 (वीडियो)
- वीडियो सीरीज़ (21 वीडियो) (वीडियो)
- सबनेटिंग डिमिस्टिफाइड - भाग 5 सीआईडीआर नोटेशन (वीडियो)
- [] सॉकेट:
इस अनुभाग में छोटे वीडियो होंगे जिन्हें आप अधिकांश महत्वपूर्ण अवधारणाओं की समीक्षा करने के लिए बहुत तेज़ी से देख सकते हैं।
यदि आप अक्सर एक पुनश्चर्या चाहते हैं तो यह अच्छा है।
- [] 2-3 मिनट के लघु विषय वीडियो की श्रृंखला (23 वीडियो)
- 2-5 मिनट के लघु विषय वीडियो की श्रृंखला - माइकल साम्बोल (18 वीडियो):
- सेजविक वीडियो - एल्गोरिदम I
- सेजविक वीडियो - एल्गोरिदम II
- किताबों में तैयारी की जानकारी फिर से शुरू करें देखें: "कोडिंग इंटरव्यू क्रैकिंग" और "प्रोग्रामिंग इंटरव्यू एक्सपोज्ड"
- मुझे नहीं पता कि यह कितना महत्वपूर्ण है (आप अपना खुद का शोध कर सकते हैं) लेकिन यहां आपके रेज़्यूमे को एटीएस के अनुरूप बनाने पर एक लेख है:
- [कैसे बनाएं या जांचें कि आपका रिज्यूमे एटीएस के अनुरूप है या नहीं](https://ayedot.com/97/MiniBlog/Meaning-of-ATS-compliant-resume-and-How-to-create-ATS-Resume-for -मुक्त)
- [गेल मैकडॉवेल (क्रैकिंग द कोडिंग इंटरव्यू के लेखक) द्वारा "दिस इज़ व्हाट ए गुड रिज्यूमे शुड लुक लाइक",
- लेखक द्वारा नोट: "यह यूएस-केंद्रित रिज्यूमे के लिए है। भारत और अन्य देशों के लिए सीवी की अलग-अलग अपेक्षाएं हैं, हालांकि कई बिंदु समान होंगे।"
- टेक इंटरव्यू हैंडबुक द्वारा "स्टेप-बाय-स्टेप रेज़्यूमे गाइड"
- शुरू से अपना रिज्यूमे कैसे सेट करें, इस बारे में विस्तृत गाइड, प्रभावी रिज्यूमे सामग्री लिखें, इसे ऑप्टिमाइज़ करें और अपने रिज्यूमे का परीक्षण करें
- 2021 में इंजीनियरिंग इंटरव्यू कैसे पास करें
- तकनीकी भर्ती का रहस्योद्घाटन
- बिग 4 में नौकरी कैसे प्राप्त करें:
- कोडिंग इंटरव्यू सेट 1 को क्रैक करना:
- फेसबुक कोडिंग इंटरव्यू को क्रैक करना:
- तैयारी पाठ्यक्रम:
- सॉफ्टवेयर इंजीनियर इंटरव्यू अनलीशेड (पेड कोर्स):
- Google के किसी पूर्व साक्षात्कारकर्ता से सॉफ़्टवेयर इंजीनियर साक्षात्कार के लिए स्वयं को तैयार करने का तरीका जानें.
- पायथन फॉर डेटा स्ट्रक्चर्स, एल्गोरिदम, और इंटरव्यू (पेड कोर्स):
- एक पायथन केंद्रित साक्षात्कार तैयारी पाठ्यक्रम जिसमें डेटा संरचनाएं, एल्गोरिदम, नकली साक्षात्कार और बहुत कुछ शामिल है।
- पायथन का उपयोग करके डेटा संरचनाओं और एल्गोरिदम का परिचय (उडेसिटी फ्री कोर्स):
- एक मुफ्त पायथन केंद्रित डेटा संरचनाएं और एल्गोरिदम पाठ्यक्रम।
- डेटा संरचनाएं और एल्गोरिदम नैनोडेग्री! (उडेसिटी पेड नैनोडेग्री):
- साक्षात्कार और नौकरी के परिदृश्य के लिए तैयार करने में मदद करने के लिए एक समर्पित सलाहकार से 100 से अधिक डेटा संरचनाओं और एल्गोरिदम अभ्यास और मार्गदर्शन के साथ व्यावहारिक अभ्यास प्राप्त करें।
- बिहेवियरल इंटरव्यू ग्रोकिंग (शिक्षा मुक्त कोर्स):
- कई बार, यह आपकी तकनीकी योग्यता नहीं है जो आपको अपने सपनों की नौकरी में उतरने से रोकती है, यह है कि आप व्यवहारिक साक्षात्कार पर कैसा प्रदर्शन करते हैं।
- सॉफ्टवेयर इंजीनियर इंटरव्यू अनलीशेड (पेड कोर्स):
नकली साक्षात्कार:
- [Gainlo.co: बड़ी कंपनियों के नकली साक्षात्कारकर्ता] (http://www.gainlo.co/#!/) - मैंने इसका इस्तेमाल किया और इससे मुझे फोन स्क्रीन और साइट पर साक्षात्कार के लिए आराम करने में मदद मिली
- [प्रैम्प: पीयर-टू-पीयर मॉडल ऑफ़ प्रैक्टिस इंटरव्यूज़] (https://www.pramp.com/)
- interviewing.io: वरिष्ठ इंजीनियरों के साथ मॉक इंटरव्यू का अभ्यास करें - अनाम एल्गोरिथम/सिस्टम डिज़ाइन साक्षात्कार FAANG के वरिष्ठ इंजीनियरों के साथ गुमनाम रूप से
नीचे दी गई मदों की पंक्तियों के साथ आपको मिलने वाले लगभग 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+ वर्ष का अनुभव है तो आप सिस्टम डिज़ाइन प्रश्नों की अपेक्षा कर सकते हैं।
- कई विषयों और संसाधनों के साथ स्केलेबिलिटी और सिस्टम डिज़ाइन बहुत बड़े विषय हैं, क्योंकि सॉफ़्टवेयर/हार्डवेयर सिस्टम को डिज़ाइन करते समय विचार करने के लिए बहुत कुछ है जो स्केल कर सकता है। इस पर काफी समय बिताने की अपेक्षा करें
- विचार:
- मापनीयता
- बड़े डेटा सेट को एकल मानों पर डिस्टिल करें
- एक डेटा सेट को दूसरे में बदलना
- अश्लील रूप से बड़ी मात्रा में डेटा को संभालना
- प्रणाली की रूपरेखा
- सुविधाएँ सेट
- इंटरफेस
- वर्ग पदानुक्रम
- कुछ बाधाओं के तहत एक प्रणाली को डिजाइन करना
- सादगी और मजबूती
- ट्रेडऑफ़
- प्रदर्शन विश्लेषण और अनुकूलन
- मापनीयता
- यहां शुरू करें: सिस्टम डिजाइन प्राइमर
- [HiredInTech से सिस्टम डिज़ाइन] (http://www.hiredintech.com/system-design/)
- [तकनीकी साक्षात्कार में मैं डिजाइन प्रश्नों के उत्तर देने की तैयारी कैसे करूं?](https://www.quora.com/How-do-I-prepare-to-answer-design-questions-in-a-technical -साक्षात्कार?redirected_qid=1500023)
- [8 चीजें जो आपको सिस्टम डिजाइन साक्षात्कार से पहले पता होनी चाहिए](http://blog.gainlo.co/index.php/2015/10/22/8-things-you-need-to-know-before -सिस्टम-डिजाइन-साक्षात्कार/)
- डेटाबेस सामान्यीकरण - 1NF, 2NF, 3NF और 4NF (वीडियो)
- सिस्टम डिज़ाइन इंटरव्यू - इसमें बहुत सारे संसाधन हैं। लेखों और उदाहरणों के माध्यम से देखें। मैंने उनमें से कुछ को नीचे रखा है
- [कैसे एक सिस्टम डिजाइन साक्षात्कार में सफलता प्राप्त करें](https://web.archive.org/web/20120716060051/http://www.palantir.com/2011/10/how-to-rock-a-systems -डिजाइन-साक्षात्कार/)
- [संख्या सभी को पता होनी चाहिए](http://everythingisdata.wordpress.com/2009/10/17/numbers-everyone- should-know/)
- संदर्भ स्विच करने में कितना समय लगता है?
- डेटासेंटर में लेन-देन (वीडियो)
- कैप प्रमेय का एक सादा अंग्रेजी परिचय
- MIT 6.824: डिस्ट्रिब्यूटेड सिस्टम्स, स्प्रिंग 2020 (20 वीडियो)
- [] आम सहमति एल्गोरिदम:
- पैक्सोस - पैक्सोस एग्रीमेंट - कंप्यूटरफाइल (वीडियो)
- बेड़ा - बेड़ा वितरित आम सहमति एल्गोरिथ्म का एक परिचय (वीडियो)
- पढ़ने में आसान पेपर
- [इन्फोग्राफिक] (http://thesecretlivesofdata.com/raft/)
- [लगातार हैशिंग] (http://www.tom-e-white.com/2007/11/consistent-hashing.html)
- [नोएसक्यूएल पैटर्न] (http://horicky.blogspot.com/2009/11/nosql-patterns.html)
- [] मापनीयता:
- आपको इन सब की जरूरत नहीं है। बस कुछ ऐसे चुनें जिनमें आपकी रुचि हो।
- शानदार अवलोकन (वीडियो)
- [] लघु श्रृंखला:
- [क्लोन] (http://www.lecloud.net/post/7295452622/scalability-for-dummies-part-1-clones)
- [डेटाबेस] (http://www.lecloud.net/post/7994751381/scalability-for-dummies-part-2-database)
- [कैश] (http://www.lecloud.net/post/9246290032/scalability-for-dummies-part-3-cache)
- [एसिंक्रोनिज़्म] (http://www.lecloud.net/post/9699762917/scalability-for-dummies-part-4-asynchronism)
- [स्केलेबल वेब आर्किटेक्चर और डिस्ट्रिब्यूटेड सिस्टम्स] (http://www.aosabook.org/en/distsys.html)
- डिस्ट्रिब्यूटेड कंप्यूटिंग की गलतियां समझाया
- जेफ डीन - Google पर सॉफ्टवेयर सिस्टम बनाना और सीखे गए पाठ (वीडियो)
- स्केल के लिए आर्किटेक्चरिंग सिस्टम का परिचय
- ऐप इंजन और क्लाउड डेटास्टोर (वीडियो) का उपयोग करके मोबाइल गेम को वैश्विक दर्शकों तक पहुंचाना
- Google प्लैनेट-स्केल इंफ़्रा के लिए प्लैनेट-स्केल इंजीनियरिंग कैसे करता है (वीडियो)
- एल्गोरिदम का महत्व
- [शार्डिंग] (http://highscalability.com/blog/2009/8/6/an-unorthodox-approach-to-database-design-the-coming-of-the.html)
- लंबे गेम के लिए इंजीनियरिंग - एस्ट्रिड एटकिंसन कीनोट (वीडियो)
- 30 मिनट में 7 साल के YouTube मापनीयता पाठ
- [कैसे पेपैल ने केवल 8VMs का उपयोग करके प्रतिदिन अरबों लेन-देन किया](http://highscalability.com/blog/2016/8/15/how-paypal-scaled-to-billions-of-transactions-daily-using -जू.एचटीएमएल)
- बड़े डेटासेट में डुप्लीकेट कैसे निकालें
- जॉन कोवी के साथ एटीसी के पैमाने और इंजीनियरिंग संस्कृति के अंदर एक नज़र (वीडियो)
- व्हाट लेड अमेज़ॉन टू इट्स ओन माइक्रोसर्विसेज आर्किटेक्चर
- कंप्रेस करना या न करना, यह उबर का सवाल था
- [अनुमानित क्वेरी संसाधन का उपयोग कब किया जाना चाहिए?]
- [एकल डेटासेंटर से Google का ट्रांज़िशन, टू फ़ेलओवर, टू ए नेटिव मल्टीहोम आर्किटेक्चर]( http://highscalability.com/blog/2016/2/23/googles-transition-from-single-datacenter-to-failover- to-a-n.html)
- [इमेज ऑप्टिमाइजेशन टेक्नोलॉजी जो प्रतिदिन लाखों अनुरोधों को पूरा करती है](http://highscalability.com/blog/2016/6/15/the-image-optimization-technology-that-serves-millions-of-re .एचटीएमएल)
- एक पैट्रियन आर्किटेक्चर शॉर्ट
- [टिंडर: सबसे बड़े अनुशंसा इंजनों में से एक कैसे तय करता है कि आप आगे किसे देखेंगे?](http://highscalability.com/blog/2016/1/27/tinder-how-does-one-of- the-सबसे बड़ा-सिफारिश-इंजन-de.html)
- एक आधुनिक कैश का डिज़ाइन
- फेसबुक स्केल पर लाइव वीडियो स्ट्रीमिंग
- [अमेज़ॅन के एडब्ल्यूएस पर 11 मिलियन+ उपयोगकर्ताओं को स्केलिंग करने के लिए एक शुरुआती गाइड](http://highscalability.com/blog/2016/1/11/a-beginners-guide-to-scaling-to-11-million- users-on-amazons.html)
- संपूर्ण नेटफ्लिक्स स्टैक का एक 360 डिग्री दृश्य
- [विलंबता हर जगह है और यह आपको बिक्री पर खर्च करती है - इसे कैसे कुचलें] (http://highscalability.com/latency-everywhere-and-it-costs-you-sales-how-crush-it)
- [व्हाट पॉवर्स इंस्टाग्राम: सैकड़ों इंस्टेंस, दर्जनों टेक्नोलॉजीज] (http://instagram-engineering.tumblr.com/post/13649370142/what-powers-instagram-hundreds-of-instances)
- सेल्सफोर्स आर्किटेक्चर - हाउ वे हैंडल 1.3 बिलियन ट्रांजैक्शन ए डे
- [ईएसपीएन का आर्किटेक्चर स्केल पर - 100,000 दुह नुह नुह्स प्रति सेकेंड पर परिचालन](http://highscalability.com/blog/2013/11/4/espns-architecture-at-scale-operating-at-100000-duh -नुह-नुह.एचटीएमएल)
- सेवाओं को आपस में जोड़ने वाली कुछ तकनीकों के बारे में जानकारी के लिए नीचे "मैसेजिंग, सीरियलाइज़ेशन और क्यूइंग सिस्टम" देखें।
- ट्विटर:
- और भी अधिक के लिए, वीडियो श्रृंखला अनुभाग में "बड़े पैमाने पर डेटासेट खनन" वीडियो श्रृंखला देखें
- सिस्टम डिजाइन प्रक्रिया का अभ्यास करना: कागज पर काम करने की कोशिश करने के लिए यहां कुछ विचार दिए गए हैं, प्रत्येक में कुछ दस्तावेज हैं कि इसे वास्तविक दुनिया में कैसे संभाला गया था:
- समीक्षा करें: सिस्टम डिज़ाइन प्राइमर
- [HiredInTech से सिस्टम डिज़ाइन] (http://www.hiredintech.com/system-design/)
- चीट शीट
- बहे:
- समस्या और दायरे को समझें:
- साक्षात्कारकर्ता की सहायता से उपयोग के मामलों को परिभाषित करें
- अतिरिक्त सुविधाओं का सुझाव दें
- उन वस्तुओं को हटा दें जिन्हें साक्षात्कारकर्ता दायरे से बाहर मानता है
- मान लें कि उच्च उपलब्धता की आवश्यकता है, उपयोग के मामले के रूप में जोड़ें
- बाधाओं के बारे में सोचें:
- पूछें कि प्रति माह कितने अनुरोध हैं
- पूछें कि प्रति सेकंड कितने अनुरोध हैं (वे इसे स्वयंसेवा कर सकते हैं या आपको गणित कर सकते हैं)
- अनुमान पढ़ता है बनाम प्रतिशत लिखता है
- अनुमान लगाते समय 80/20 नियम को ध्यान में रखें
- प्रति सेकंड कितना डेटा लिखा जाता है
- 5 वर्षों में कुल संग्रहण की आवश्यकता
- प्रति सेकंड कितना डेटा पढ़ता है
- सार डिजाइन:
- परतें (सेवा, डेटा, कैशिंग)
- इन्फ्रास्ट्रक्चर: लोड बैलेंसिंग, मैसेजिंग
- सेवा को चलाने वाले किसी भी प्रमुख एल्गोरिथम का मोटे तौर पर अवलोकन
- बाधाओं पर विचार करें और समाधान निर्धारित करें
- समस्या और दायरे को समझें:
- व्यायाम:
- एक यादृच्छिक अद्वितीय आईडी जनरेशन सिस्टम डिज़ाइन करें
- [की-वैल्यू डेटाबेस डिज़ाइन करें] (http://www.slideshare.net/dvirsky/introduction-to-redis)
- तस्वीर साझा करने वाला सिस्टम डिज़ाइन करें
- एक सिफारिश प्रणाली डिजाइन करें
- [यूआरएल-शॉर्टनर सिस्टम डिज़ाइन करें: ऊपर से कॉपी किया गया] (http://www.hiredintech.com/system-design/the-system-design-process/)
- एक कैश सिस्टम डिज़ाइन करें
मैंने उन्हें एक संपूर्ण सॉफ़्टवेयर इंजीनियर बनने में आपकी सहायता करने के लिए, और कुछ के बारे में जागरूक होने के लिए जोड़ा है प्रौद्योगिकियों और एल्गोरिदम, तो आपके पास एक बड़ा टूलबॉक्स होगा।
-
- यूनिक्स-आधारित कोड संपादक से खुद को परिचित करें
- vi (एम):
- एमएसीएस:
-
द एब्सोल्यूट बिगिनर्स गाइड टू Emacs (डेविड विल्सन द्वारा वीडियो)
-
- मैंने नीचे दी गई सूची को अच्छे टूल से भरा।
- दे घुमा के
- बिल्ली
- ग्रेपी
- सेडो
- अजीब
- कर्ल या wget
- क्रम से लगाना
- त्रि
- uniq
- [स्ट्रेस] (https://en.wikipedia.org/wiki/Strace)
- tcpdump
-
- खान अकादमी
- मार्कोव प्रक्रियाओं के बारे में अधिक जानकारी:
- नीचे MIT 6.050J सूचना और एन्ट्रापी श्रृंखला में और देखें
-
- परिचय
- समता
- हैमिंग कोड:
- त्रुटि जांच
-
- नीचे दिए गए वीडियो भी देखें
- पहले सूचना सिद्धांत वीडियो देखना सुनिश्चित करें
- सूचना सिद्धांत, क्लाउड शैनन, एन्ट्रॉपी, अतिरेक, डेटा संपीड़न और बिट्स (वीडियो)
-
- नीचे दिए गए वीडियो भी देखें
- पहले सूचना सिद्धांत वीडियो देखना सुनिश्चित करें
- खान अकादमी सीरीज
- क्रिप्टोग्राफी: हैश फंक्शन
- क्रिप्टोग्राफी: एन्क्रिप्शन
-
- पहले सूचना सिद्धांत वीडियो देखना सुनिश्चित करें
- कंप्यूटरफाइल (वीडियो):
- कंप्रेसर हेड वीडियो
- (वैकल्पिक) Google डेवलपर लाइव: GZIP पर्याप्त नहीं है!
-
- बचत
- प्रोटोकॉल बफ़र्स
- [जीआरपीसी] (http://www.grpc.io/)
- [रेडिस] (http://redis.io/)
- [ट्यूटोरियल] (http://try.redis.io/)
- [अमेज़ॅन एसक्यूएस (कतार)] (https://aws.amazon.com/sqs/)
- अमेज़ॅन एसएनएस (पब-सब)
- RabbitMQ
- अजवाइन
- ZeroMQ
- [एक्टिवएमक्यू] (http://activemq.apache.org/)
- काफ्का
- MessagePack
- एव्रो
-
- एम बिट्स और के हैशिंग फ़ंक्शन के साथ ब्लूम फ़िल्टर को देखते हुए, सम्मिलन और सदस्यता परीक्षण दोनों ओ (के) हैं
- ब्लूम फिल्टर (वीडियो)
- ब्लूम फिल्टर | विशाल डेटासेट का खनन | स्टैनफोर्ड यूनिवर्सिटी (वीडियो)
- ट्यूटोरियल
- ब्लूम फ़िल्टर ऐप कैसे लिखें
-
- [केवल 1.5KB मेमोरी का उपयोग करके एक अरब विशिष्ट वस्तुओं की गणना कैसे करें](http://highscalability.com/blog/2012/4/5/big-data-counting-how-to-count-a-billion-distinct -ऑब्जेक्ट्स-us.html)
-
- दस्तावेजों की समानता निर्धारित करने के लिए प्रयुक्त
- MD5 या SHA के विपरीत जिनका उपयोग यह निर्धारित करने के लिए किया जाता है कि क्या 2 दस्तावेज़/स्ट्रिंग बिल्कुल समान हैं
- सिम्हाशिंग (उम्मीद है) मेड सिंपल
-
- फूट डालो और जीतो: वैन एम्दे बोस ट्री (वीडियो)
- [एमआईटी व्याख्यान नोट्स](https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-046j-design-and-analysis-of-algorithms-spring-2012/lecture-notes /MIT6_046JS12_lec15.pdf)
-
-
कम से कम एक प्रकार के संतुलित बाइनरी ट्री को जानें (और जानें कि इसे कैसे लागू किया जाता है):
-
"संतुलित खोज वृक्षों में, AVL और 2/3 वृक्ष अब अप्रचलित हैं, और लाल-काले वृक्ष अधिक लोकप्रिय प्रतीत होते हैं। एक विशेष रूप से दिलचस्प स्व-व्यवस्थित डेटा संरचना स्प्ले ट्री है, जो रोटेशन का उपयोग करती है किसी भी एक्सेस की गई कुंजी को रूट पर ले जाने के लिए।" - स्कीना
-
इनमें से मैंने एक स्प्ले ट्री लगाने का फैसला किया। मैंने जो पढ़ा है, उससे आप लागू नहीं करेंगे a आपके साक्षात्कार में संतुलित खोज वृक्ष। लेकिन मैं एक को कोडिंग करने के लिए एक्सपोजर चाहता था और चलो इसका सामना करते हैं, स्प्ले ट्री मधुमक्खी के घुटने हैं। मैंने बहुत सारे लाल-काले पेड़ कोड पढ़े हैं
- स्प्ले ट्री: सम्मिलित करें, खोजें, कार्यों को हटाएं यदि आप लाल/काले पेड़ को लागू करना समाप्त कर देते हैं तो इन्हें आजमाएं:
- खोज और सम्मिलन कार्य, हटाना छोड़ना
-
मैं बी-ट्री के बारे में अधिक जानना चाहता हूं क्योंकि यह बहुत बड़े डेटा सेट के साथ इतने व्यापक रूप से उपयोग किया जाता है
-
एवीएल पेड़
- प्रयोग में: मैं जो कह सकता हूं, उससे व्यवहार में इनका अधिक उपयोग नहीं किया जाता है, लेकिन मैं देख सकता था कि वे कहाँ होंगे: एवीएल पेड़ ओ (लॉग एन) खोज, सम्मिलन और हटाने का समर्थन करने वाली एक और संरचना है। यह अधिक कठोर है लाल-काले पेड़ों की तुलना में संतुलित, धीमी प्रविष्टि और हटाने के लिए अग्रणी लेकिन तेजी से पुनर्प्राप्ति। यह बनाता है डेटा संरचनाओं के लिए आकर्षक जिसे एक बार बनाया जा सकता है और पुनर्निर्माण के बिना लोड किया जा सकता है, जैसे भाषा शब्दकोश (या प्रोग्राम डिक्शनरी, जैसे असेंबलर या दुभाषिया के ऑपकोड)
- MIT AVL ट्री / AVL सॉर्ट (वीडियो)
- एवीएल पेड़ (वीडियो)
- एवीएल ट्री इंप्लीमेंटेशन (वीडियो)
- स्प्लिट एंड मर्ज
-
स्प्ले ट्री
- प्रयोग में: स्प्ले ट्री आमतौर पर कैश, मेमोरी एलोकेटर, राउटर, कचरा संग्रहकर्ता के कार्यान्वयन में उपयोग किया जाता है, डेटा संपीड़न, रस्सियों (लंबे पाठ स्ट्रिंग्स के लिए प्रयुक्त स्ट्रिंग का प्रतिस्थापन), Windows NT में (वर्चुअल मेमोरी में, नेटवर्किंग और फाइल सिस्टम कोड) आदि
- सीएस 61बी: स्प्ले ट्रीज़ (वीडियो)
- एमआईटी व्याख्यान: स्प्ले पेड़:
- बहुत मैथली हो जाता है, लेकिन आखिरी 10 मिनट जरूर देखें।
- वीडियो
-
लाल/काले पेड़
- ये एक 2-3 पेड़ का अनुवाद हैं (नीचे देखें)।
- प्रयोग में: लाल-काले पेड़ प्रविष्टि समय, विलोपन समय और खोज समय के लिए सबसे खराब स्थिति की गारंटी देते हैं। यह न केवल उन्हें समय-संवेदी अनुप्रयोगों जैसे रीयल-टाइम अनुप्रयोगों में मूल्यवान बनाता है, लेकिन यह उन्हें अन्य डेटा संरचनाओं में मूल्यवान बिल्डिंग ब्लॉक बनाता है जो सबसे खराब स्थिति की गारंटी प्रदान करते हैं; उदाहरण के लिए, कम्प्यूटेशनल ज्यामिति में उपयोग की जाने वाली कई डेटा संरचनाएं लाल-काले पेड़ों पर आधारित हो सकती हैं, और वर्तमान लिनक्स कर्नेल में प्रयुक्त पूर्णतः फेयर शेड्यूलर लाल-काले पेड़ों का उपयोग करता है। जावा के संस्करण 8 में, संग्रह हैश मैप को इस तरह संशोधित किया गया है कि लिंक्डलिस्ट का उपयोग करने के बजाय समान तत्वों को खराब के साथ संग्रहीत करने के लिए हैशकोड, एक लाल-काले पेड़ का उपयोग किया जाता है
- अदुनी - एल्गोरिथम - लेक्चर 4 (लिंक जंप टू स्टार्टिंग पॉइंट) (वीडियो)
- अदुनी - एल्गोरिदम - व्याख्यान 5 (वीडियो)
- रेड-ब्लैक ट्री
- एन इंट्रोडक्शन टू बाइनरी सर्च एंड रेड ब्लैक ट्री
-
2-3 पेड़ खोजें
- प्रयोग में: धीमी खोजों की कीमत पर 2-3 पेड़ों में तेजी से सम्मिलित होते हैं (चूंकि ऊंचाई एवीएल पेड़ों की तुलना में अधिक है)।
- आप 2-3 पेड़ का प्रयोग बहुत ही कम करेंगे क्योंकि इसके कार्यान्वयन में विभिन्न प्रकार के नोड्स शामिल हैं। इसकी जगह लोग लाल काले पेड़ों का इस्तेमाल करते हैं।
- 23-वृक्ष अंतर्ज्ञान और परिभाषा (वीडियो)
- 23-ट्री का बाइनरी व्यू
- 2-3 पेड़ (छात्र पाठ) (वीडियो)
-
2-3-4 पेड़ (उर्फ 2-4 पेड़)
- प्रयोग में: प्रत्येक 2-4 पेड़ के लिए, समान क्रम में डेटा तत्वों के साथ संबंधित लाल-काले पेड़ होते हैं। सम्मिलन और विलोपन 2-4 पेड़ों पर संचालन भी लाल-काले पेड़ों में रंग-फ्लिपिंग और घुमाव के बराबर है। इससे 2-4 पेड़ बन जाते हैं लाल-काले पेड़ों के पीछे के तर्क को समझने के लिए महत्वपूर्ण उपकरण, और यही कारण है कि कई परिचयात्मक एल्गोरिथम ग्रंथ परिचय देते हैं लाल-काले पेड़ों के ठीक पहले 2-4 पेड़, भले ही 2-4 पेड़ अक्सर व्यवहार में उपयोग नहीं किए जाते।
- सीएस 61बी व्याख्यान 26: संतुलित खोज पेड़ (वीडियो)
- नीचे ऊपर 234-पेड़ (वीडियो)
- ऊपर से नीचे 234-पेड़ (वीडियो)
-
N-ary (K-ary, M-ary) पेड़
- नोट: एन या के शाखा कारक है (अधिकतम शाखाएं)
- बाइनरी ट्री एक 2-एरी ट्री है, ब्रांचिंग फैक्टर के साथ = 2
- 2-3 पेड़ हैं 3-आर्य
- के-आरी ट्री
-
बी-पेड़
- मजेदार तथ्य: यह एक रहस्य है, लेकिन बी बोइंग, बैलेंस्ड या बायर (सह-आविष्कारक) के लिए खड़ा हो सकता है।
- प्रयोग में: बी-पेड़ व्यापक रूप से डेटाबेस में उपयोग किए जाते हैं। अधिकांश आधुनिक फाइल सिस्टम बी-पेड़ (या वेरिएंट) का उपयोग करते हैं। निम्न के अलावा डेटाबेस में इसका उपयोग, बी-पेड़ का उपयोग फाइल सिस्टम में भी किया जाता है ताकि मनमाने ढंग से त्वरित यादृच्छिक पहुंच की अनुमति मिल सके किसी विशेष फ़ाइल में ब्लॉक करें। मूल समस्या फ़ाइल ब्लॉक i एड्रेस को डिस्क ब्लॉक में बदल रही है (या शायद एक सिलेंडर-हेड-सेक्टर के लिए) पता
- बी-ट्री
- बी-ट्री डेटास्ट्रक्चर
- बी-पेड़ों का परिचय (वीडियो)
- बी-ट्री डेफिनिशन एंड इंसर्शन (वीडियो)
- बी-ट्री डिलीशन (वीडियो)
- MIT 6.851 - मेमोरी पदानुक्रम मॉडल (वीडियो) - कैशे-अनभिज्ञ बी-पेड़ों को शामिल करता है, बहुत ही रोचक डेटा संरचनाएं - पहले 37 मिनट बहुत तकनीकी हैं, छोड़े जा सकते हैं (बी ब्लॉक आकार, कैश लाइन आकार है)
-
-
- एक आयत या उच्च आयाम वाली वस्तु में अंकों की संख्या खोजने के लिए बढ़िया
- k-निकटतम पड़ोसियों के लिए एक अच्छा फिट
- केएनएन के-डी ट्री एल्गोरिथम (वीडियो)
-
- "ये कुछ हद तक एक पंथ डेटा संरचना के हैं" - स्कीना
- रैंडमाइज़ेशन: स्किप लिस्ट (वीडियो)
- एनिमेशन और थोड़ा और विवरण के लिए
-
- बाइनरी सर्च ट्री और ढेर का संयोजन
- ट्रीप
- डेटा संरचनाएं: समझाया गया जाल (वीडियो)
- सेट ऑपरेशंस में एप्लिकेशन
मैंने इन्हें ऊपर प्रस्तुत किए गए कुछ विचारों को सुदृढ़ करने के लिए जोड़ा, लेकिन उन्हें शामिल नहीं करना चाहता था
ऊपर क्योंकि यह बहुत अधिक है। किसी विषय पर इसे ज़्यादा करना आसान है।
आप इस सदी में काम पर रखना चाहते हैं, है ना?
-
ठोस
- बॉब मार्टिन सॉलिड प्रिंसिपल्स ऑफ़ ऑब्जेक्ट ओरिएंटेड एंड एजाइल डिज़ाइन (वीडियो)
- एस - एकल उत्तरदायित्व सिद्धांत | प्रत्येक वस्तु के लिए एकल जिम्मेदारी
- ओ - खुला/बंद सिद्धांत | उत्पादन स्तर पर वस्तुएं विस्तार के लिए तैयार हैं लेकिन संशोधन के लिए नहीं
- एल - लिस्कोव प्रतिस्थापन सिद्धांत | आधार वर्ग और व्युत्पन्न वर्ग 'आईएस ए' सिद्धांत का पालन करते हैं
- मैं - [इंटरफ़ेस अलगाव सिद्धांत] (http://www.oodesign.com/interface-segregation-principle.html) | ग्राहकों को उन इंटरफेस को लागू करने के लिए मजबूर नहीं किया जाना चाहिए जिनका वे उपयोग नहीं करते हैं
- डी - [निर्भरता उलटा सिद्धांत] (http://www.oodesign.com/dependency-inversion-principle.html) | वस्तुओं की संरचना में निर्भरता कम करें।
-
संघ-ढूंढें
-
अधिक गतिशील प्रोग्रामिंग (वीडियो)
- 6.006: डायनेमिक प्रोग्रामिंग I: फिबोनाची, सबसे छोटे रास्ते
- 6.006: डायनामिक प्रोग्रामिंग II: टेक्स्ट जस्टिफिकेशन, ब्लैकजैक
- 6.006: डीपी III: कोष्ठक, संपादित दूरी, नॅप्सैक
- [6.006: डीपी IV: गिटार फिंगरिंग, टेट्रिस, सुपर मारियो ब्रदर्स] (https://www.youtube.com/watch?v=i9OAOk0CUQE&ab_channel=MITOpenCourseWare)
- 6.046: डायनामिक प्रोग्रामिंग और उन्नत डीपी
- 6.046: डायनामिक प्रोग्रामिंग: ऑल-पेयर्स शॉर्टेस्ट पाथ्स
- 6.046: डायनामिक प्रोग्रामिंग (छात्र पाठ)
-
उन्नत ग्राफ़ प्रोसेसिंग (वीडियो)
-
एमआईटी संभाव्यता (मैथी, और धीरे-धीरे जाएं, जो मैथी चीजों के लिए अच्छा है) (वीडियो):
-
स्ट्रिंग मिलान
- राबिन-कार्प (वीडियो):
- नुथ-मॉरिस-प्रैट (केएमपी):
- बॉयर-मूर स्ट्रिंग सर्च एल्गोरिथम
- पाठ्यक्रम: स्ट्रिंग्स पर एल्गोरिदम
- बहुत अच्छी शुरुआत होती है, लेकिन जब तक यह केएमपी से आगे निकल जाता है तब तक यह जरूरत से ज्यादा जटिल हो जाता है
- कोशिशों की अच्छी व्याख्या
- छोड़ा जा सकता है
-
क्रमबद्ध करना
- स्टैनफोर्ड छँटाई पर व्याख्यान:
- शाई सिमोंसन, Aduni.org:
- स्टीवन स्कीएना छँटाई पर व्याख्यान:
वापस बैठो और आनंद लो।
-
व्यक्तिगत गतिशील प्रोग्रामिंग समस्याओं की सूची (प्रत्येक संक्षिप्त है)
-
उत्कृष्ट - एमआईटी कैलकुलस पर दोबारा गौर किया गया: सिंगल वेरिएबल कैलकुलस
-
एल्गोरिदम डिज़ाइन मैनुअल से स्कीएना व्याख्यान - CSE373 2020 - एल्गोरिदम का विश्लेषण (26 वीडियो)
-
OOSE: UML और Java का उपयोग करने वाला सॉफ़्टवेयर डेवलपर (21 वीडियो)
-
MIT 6.042J: कंप्यूटर साइंस के लिए गणित, फॉल 2010 (25 वीडियो)
-
MIT 6.824: डिस्ट्रिब्यूटेड सिस्टम्स, स्प्रिंग 2020 (20 वीडियो)
-
क्रिस्टोफ पार द्वारा क्रिप्टोग्राफी का परिचय
- [स्लाइड और समस्या सेट के साथ पाठ्यक्रम वेबसाइट] (http://www.crypto-textbook.com/)
-
खनन बड़े पैमाने पर डेटासेट - स्टैनफोर्ड यूनिवर्सिटी (94 वीडियो)
- क्लासिक पेपर पसंद हैं?
- 1978: अनुक्रमिक प्रक्रियाओं का संचार
- 2003: द गूगल फाइल सिस्टम
- 2012 में कोलोसस द्वारा प्रतिस्थापित
- 2004: MapReduce: बड़े समूहों पर सरलीकृत डेटा प्रोसेसिंग
- ज्यादातर क्लाउड डेटाफ्लो द्वारा प्रतिस्थापित किया गया?
- 2006: बिगटेबल: संरचित डेटा के लिए एक वितरित भंडारण प्रणाली
- 2006: लूजली-कपल्ड डिस्ट्रिब्यूटेड सिस्टम्स के लिए चब्बी लॉक सर्विस
- [2007: डायनमो: अमेज़ॅन का अत्यधिक उपलब्ध की-वैल्यू स्टोर] (http://s3.amazonaws.com/AllThingsDistributed/sosp/amazon-dynamo-sosp2007.pdf)
- डायनमो पेपर ने नोएसक्यूएल क्रांति की शुरुआत की
- 2007: प्रत्येक प्रोग्रामर को मेमोरी के बारे में क्या पता होना चाहिए (बहुत लंबा, और लेखक कुछ वर्गों को छोड़ने के लिए प्रोत्साहित करता है)
- 2012: एड्रेस सैनिटाइज़र: एक तेज़ पता सैनिटी चेकर:
- 2013: स्पैनर: Google का वैश्विक रूप से वितरित डेटाबेस:
- कागज
- [वीडियो] (https://www.usenix.org/node/170855)
- 2015: Google पर सतत पाइपलाइन
- 2015: बड़े पैमाने पर उच्च उपलब्धता: विज्ञापनों के लिए Google के डेटा इन्फ्रास्ट्रक्चर का निर्माण
- 2015: डेवलपर्स कैसे कोड की खोज करते हैं: एक केस स्टडी
- अधिक पेपर: 1,000 पेपर