- persian translation

This commit is contained in:
develhopper 2021-11-04 16:50:20 +03:30
parent a9a8e792f4
commit 242dcc378d

View File

@ -121,7 +121,7 @@
- [به چه چیزهایی پرداخته نشده](#به-چه-چیزهایی-پرداخته-نشده) - [به چه چیزهایی پرداخته نشده](#به-چه-چیزهایی-پرداخته-نشده)
- [برنامه روزانه](#برنامه-روزانه) - [برنامه روزانه](#برنامه-روزانه)
- [تمرین مصاحبه کدنویسی](#تمیرن-مصاحبه-کدنویسی) - [تمرین مصاحبه کدنویسی](#تمیرن-مصاحبه-کدنویسی)
- [مشکلات و مسائل کدنویسی](#مشکلات-و-مسائل-کدنویسی) - [مسائل کدنویسی](#مسائل-کدنویسی)
### موضوعات مطالعه ### موضوعات مطالعه
@ -132,7 +132,7 @@
- [پشته](#پشته) - [پشته](#پشته)
- [صف](#صف) - [صف](#صف)
- [Hash table](#جدول-هش) - [Hash table](#جدول-هش)
- [علوم بیشتر](#علم-بیشتر) - [دانستنی های بیشتر](#دانستنی-های-بیشتر)
- [جستجوی باینری](#جستجوی-باینری) - [جستجوی باینری](#جستجوی-باینری)
- [Bitwise operations](#bitwise-operations) - [Bitwise operations](#bitwise-operations)
- [درخت ها](#درخت-ها) - [درخت ها](#درخت-ها)
@ -448,73 +448,69 @@ Choose one:
به خاطر داشته باشید که من زیاده روی کردم و کارت هایی دارم که همه چیز را از زبان اسمبلی و نکات بی اهمیت پایتون گرفته تا یادگیری ماشینی و آمار را پوشش می دهد. به خاطر داشته باشید که من زیاده روی کردم و کارت هایی دارم که همه چیز را از زبان اسمبلی و نکات بی اهمیت پایتون گرفته تا یادگیری ماشینی و آمار را پوشش می دهد.
که بسیار زیاد تر از حد مورد نیاز است. که بسیار زیاد تر از حد مورد نیاز است.
**Note on flashcards:** The first time you recognize you know the answer, don't mark it as known. You have to see the **یک نکته درباره فلش کارت ها:** به محض اینکه تشخیص دادید که جواب یک کارت را میدانید اون رو به عنوان میدانم علامت نزنید. قبل از آن باید کارت را ببینید و چندین بار جواب درست آن را مرور کنید. پس از چند بار تکرار مبحث مورد نظر عمیقاً در ذهن شما ثبت میشود.
same card and answer it several times correctly before you really know it. Repetition will put that knowledge deeper in
your brain.
An alternative to using my flashcard site is [Anki](http://ankisrs.net/), which has been recommended to me numerous times. میتوانید به عنوان جاگزین سایت فلش کارت من از سایت [Anki](http://ankisrs.net/), استفاده کنید که بارها به من توصیه شده است.
It uses a repetition system to help you remember. It's user-friendly, available on all platforms and has a cloud sync system. که از یک سیستم تکرار برای کمک به یادآوری استفاده می کند. کاربرپسند است، در همه پلتفرم ها موجود است و دارای سیستم همگام سازی ابری است.
It costs $25 on iOS but is free on other platforms. که تمامی نسخه های آن به غیر از نسخه IOS رایگان میباشیند.
My flashcard database in Anki format: https://ankiweb.net/shared/info/25173560 (thanks [@xiewenya](https://github.com/xiewenya)). دیتابیس فلش کارت من با فرمت Anki: https://ankiweb.net/shared/info/25173560 (thanks [@xiewenya](https://github.com/xiewenya)).
Some students have mentioned formatting issues with white space that can be fixed by doing the following: open deck, edit card, click cards, select the "styling" radio button, add the member "white-space: pre;" to the card class. بعضی از دانش آموزان یک به مشکل قالب بندی کارت ها برخوردند که با انجام موارد زیر قابل رفع است: open deck, edit card, click cards, select the "styling" radio button, add the member "white-space: pre;" to the card class.
### 3. Do Coding Interview Questions While You're Learning ### 3. تمرین ها و سوالات مصاحبه را حل کنید
THIS IS VERY IMPORTANT. این بسیار مهم است.
Start doing coding interview questions while you're learning data structures and algorithms. هنگامی که در حال یادگیری ساختمان داده و الگوریتم هستید، شروع به کدنویسی و حل تمرین های مصاحبه کنید.
You need to apply what you're learning to solving problems, or you'll forget. I made this mistake. حتما باید آنچه را که یاد میگیرید را به کار ببرید و تمرین کنید ، وگرنه فراموش خواهید کرد. همانطور که من این اشتباه رو مرتکب شدم.
Once you've learned a topic, and feel somewhat comfortable with it, for example, **linked lists**: وقتی موضوعی را یاد گرفتید و تا حدودی با آن احساس راحتی کردید, برای مثال **لیست های پیوندی**:
1. Open one of the [coding interview books](#interview-prep-books) (or coding problem websites, listed below) 1. [کتاب مصاحبه کدنویسی](#interview-prep-books) (یا یکی از سایت های معرفی شده در پایین) رو باز کنید
1. Do 2 or 3 questions regarding linked lists. 1. 2 یا 3 سوال در مورد لیست های پیوندی انجام دهید.
1. Move on to the next learning topic. 1. به سراغ مبحث بعدی بروید.
1. Later, go back and do another 2 or 3 linked list problems. 1. بعد ها دوباره به مبحث لیست های پیوندی برگردید و دو یا سه مسئله دیگر انجام دهید.
1. Do this with each new topic you learn. 1. این کار را با هر موضوع جدیدی که یاد می گیرید انجام دهید.
**Keep doing problems while you're learning all this stuff, not after.** **مسئله ها رو وقتی که دارید یاد میگیرید انجام دهید، نه بعد از آن**
You're not being hired for knowledge, but how you apply the knowledge. شمام به خاطر دانشتون استخدام نمیشوید، بلکه به خاطر مهارت استفاده از اون دانش استخدام میشوید.
There are many resources for this, listed below. Keep going. یه سری منابع پایین لیست شده.
### 4. Focus ### 4. تمرکز
There are a lot of distractions that can take up valuable time. Focus and concentration are hard. Turn on some music عوامل بیرونی زیادی وجود دارند که باعث حواس پرتی شما میشه. تمرکز و حواس جمع بودن خیلی سخته. برای تمرکز بهتر یک موسیقی بیکلام پخش کنید.
without lyrics and you'll be able to focus pretty well.
## What you won't see covered ## به چه چیزهایی پرداخته نشده
These are prevalent technologies but not part of this study plan: موارد زیر فناوری های رایج هستند اما بخشی از این طرح مطالعه نیستند:
- SQL - SQL
- Javascript - Javascript
- HTML, CSS, and other front-end technologies - HTML, CSS, and other front-end technologies
## The Daily Plan ## برنامه روزانه
This course goes over a lot of subjects. Each will probably take you a few days, or maybe even a week or more. It depends on your schedule. در این دوره به موضوعات زیادی پرداخته میشود. با توجه به زمان بندی شما ممکن است هر کدام از موضوعات چند روز و یا حتی یک هفته یا بیشتر زمان ببرد.
Each day, take the next subject in the list, watch some videos about that subject, and then write an implementation هر روز، موضوع بعدی را در لیست انتخاب کنید، چند ویدیو در مورد آن موضوع تماشا کنید و سپس آن را با زبان برنامه نویسی که انتخاب کردید پیاده سازی کنید
of that data structure or algorithm in the language you chose for this course.
You can see my code here: کد های من رو میتونید در اینجا ببینید:
- [C](https://github.com/jwasham/practice-c) - [C](https://github.com/jwasham/practice-c)
- [C++](https://github.com/jwasham/practice-cpp) - [C++](https://github.com/jwasham/practice-cpp)
- [Python](https://github.com/jwasham/practice-python) - [Python](https://github.com/jwasham/practice-python)
You don't need to memorize every algorithm. You just need to be able to understand it enough to be able to write your own implementation. شما نیازی به حفظ کردن هر الگوریتم ندارید. شما فقط باید بتوانید آنقدر آن را درک کنید تا بتوانید آنرا پیاده سازی کنید.
## Coding Question Practice ## تمرین مصاحبه کدنویسی
Why is this here? I'm not ready to interview. چرا این اینجاست؟ من برای مصاحبه آماده نیستم.
[Then go back and read this.](#3-do-coding-interview-questions-while-youre-learning) [پس این رو بخوانید.](#3-do-coding-interview-questions-while-youre-learning)
Why you need to practice doing programming problems: چرا باید انجام مسائل برنامه نویسی را تمرین کنید:
- Problem recognition, and where the right data structures and algorithms fit in - Problem recognition, and where the right data structures and algorithms fit in
- Gathering requirements for the problem - Gathering requirements for the problem
- Talking your way through the problem like you will in the interview - Talking your way through the problem like you will in the interview
@ -522,38 +518,37 @@ Why you need to practice doing programming problems:
- Coming up with time and space complexity for your solutions (see Big-O below) - Coming up with time and space complexity for your solutions (see Big-O below)
- Testing your solutions - Testing your solutions
There is a great intro for methodical, communicative problem solving in an interview. You'll get this from the programming یک مقدمه عالی برای حل مسئله روشمند و ارتباطی در مصاحبه وجود دارد:
interview books, too, but I found this outstanding:
[Algorithm design canvas](http://www.hiredintech.com/algorithm-design/) [Algorithm design canvas](http://www.hiredintech.com/algorithm-design/)
Write code on a whiteboard or paper, not a computer. Test with some sample inputs. Then type it and test it out on a computer. کد را روی تخته سفید یا کاغذ بنویسید، نه کامپیوتر. با چند ورودی نمونه تست کنید. سپس آن را تایپ کرده و روی کامپیوتر تست کنید.
If you don't have a whiteboard at home, pick up a large drawing pad from an art store. You can sit on the couch and practice. اگر در خانه تخته وایت برد ندارید، یک پد طراحی بزرگ از یک فروشگاه هنری بردارید. می توانید روی مبل بنشینید و تمرین کنید.
This is my "sofa whiteboard". I added the pen in the photo just for scale. If you use a pen, you'll wish you could erase. در پایین تصویر دفتر سفیدی که استفاده میکردم رو میبینید، خودکار رو برای بهتر شدن تصویر اضافه کردم. اگه با خودکار توی این دفتر بنویسید آرزو میکنید کاش میتوانستید پاک کنید.
Gets messy quick. **I use a pencil and eraser.** **از مداد و پاک کن استفاده کنید.**
![my sofa whiteboard](https://d3j2pkmjtin6ou.cloudfront.net/art_board_sm_2.jpg) ![my sofa whiteboard](https://d3j2pkmjtin6ou.cloudfront.net/art_board_sm_2.jpg)
**Coding question practice is not about memorizing answers to programming problems.** **نباید پاسخ سوالات رو به خاطر بسپارید باید مسائل رو یاد بگیرید.**
## Coding Problems ## مسائل برنامه نویسی
Don't forget your key coding interview books [here](#interview-prep-books). کتاب کلیدی مصاحبه کد نویسی رو فراموش نکنید [اینجا](#interview-prep-books).
Solving Problems: حل مسئله:
- [How to Find a Solution](https://www.topcoder.com/community/competitive-programming/tutorials/how-to-find-a-solution/) - [چگونگی پیدا کردن راه حل](https://www.topcoder.com/community/competitive-programming/tutorials/how-to-find-a-solution/)
- [How to Dissect a Topcoder Problem Statement](https://www.topcoder.com/community/competitive-programming/tutorials/how-to-dissect-a-topcoder-problem-statement/) - [نحوه تشریح یک مسئله](https://www.topcoder.com/community/competitive-programming/tutorials/how-to-dissect-a-topcoder-problem-statement/)
Coding Interview Question Videos: ویدئوهای مربوط به سوال های مصاحبه کدنویسی:
- [IDeserve (88 videos)](https://www.youtube.com/playlist?list=PLamzFoFxwoNjPfxzaWqs7cZGsPYy0x_gI) - [IDeserve (88 videos)](https://www.youtube.com/playlist?list=PLamzFoFxwoNjPfxzaWqs7cZGsPYy0x_gI)
- [Tushar Roy (5 playlists)](https://www.youtube.com/user/tusharroy2525/playlists?shelf_id=2&view=50&sort=dd) - [Tushar Roy (5 playlists)](https://www.youtube.com/user/tusharroy2525/playlists?shelf_id=2&view=50&sort=dd)
- Super for walkthroughs of problem solutions - فوق العاده برای بررسی راه حل های مشکل
- [Nick White - LeetCode Solutions (187 Videos)](https://www.youtube.com/playlist?list=PLU_sdQYzUj2keVENTP0a5rdykRSgg9Wp-) - [Nick White - LeetCode Solutions (187 Videos)](https://www.youtube.com/playlist?list=PLU_sdQYzUj2keVENTP0a5rdykRSgg9Wp-)
- Good explanations of solution and the code - توضیحات خوب راه حل و کد
- You can watch several in a short time - You can watch several in a short time
- [FisherCoder - LeetCode Solutions](https://youtube.com/FisherCoder) - [FisherCoder - LeetCode Solutions](https://youtube.com/FisherCoder)
Challenge sites: سایت های چالشی:
- [LeetCode](https://leetcode.com/) - [LeetCode](https://leetcode.com/)
- My favorite coding problem site. It's worth the subscription money for the 1-2 months you'll likely be preparing. - My favorite coding problem site. It's worth the subscription money for the 1-2 months you'll likely be preparing.
- See Nick White and FisherCoder Videos above for code walk-throughs. - See Nick White and FisherCoder Videos above for code walk-throughs.
@ -563,18 +558,18 @@ Challenge sites:
- [InterviewBit](https://www.interviewbit.com/) - [InterviewBit](https://www.interviewbit.com/)
- [Project Euler](https://projecteuler.net/) - [Project Euler](https://projecteuler.net/)
## Let's Get Started ## بیایید شروع کنیم
Alright, enough talk, let's learn! خوب، صحبت کافی است، بیایید یاد بگیریم!
But don't forget to do coding problems from above while you learn! اما فراموش نکنید که در حین یادگیری، مسائل کدنویسی را از بالا انجام دهید!
## Algorithmic complexity / Big-O / Asymptotic analysis ## پیچیدگی الگوریتمی / Big-O / تحلیل مجانبی
- Nothing to implement here, you're just watching videos and taking notes! Yay! - اینجا چیزی برای پیاده سازی نیست، شما فقط فیلم ها را تماشا می کنید و یادداشت برداری می کنید! آری
- There are a lot of videos here. Just watch enough until you understand it. You can always come back and review. - ویدیوهای زیادی در اینجا وجود دارد. تا حدی ویدیو ها رو ببینید تا مباحث رو متوجه بشید. میتوانید بعدا برای مرور برگردید.
- Don't worry if you don't understand all the math behind it. - اگر تمام ریاضیات پشت آن را متوجه نمیشوید نگران نباشید.
- You just need to understand how to express the complexity of an algorithm in terms of Big-O. - فقط باید بدانید که چگونه پیچیدگی یک الگوریتم را بر حسب Big-O بیان کنید..
- [ ] [Harvard CS50 - Asymptotic Notation (video)](https://www.youtube.com/watch?v=iOq5kSKqeR4) - [ ] [Harvard CS50 - Asymptotic Notation (video)](https://www.youtube.com/watch?v=iOq5kSKqeR4)
- [ ] [Big O Notations (general quick tutorial) (video)](https://www.youtube.com/watch?v=V6mKVRU1evU) - [ ] [Big O Notations (general quick tutorial) (video)](https://www.youtube.com/watch?v=V6mKVRU1evU)
- [ ] [Big O Notation (and Omega and Theta) - best mathematical explanation (video)](https://www.youtube.com/watch?v=ei-A_wy5Yxw&index=2&list=PL1BaGV1cIH4UhkL8a9bJGG356covJ76qN) - [ ] [Big O Notation (and Omega and Theta) - best mathematical explanation (video)](https://www.youtube.com/watch?v=ei-A_wy5Yxw&index=2&list=PL1BaGV1cIH4UhkL8a9bJGG356covJ76qN)
@ -588,21 +583,21 @@ But don't forget to do coding problems from above while you learn!
- [Computational Complexity: Section 2](https://www.topcoder.com/community/competitive-programming/tutorials/computational-complexity-section-2/) - [Computational Complexity: Section 2](https://www.topcoder.com/community/competitive-programming/tutorials/computational-complexity-section-2/)
- [ ] [Cheat sheet](http://bigocheatsheet.com/) - [ ] [Cheat sheet](http://bigocheatsheet.com/)
Well, that's about enough of that. بسیارخب، فکر کنم در همین حد کافی باشه.
When you go through "Cracking the Coding Interview", there is a chapter on this, and at the end there is a quiz to see وقتی دارید کتاب "Cracking the Coding Interview" رو مطالعه میکنید، یک فصل در این مورد در آنجا وجود داره.
if you can identify the runtime complexity of different algorithms. It's a super review and test. اگر بتوانید پیچیدگی زمان اجرای الگوریتم های مختلف رو شناسایی کنید. فرصت خوبیه برای بررسی و تست مسائل
## Data Structures ## ساختمان داده
- ### Arrays - ### آرایه ها
- [ ] About Arrays: - [ ] درمورد آرایه ها:
- [Arrays (video)](https://www.coursera.org/lecture/data-structures/arrays-OsBSF) - [آرایه ها (video)](https://www.coursera.org/lecture/data-structures/arrays-OsBSF)
- [UC Berkeley CS61B - Linear and Multi-Dim Arrays (video)](https://archive.org/details/ucberkeley_webcast_Wp8oiO_CZZE) (Start watching from 15m 32s) - [UC Berkeley CS61B - Linear and Multi-Dim Arrays (video)](https://archive.org/details/ucberkeley_webcast_Wp8oiO_CZZE) (Start watching from 15m 32s)
- [Dynamic Arrays (video)](https://www.coursera.org/lecture/data-structures/dynamic-arrays-EwbnV) - [آرایه پویا (video)](https://www.coursera.org/lecture/data-structures/dynamic-arrays-EwbnV)
- [Jagged Arrays (video)](https://www.youtube.com/watch?v=1jtrQqYpt7g) - [Jagged Arrays (video)](https://www.youtube.com/watch?v=1jtrQqYpt7g)
- [ ] Implement a vector (mutable array with automatic resizing): - [ ] پیاده سازی vector (mutable array with automatic resizing):
- [ ] Practice coding using arrays and pointers, and pointer math to jump to an index instead of using indexing. - [ ] تمرین آرایه ها و اشاره گر ها, استفاده از اشاره گر به جای ایندکس در آرایه.
- [ ] New raw data array with allocated memory - [ ] New raw data array with allocated memory
- can allocate int array under the hood, just not use its features - can allocate int array under the hood, just not use its features
- start with 16, or if starting number is greater, use power of 2 - 16, 32, 64, 128 - start with 16, or if starting number is greater, use power of 2 - 16, 32, 64, 128
@ -627,7 +622,7 @@ if you can identify the runtime complexity of different algorithms. It's a super
- contiguous in memory, so proximity helps performance - contiguous in memory, so proximity helps performance
- space needed = (array capacity, which is >= n) * size of item, but even if 2n, still O(n) - space needed = (array capacity, which is >= n) * size of item, but even if 2n, still O(n)
- ### Linked Lists - ### لیست های پیوندی
- [ ] Description: - [ ] Description:
- [ ] [Singly Linked Lists (video)](https://www.coursera.org/lecture/data-structures/singly-linked-lists-kHhgK) - [ ] [Singly Linked Lists (video)](https://www.coursera.org/lecture/data-structures/singly-linked-lists-kHhgK)
- [ ] [CS 61B - Linked Lists 1 (video)](https://archive.org/details/ucberkeley_webcast_htzJdKoEmO0) - [ ] [CS 61B - Linked Lists 1 (video)](https://archive.org/details/ucberkeley_webcast_htzJdKoEmO0)
@ -661,11 +656,11 @@ if you can identify the runtime complexity of different algorithms. It's a super
- [Description (video)](https://www.coursera.org/lecture/data-structures/doubly-linked-lists-jpGKD) - [Description (video)](https://www.coursera.org/lecture/data-structures/doubly-linked-lists-jpGKD)
- No need to implement - No need to implement
- ### Stack - ### پشته
- [ ] [Stacks (video)](https://www.coursera.org/lecture/data-structures/stacks-UdKzQ) - [ ] [Stacks (video)](https://www.coursera.org/lecture/data-structures/stacks-UdKzQ)
- [ ] Will not implement. Implementing with array is trivial - [ ] Will not implement. Implementing with array is trivial
- ### Queue - ### صف
- [ ] [Queue (video)](https://www.coursera.org/lecture/data-structures/queues-EShpq) - [ ] [Queue (video)](https://www.coursera.org/lecture/data-structures/queues-EShpq)
- [ ] [Circular buffer/FIFO](https://en.wikipedia.org/wiki/Circular_buffer) - [ ] [Circular buffer/FIFO](https://en.wikipedia.org/wiki/Circular_buffer)
- [ ] Implement using linked-list, with tail pointer: - [ ] Implement using linked-list, with tail pointer:
@ -684,7 +679,7 @@ if you can identify the runtime complexity of different algorithms. It's a super
- dequeue: O(1) (linked list and array) - dequeue: O(1) (linked list and array)
- empty: O(1) (linked list and array) - empty: O(1) (linked list and array)
- ### Hash table - ### جدول هش
- [ ] Videos: - [ ] Videos:
- [ ] [Hashing with Chaining (video)](https://www.youtube.com/watch?v=0M_kIqhwbFo&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=8) - [ ] [Hashing with Chaining (video)](https://www.youtube.com/watch?v=0M_kIqhwbFo&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=8)
- [ ] [Table Doubling, Karp-Rabin (video)](https://www.youtube.com/watch?v=BRO7mVIFt08&index=9&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - [ ] [Table Doubling, Karp-Rabin (video)](https://www.youtube.com/watch?v=BRO7mVIFt08&index=9&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb)
@ -709,9 +704,9 @@ if you can identify the runtime complexity of different algorithms. It's a super
- get(key) - get(key)
- remove(key) - remove(key)
## More Knowledge ## دانستنی های بیشتر
- ### Binary search - ### جستجوی دودویی
- [ ] [Binary Search (video)](https://www.youtube.com/watch?v=D5SrAga1pno) - [ ] [Binary Search (video)](https://www.youtube.com/watch?v=D5SrAga1pno)
- [ ] [Binary Search (video)](https://www.khanacademy.org/computing/computer-science/algorithms/binary-search/a/binary-search) - [ ] [Binary Search (video)](https://www.khanacademy.org/computing/computer-science/algorithms/binary-search/a/binary-search)
- [ ] [detail](https://www.topcoder.com/community/competitive-programming/tutorials/binary-search/) - [ ] [detail](https://www.topcoder.com/community/competitive-programming/tutorials/binary-search/)
@ -746,7 +741,7 @@ if you can identify the runtime complexity of different algorithms. It's a super
- [ ] Absolute value: - [ ] Absolute value:
- [Absolute Integer](https://bits.stephan-brumme.com/absInteger.html) - [Absolute Integer](https://bits.stephan-brumme.com/absInteger.html)
## Trees ## درخت
- ### Trees - Notes & Background - ### Trees - Notes & Background
- [ ] [Series: Trees (video)](https://www.coursera.org/lecture/data-structures/trees-95qda) - [ ] [Series: Trees (video)](https://www.coursera.org/lecture/data-structures/trees-95qda)