wip marathi translation

Why use it?
 How to use it
 Don't feel you aren't smart enough
 A Note About Video Resources
 Choose a Programming Language
Optional Extra Topics & Resources
Table of Contents
This commit is contained in:
abhijeetsatpute 2024-04-28 03:18:33 +05:30
parent cc68ad1e52
commit d2c19ba4ba
1 changed files with 246 additions and 0 deletions

View File

@ -80,3 +80,249 @@
पूर्ण CS स्वतःशिक्षित कार्यक्रमसाठी, माझ्या अभ्यास योजनेतील संसाधने कामरान अहमदच्या कॉम्प्युटर सायन्स रोडमॅपमध्ये समाविष्ट केली गेली आहेत: https://roadmap.sh/computer-science
---
## विषयाची सूच
### अभ्यास योजना
- [हे काय आहे?](#what-is-it)
- [ते का वापरावे?](#why-use-it)
- [ते कसे वापरावे](#how-to-use-it)
- [तुम्हाला तुम्हाला मोठा प्रतिबंधित वाटत नसावं](#dont-feel-you-arent-smart-enough)
- [व्हिडिओ संसाधनांबद्दल एक नोट](#a-note-about-video-resources)
- [प्रोग्रामिंग भाषा निवडा](#choose-a-programming-language)
- [डेटा संरचनांसाठी पुस्तके आणि अल्गोरिदम्स](#books-for-data-structures-and-algorithms)
- [मुलाखत सज्जा पुस्तके](#interview-prep-books)
- [माझे चुकीचे का न करा](#dont-make-my-mistakes)
- [तुम्हाला काहीही दिसेल नाही याबद्दल](#what-you-wont-see-covered)
- [दैनिक योजना](#the-daily-plan)
- [कोडिंग प्रश्नांचे अभ्यास](#coding-question-practice)
- [कोडिंग समस्या](#coding-problems)
### Topics of Study
- [अल्गोरिदमिक जटिलता / बिग-ओ / अनिन्द्य विश्लेषण](#algorithmic-complexity--big-o--asymptotic-analysis)
- [डेटा संरचना](#data-structures)
- [अ‍ॅरे](#arrays)
- [लिंक्ड लिस्ट](#linked-lists)
- [स्टॅक](#stack)
- [क्यू](#queue)
- [हॅश टेबल](#hash-table)
- [अधिक माहिती](#more-knowledge)
- [बायनरी शोध](#binary-search)
- [बिटव्हाइझ कार्ये](#bitwise-operations)
- [झाडे](#trees)
- [झाडे - परिचय](#trees---intro)
- [बायनरी शोध झाडे: बीएसटी](#binary-search-trees-bsts)
- [हीप / प्राथमिक क्यू / बायनरी हीप](#heap--priority-queue--binary-heap)
- संतुलित शोध झाडे (सामान्य अवधारणा, तपशील नाही)
- पट्ट्यांतरण: प्रीऑर्डर, इनॉर्डर, पोस्टऑर्डर, बीएफएस, डीएफएस
- [क्रमवार सामुग्री व्यवस्थापन](#sorting)
- निवड
- उत्पादन
- हीपसॉर्ट
- क्विकसॉर्ट
- मर्जसॉर्ट
- [ग्राफ](#graphs)
- प्रेषित
- अप्रेषित
- अजॅसेन्सी मॅट्रिक्स
- अजॅसेन्सी लिस्ट
- पट्ट्यांतरण: बीएफएस, डीएफएस
- [अधिक माहिती](#even-more-knowledge)
- [पुनरावर्तन](#recursion)
- [डायनॅमिक प्रोग्रामिंग](#dynamic-programming)
- [नमूद प्रकार](#design-patterns)
- [कॉम्बिनेटोरिक्स (न निवडा क) आणि प्रायव्हबिलिटी](#combinatorics-n-choose-k--probability)
- [एनपी, एनपी-संपूर्ण आणि अंदाज अल्गोरिदम](#np-np-complete-and-approximation-algorithms)
- [कसे कंप्यूटर प्रोग्राम प्रक्रिया](#how-computers-process-a-program)
- [कॅश](#caches)
- [प्रक्रिया आणि थ्रेड](#processes-and-threads)
- [Testing](#testing)
- [स्पर्श आणि संदेशांचे शोध](#string-searching--manipulations)
- [त्राय](#tries)
- [फ्लोटिंग पॉइंट नंबर्स](#floating-point-numbers)
- [यूनिकोड](#unicode)
- [एंडियनेस](#endianness)
- [नेटवर्किंग](#networking)
- [निवड अभ्यास](#final-review)
### नोकरी मिळवणे
- [तुमचा रिझ्यूमे अद्यतन करा](#update-your-resume)
- [नोकरी शोधा](#find-a-job)
- [मुलाखत प्रक्रिया आणि सामान्य मुलाखत साजरी](#interview-process--general-interview-prep)
- [मुलाखत येत्या वेळेसाठी ध्यानात असल्याचं का](#be-thinking-of-for-when-the-interview-comes)
- [मुलाखतादारांसाठी प्रश्न](#have-questions-for-the-interviewer)
- [एकदा तुम्हाला नोकरी मिळाली नंतर](#once-youve-got-the-job)
**---------------- सर्व खालीलपैकी विचारण्यात आणणे ऐच्छिक आहे. ----------------**
### ऐच्छिक अतिरिक्त विषय आणि संसाधने
- [अतिरिक्त पुस्तके](#additional-books)
- [सिस्टम डिझाइन, स्केलेबिलिटी, डेटा हॅंडलिंग](#system-design-scalability-data-handling) (जेव्हा तुम्हाला 4+ वर्षांचा अनुभव आहे)
- [अधिक शिक्षण](#additional-learning)
- [कॉम्पायलर्स](#compilers)
- [इमॅक्स आणि व्हाई(एम)](#emacs-and-vim)
- [यूनिक्स कमांड लाईन टूल्स](#unix-command-line-tools)
- [माहिती सिद्धांत](#information-theory-videos)
- [पॅरिटी & हमिंग कोड](#parity--hamming-code-videos)
- [एन्ट्रॉपी](#entropy)
- [क्रिप्टोग्राफी](#cryptography)
- [संपीडन](#compression)
- [कंप्यूटर सुरक्षा](#computer-security)
- [कचरा संग्रह](#garbage-collection)
- [समान कार्यक्रमीकरण](#parallel-programming)
- [संदेशपाठ, सिरिअलिझेशन, आणि कतार प्रणाली](#messaging-serialization-and-queueing-systems)
- [ए\*](#a)
- [फास्ट फूरियर ट्रांसफॉर्म](#fast-fourier-transform)
- [ब्लूम फिल्टर](#bloom-filter)
- [हायपरलॉगलॉग](#hyperloglog)
- [स्थानिकता-संवेगी ह्याशिंग](#locality-sensitive-hashing)
- [वॅन एम्डे बोस झाडे](#van-emde-boas-trees)
- [अभिवृद्धित डेटा संरचना](#augmented-data-structures)
- [संतुलित शोध झाडे](#balanced-search-trees)
- AVL झाडे
- स्प्ले झाडे
- लाल/काळ झाडे
- 2-3 शोध झाडे
- 2-3-4 झाडे (किंवा 2-4 झाडे)
- N-अरे (K-अरे, M-अरे) झाडे
- B-झाडे
- [k-D झाडे](#k-d-trees)
- [स्किप झाडे](#skip-lists)
- [नेटवर्क फ्लो](#network-flows)
- [विभाजित सेट्स & युनियन फिंड](#disjoint-sets--union-find)
- [फास्ट प्रोसेसिंगसाठी गणित](#math-for-fast-processing)
- [ट्रेप](#treap)
- [लीनियर प्रोग्रामिंग](#linear-programming-videos)
- [ज्यामिती, कोणज्यात्मक कवळ](#geometry-convex-hull-videos)
- [विचारमगारी गणित](#discrete-math)
- [काही विषयांवर अतिरिक्त माहिती](#additional-detail-on-some-subjects)
- [व्हिडिओ सिरिज](#video-series)
- [कॉम्प्यूटर विज्ञान पाठ्यक्रम](#computer-science-courses)
- [पेपर्स](#papers)
---
## ते का वापरावे?
जर तुम्ही एक मोठ्या कंपनीसाठी सॉफ्टवेअर इंजिनिअर म्हणून काम करण्याची इच्छा असेल, तर तुम्हाला हे गोष्टी माहित असणे आवश्यक आहे.
जर तुम्ही कॉम्प्युटर सायन्समधील डिग्री मिस केली असेल, जसे मला झालेलं, तर हे तुम्हाला पूर्ण करून चार वर्ष तुमचे आयुष्य उजवावे.
जेव्हा मी हा प्रकल्प सुरू केला, तेव्हा मला एक स्टॅक आणि एक हिपचा फरक माहित नसलेलं, बिग-ओ काहीही नसलेलं, किव्हा वृक्षांचे काहीही माहित नसलेलं, किंवा ग्राफ कसे अनुवर्तन करावा ते. जर मला कोणत्याही स्थितीत सॉर्टिंग अ‍ॅल्गोरिथम कोड करायचा होता, तर मी तुम्हाला सांगू शकतो की तो खूप खराब होता. माझ्याकडून विकसित केलेल्या प्रत्येक डेटा संरचनेला भाषेतून बनवले गेले होते, आणि मला त्यांचं कसं काम करतं याचं माहित नसलं. मला कधीही मेमरी व्यवस्थापित करायची असते नाही, जर काही प्रक्रिया जी चालू होती त्याच्यावेळी "मेमरी आउट ऑफ मेमरी" चुका देतात, आणि तर मी काही मल्टीडिमेंशनल अ‍ॅरे वापरलेले होते आणि हजारों एसोसिएटिव्ह अ‍ॅरे, पण मला कधीही त्यांची संरचना सुरूसुरू करण्याची गरज नसली.
हा एक लांब प्लॅन आहे. तो तुमच्या अवधीत महिन्यां लागू शकतो. जर तुम्ही आधीच बरेच काही ओळखत असाल, तर तुम्हाला ते चांगल्या वेळेत अधिक काही नसेल.
## ते कसे वापरावे
सर्व काहीच्या खाली एक आउटलाईन आहे, आणि तुम्हाला पायासाठी प्रवृत्त करण्यासाठी वस्तुंची अगदीची क्रमवारी नक्कीच उघडवायची आहे.
मी GitHubचा विशेष मार्कडाउन फ्लेवर वापरत आहे, जिथे प्रगतीसाठी कामाच्या याद्या ट्रॅक करण्यासाठी कार्य सूची आहेत.
- [जास्तीत जास्त गिटहब-फ्लेवर्ड मार्कडाउनबद्दल अधिक माहिती](https://guides.github.com/features/mastering-markdown/#GitHub-flavored-markdown)
### जर तुम्हाला गिट वापरायला आवडत नसेल
या पानावर, प्रथमत: कोड बटणावर क्लिक करा, त्यानंतर "Download ZIP" वर क्लिक करा. झिप फाइल डाउनलोड करा आणि तुम्ही टेक्स्ट फाइलसह काम करू शकता.
जर तुम्ही मार्कडाउन काही समजता कोड एडिटरमध्ये उघडला असेल, तर तुम्हाला सर्व काही सुंदरपणे फॉर्मॅट केलेलं दिसेल.
![झिप फाइलस्वर कशी डाउनलोड करावी](https://d3j2pkmjtin6ou.cloudfront.net/how-to-download-as-zip.png)
### जर तुम्हाला गिट वापरायला सोपं असतं
नविन शाखा तयार करण्यासाठी, तुम्हाला हे प्रमाणित करण्यासाठी, फक्त ब्रॅकेट्समध्ये x ठेवा: [x]
1. **_GitHub रेपोची फोर्किंग:_** `https://github.com/jwasham/coding-interview-university` ला जाऊन फोर्क करा बटणावर क्लिक करून.
![GitHub रेपोची फोर्किंग](https://d3j2pkmjtin6ou.cloudfront.net/fork-button.png)
1. तुमच्या स्थानिक रेपोवर क्लोन करा:
```bash
git clone https://github.com/<तुमचे_GitHub_वपरकर्त>/coding-interview-university.git
cd coding-interview-university
git remote add upstream https://github.com/jwasham/coding-interview-university.git
git remote set-url --push upstream DISABLE # तुमचे व्यक्तिगत प्रगती मूळ रेपोवर पुश करण्यासाठी
```
1. बदलांची प्रगती पूर्ण केल्यानंतर सर्व बॉक्सवर X चिन्हांनी चिन्हांकित करा:
```bash
git commit -am "माझी व्यक्तिगत प्रगती चिन्हांकित केली"
git pull upstream main # तुमचा फॉर्क आपडेट ठेवा, मूळ रेपोमध्ये बदलांसाठी
git push # फक्त तुमच्या फोर्कमध्ये पुश करते
```
## तुम्हाला अशा वाटत नाही की तुम्ही पर्यायी आहात
- सफळ सॉफ्टवेअर इंजिनियर तेजस्वी आहेत, परंतु अनेकांना त्यांना अनेक तेजस्वी असल्याचं असंवेदनशीलतेवर विश्वास आहे.
- खालील व्हिडिओंमध्ये तुम्हाला ह्या असंवेदनशीलतेवर नियंत्रण मिळवायला मदत करू शकतील:
- [तेजस्वी प्रोग्रामर चा मिथ](https://www.youtube.com/watch?v=0SARbwvhupQ)
- [एकल्यांना जाणवणं खतरंयक](https://www.youtube.com/watch?v=1i8ylq4j_EY)
## व्हिडिओ संसाधनांबद्दल टीका
काही व्हिडिओंची उपलब्धता केवळ Coursera किंवा EdX वर नोंदवली जाते. ते MOOCs म्हणतात.
कधी कधी क्लास सत्र चालू नसत्या असताना तुम्हाला काही महिने थांबायला लागतात, त्यामुळे तुम्हाला प्रवेश मिळत नाही.
ह्या ऑनलाइन कोर्स संसाधनांवर, विनामूल्य आणि सर्वदा उपलब्ध सार्वजनिक स्रोतांमध्ये, YouTube व्हिडिओ (आणि आता उनिव्हर्सिटी लेक्चर्स प्रियतम) चे विचार करावे ह्याचं चांगलं असेल. त्यासाठी कि लोक येथे नेहमीच अध्ययन करू शकतात, केवळ काही ऑनलाइन कोर्स चालू असताना नाही.
## प्रोग्रामिंग भाषा निवडा
तुम्हाला कोडिंग साक्षात्कारांसाठी एक प्रोग्रामिंग भाषा निवडणे आवश्यक आहे,
परंतु संगणक विज्ञानाच्या अवधारणांसाठी एक भाषा साठवणे आवश्यक आहे.
प्रेफरेब्ली, भाषा समान असावी, तसेच तुम्ही फक्त एकाची प्रतिष्ठा असणे आवश्यक आहे.
### ह्या अभ्यास योजनेसाठी
मला अभ्यास योजना केल्यानंतर जास्तीत जास्त लष्करांसाठी मी २ भाषांचा वापर केला: C आणि Python
- C: खूप कमी स्तरावर. तुम्हाला पॉइंटर्स आणि मेमरी विभाजन / मेमरी साहित्य करण्यास मांडतो, म्हणजे तुम्ही डेटा संरचना
आणि अ‍ॅल्गोरिदमची अनुभव करता. उच्च स्तरावरील भाषांमध्ये जसे की Python किंवा Java, ते तुमच्यावरून लपवलेले आहेत. दिवसांतील कामात, हे अद्भुत आहे,
परंतु केवळ जेणेकरून तुम्ही या खाली स्थितीकिंवा अ‍ॅल्गोरिदमच्या खूप कमी स्तरावरील डेटा संरचना कसे तयार केले हे समजून घेणे अद्भुत आहे.
- C व्यापारच्या आहे. तुम्हाला पुस्तके, व्याख्याने, व्हिडिओ, _सर्वजगात_ दरम्यान उदाहरणे दिसेल जेणेकरून तुम्ही अभ्यास करत असताना.
- [The C Programming Language, 2nd Edition](https://www.amazon.com/Programming-Language-Brian-W-Kernighan/dp/0131103628)
- ही लहान पुस्तक आहे, परंतु ती तुम्हाला C भाषेत एक महत्त्वाची परिपूर्ण प्रतिष्ठा देईल आणि जर तुम्ही थोडी कसरत करता
तर तुम्ही लवकरच उत्तम होईल. C समजल्याने तुम्हाला कसं काम करतं हे समजायला मदत करतं.
- तुम्हाला पुस्तकात खूप जास्त अगाऊ जाऊन आवश्यक नाही (किंवा त्याच्यातून संपूर्ण केले जाऊन). फक्त ह्या अंतर्गत जाऊन येत आहे की तुम्हाला सीतीत वाचणे आणि लिहिणे कशी करावे हे आत्ता तुमच्याकडून समजले जाईल.
- Python: आधुनिक आणि खूप व्याक्तिपूर्ण, मी त्याला शिकला कारण हे फक्त खूप उपयुक्त आहे आणि आपल्याला साक्षात्कारात कमी कोड लिहायला परवानगी देते.
ह्या माझी प्राधान्य. प्रियंकर तुम्ही काय करू इच्छिता, नातं.
तुम्हाला ती आवश्यक असणार नसेल, परंतु एक नवीन भाषा शिकण्यासाठी काही साइट्स आहेत:
- [Exercism](https://exercism.org/tracks)
- [Codewars](http://www.codewars.com)
- [HackerEarth](https://www.hackerearth.com/for-developers/)
- [Scaler Topics (Java, C++)](https://www.scaler.com/topics/)
### तुमच्या कोडिंग साक्षात्कारासाठी
तुम्ही कोडिंग भागात तुम्हाला आराम असलेली भाषा वापरू शकता, परंतु मोठ्या कंपन्यांसाठी, ह्या ठिकाणी दिलेल्या भाषांमध्ये स्थिर निवड:
- C++
- Java
- Python
तुम्ही ह्या वापरू शकता, परंतु सुरुवातीत जाणून घ्या. त्यांमध्ये अवघडारे नुकसान असू शकतात:
- JavaScript
- Ruby
येथे माझं एक लेख आहे जेव्हा तुम्हाला साक्षात्कारासाठी भाषा निवडण्याबद्दल:
[साक्षात्कारासाठी एक भाषा निवडा](https://startupnextdoor.com/important-pick-one-language-for-the-coding-interview/).
हा माझा लेख ऑरिजिनल लेख आहे ज्याचा आधार माझं पोस्ट केला गेला होता: [साक्षात्कारासाठी प्रोग्रामिंग भाषा निवडणे](https://web.archive.org/web/20210516054124/http://blog.codingforinterviews.com/best-programming-language-jobs/)
तुम्हाला ह्या भाषांमध्ये खूप आराम असणे आणि संज्ञान असणे आवश्यक आहे.
निवडीसाठी अधिक माहिती वाचा:
- [तुमच्या कोडिंग साक्षात्कारासाठी योग्य भाषा निवडा](http://www.byte-by-byte.com/choose-the-right-language-for-your-coding-interview/)
[भाषा-विशिष्ट संसाधनांसाठी येथे पहा](programming-language-resources.md)